Выполнить

Встроенный язык · Execute

Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения. Примечание: В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение. Данный оператор не поддерживается при работе через COM-соединение. В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS.

Синтаксис

Выполнить(<Строка>)
Полное описание, параметры и ограничения

Выполнить (Execute)

Выполнить (Execute)

Синтаксис:
Выполнить(<Строка>)

Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.

Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.

Примечание:
В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение.

Данный оператор не поддерживается при работе через COM-соединение.

В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Выполнить: исполнить только заранее известный собственный фрагмент

Для понимания оператора используем фиксированный текст учебного расчёта. Никакие пользовательские строки, файлы, сообщения или данные конфигурации не превращаются в код.

Где и как запускать

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

Процедура ВыполнитьПример() Экспорт
    Количество = 3;
    Цена = 250;
    ОбычнаяСумма = Количество * Цена;
    Сообщить(ОбычнаяСумма = 750);
    ТекстУрока = "УчебноеКоличество = 3; УчебнаяЦена = 250; УчебнаяСумма = УчебноеКоличество * УчебнаяЦена; Сообщить(УчебнаяСумма = 750);";
    Выполнить(ТекстУрока);
    Сообщить("Фиксированный учебный фрагмент завершён");
КонецПроцедуры

Разбор по шагам

  1. Сначала выполнить обычный прямой расчёт 3×250 и проверить 750.

  2. ТекстУрока — один литерал, написанный в собственном модуле. В нём полностью определены количество и цена; нет недостающих переменных или внешних объектов.

  3. Выполнить интерпретирует содержимое строки как BSL. Поэтому Сообщить внутри неё — отдельный исполняемый оператор, а не вывод самого текста строки.

  4. После завершения фрагмента программа продолжает выполнение и показывает последнюю строку.

  5. В обычной задаче предпочтительна прямая функция: этот пример нужен для знакомства с синтаксисом, а не для построения обработчика произвольного кода.

Как проверить результат

  1. Две проверки Истина, затем Фиксированный учебный фрагмент завершён. Рабочих данных, файлов и сетевых действий нет.

  2. Поменяйте внутри собственного литерала количество на 5 и ожидаемую сумму на 1250: динамическая проверка останется Истина. Отдельный прямой расчёт по-прежнему равен 750.

Ожидаемый результат

Оператор объяснён безопасным по составу фиксированным фрагментом и сопоставлен с обычным вычислением.

На что обратить внимание

  1. Никогда не подставляйте сюда текст, полученный из формы, HTTP, файла или чужой базы: это исполнение кода с правами текущего контекста, не песочница.

  2. Запускайте пример только на сервере отдельной учебной базы. В веб-клиенте оператор не поддерживается; через COM-соединение тоже. На мобильной iOS он не поддерживается.

  3. Синтаксическая ошибка внутри строки проявится при Выполнить. Статическая проверка внешнего модуля не заменяет проверку содержимого литерала.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.