У меня был вот такой код, где выполнялось по выбору пользователя N обработок.
И в конце нужно было выдать пользователю подтверждение, какие обработки выполнены.
Сначала я написал код так, но это было неправильно:
Сообщение = "";
Для Каждого Эл Из МассивОбрабатываемыхЭлементов
Если НужнаОбработка1 Тогда
Сообщение = Сообщение + "Обработка 1" + Символы.ПС;
ВыполнитьОбработку1();
КонецЕсли;
Если НужнаОбработка2 Тогда
Сообщение = Сообщение + "Обработка 2" + Символы.ПС;
ВыполнитьОбработку2();
КонецЕсли;
...
Если НужнаОбработкаN Тогда
Сообщение = Сообщение + "Обработка N" + Символы.ПС;
ВыполнитьОбработкуN();
КонецЕсли;
КонецЦикла;
Предупреждение("Над " + МассивОбрабатываемыхЭлементов.Количество() + " объектов выполнены обработки:" + Символы.ПС + Сообщение);
Потому что список выполненных обработок повторялся столько раз, сколько в массиве элементов.
Я решил не переписывать код, а вставить в начало цикла строку:
Сообщение = "";
Как вариант, облагородить код можно было бы и по другому:
Добавлять в сообщение строки только на первом прогоне цикла.
Сформировать строку сообщения отдельно от цикла.
Но тогда бы это было более громоздким, вот в чем парадокс. А как бы вы решили эту задачу?
Только не предлагайте все условия и ссылки на обработки загнать в массив. Это очевидное решение, но читается тоже так себе, потому что в 1с нет ссылки на функцию, есть только метод EVAL, выполняющий строку кода. Хотя вариант, конечно.
Journal information