Сложение 1С, вычитание 1С, умножение 1С, деление 1С

Возьмем простые математические действия — сложение 1С, вычитание 1С, умножение 1С, деление 1С. О них собственно и рассказывать-то нечего, но для калькулятора, который мы создаем, они нам нужны.


Для их выполнения нам нужно несколько чисел (как минимум два), а у нас поле для ввода числа – одно.

В учебных целях упростим задачу:

  • Пользователь нажал кнопку операции (сложение 1С, вычитание 1С, умножение 1С, деление 1С) – запомним первое число и операцию
  • Нажал равно – выполним операцию над введенным числом.

Пример программного кода:
[VIP_CONTENT]

ПЕРЕМ ПервоеЧисло;     //в начале модуля создали переменную
ПЕРЕМ Операция;

&НаКлиенте
Процедура ВыполнитьОперацию(ИмяОперации)

     //отберем только те операции, которые требуют нескольких чисел
     Если ИмяОперации = "Сложить" или ИмяОперации = "Вычесть" или ИмяОперации = "Умножить" или ИмяОперации = "Делить" Тогда
          ПервоеЧисло = Поле;     //запомним
          Операция = ИмяОперации;
          Поле = 0;//очистим поле для ввода второго числа

     ИначеЕсли ИмяОперации = "Равно" Тогда

          //Если пользователь сразу нажал равно
          //Мы не назначали переменной Операция начальное значение, значит изначально оно равно значению НЕОПРЕДЕЛЕНО
          Если Операция = Неопределено Тогда
               Возврат;
          КонецЕсли;

          //выполним запомненную операцию над запомненным первым числом и введенным в поле сейчас
          Если Операция = "Сложить" Тогда
               Результат = ПервоеЧисло + Поле;
          ИначеЕсли ИмяОперации = "Вычесть" Тогда
               Результат = ПервоеЧисло - Поле;
          ИначеЕсли ИмяОперации = "Умножить" Тогда
               Результат = ПервоеЧисло * Поле;
          ИначеЕсли ИмяОперации = "Делить" Тогда
               //при делении может быть ошибка – обрабатываем ее
               Если Поле = 0 Тогда
                    Сообщить("Ошибка – деление на ноль");     
                    Возврат;
               Иначе
                    Результат = ПервоеЧисло / Поле;
               КонецЕсли;
          КонецЕсли;
          Поле = Результат; //выводим результат

     КонецЕсли;
КонецПроцедуры

ПервоеЧисло = 0;     //в конце модуля – назначили начальное значение


[/VIP_CONTENT]

Результат:

  • Вводим 22
  • Нажимаем + (число и операция запомнились)
  • Вводим 33
  • Нажимаем = (выполняется 33+22)
  • 1С выводит 55.

Когда нам потребуется ввести дополнительные операции (кроме сложение 1С, вычитание 1С, умножение 1С, деление 1С), нужно будет в обработчик, перед «Если ИмяОперации = …» добавить новую ветку:

Было:
Если ИмяОперации = "Сложить" или ИмяОперации = "Вычесть" или ИмяОперации = "Умножить" или ИмяОперации = "Делить" Тогда

Стало:
Если ИмяОперации = "НужноеНаименование" Тогда
     //выполняем нужное действие
ИначеЕсли ИмяОперации = "Сложить" или ИмяОперации = "Вычесть" или ИмяОперации = "Умножить" или ИмяОперации = "Делить" Тогда