Возьмем простые математические действия — сложение 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С), нужно будет в обработчик, перед «Если ИмяОперации = …» добавить новую ветку:
Было:
Если ИмяОперации = "Сложить" или ИмяОперации = "Вычесть" или ИмяОперации = "Умножить" или ИмяОперации = "Делить" Тогда
Стало:
Если ИмяОперации = "НужноеНаименование" Тогда
//выполняем нужное действие
ИначеЕсли ИмяОперации = "Сложить" или ИмяОперации = "Вычесть" или ИмяОперации = "Умножить" или ИмяОперации = "Делить" Тогда