Вопрос о том, как упростить создание выражений, которые впоследствии передаются в функцию Выполнить(), является актуальным для многих разработчиков 1С. Создание полноценного конструктора «с нуля» — трудоемкая задача, поэтому мы разберем готовые подходы и инструменты, которые позволяют автоматизировать этот процесс.
Одним из самых эффективных решений для выполнения произвольного кода является использование специализированных «Консолей кода». В отличие от стандартных инструментов, они предоставляют интерфейс, максимально приближенный к Конфигуратору.
Рассмотрим преимущества использования таких решений:
Выполнить().Если вы хотите встроить конструктор выражений непосредственно в свое прикладное решение, обратите внимание на возможности, заложенные в БСП. В частности, начиная с версии 3.1.6, в БСП встроен специализированный редактор формул.
Почему стоит использовать готовый функционал БСП:
Выполнить().Еще один путь — задействовать объекты системы компоновки данных (СКД). Хотя СКД предназначена для отчетов, ее механизмы выбора выражений можно использовать и в прикладных задачах.
Рассмотрим, как это работает на практике:
Мы можем использовать объект КомпоновщикНастроек или стандартные элементы управления, такие как ПолеКомпоновкиДанных. Эти элементы позволяют:
При использовании Выполнить() всегда помните о рисках. Если выражение формируется пользователем или берется из внешнего источника, обязательно внедряйте этап валидации.
Никогда не разрешайте исполнение произвольного кода без проверки на наличие «опасных» конструкций. Вы можете реализовать простую проверку:
// Пример базовой проверки строки перед выполнением
Функция БезопасноеВыполнение(Выражение)
ЗапрещенныеСлова = Новый Массив;
ЗапрещенныеСлова.Добавить(\"Удалить\");
ЗапрещенныеСлова.Добавить(\"Записать\");
Для Каждого Слово Из ЗапрещенныеСлова Цикл
Если СтрНайти(Врег(Выражение), Врег(Слово)) > 0 Тогда
ВызватьИсключение \"Обнаружен опасный код!\";
КонецЕсли;
КонецЦикла;
Выполнить(Выражение);
КонецФункции
Таким образом, для решения задачи по созданию визуального конструктора рекомендуем либо интегрировать готовые решения из БСП, либо использовать существующие сторонние консоли кода, которые предоставляют необходимый интерфейс и инструменты для удобной работы с языком программирования 1С в режиме предприятия.