Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения. Примечание: В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение. Данный оператор не поддерживается при работе через COM-соединение. В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS.
Синтаксис
Выполнить(<Строка>)Полное описание, параметры и ограничения
Выполнить (Execute)
Выполнить (Execute)
Синтаксис:
Выполнить(<Строка>)
Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.
Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.
Примечание:
В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение.
Данный оператор не поддерживается при работе через COM-соединение.
В режимах запуска мобильного приложения оператор не поддерживается в операционной системе iOS.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Выполнить: исполнить только заранее известный собственный фрагмент
Для понимания оператора используем фиксированный текст учебного расчёта. Никакие пользовательские строки, файлы, сообщения или данные конфигурации не превращаются в код.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.
Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().
Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.
Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.
Процедура ВыполнитьПример() Экспорт
Количество = 3;
Цена = 250;
ОбычнаяСумма = Количество * Цена;
Сообщить(ОбычнаяСумма = 750);
ТекстУрока = "УчебноеКоличество = 3; УчебнаяЦена = 250; УчебнаяСумма = УчебноеКоличество * УчебнаяЦена; Сообщить(УчебнаяСумма = 750);";
Выполнить(ТекстУрока);
Сообщить("Фиксированный учебный фрагмент завершён");
КонецПроцедурыРазбор по шагам
Сначала выполнить обычный прямой расчёт 3×250 и проверить 750.
ТекстУрока — один литерал, написанный в собственном модуле. В нём полностью определены количество и цена; нет недостающих переменных или внешних объектов.
Выполнить интерпретирует содержимое строки как BSL. Поэтому Сообщить внутри неё — отдельный исполняемый оператор, а не вывод самого текста строки.
После завершения фрагмента программа продолжает выполнение и показывает последнюю строку.
В обычной задаче предпочтительна прямая функция: этот пример нужен для знакомства с синтаксисом, а не для построения обработчика произвольного кода.
Как проверить результат
Две проверки Истина, затем Фиксированный учебный фрагмент завершён. Рабочих данных, файлов и сетевых действий нет.
Поменяйте внутри собственного литерала количество на 5 и ожидаемую сумму на 1250: динамическая проверка останется Истина. Отдельный прямой расчёт по-прежнему равен 750.
Ожидаемый результат
Оператор объяснён безопасным по составу фиксированным фрагментом и сопоставлен с обычным вычислением.
На что обратить внимание
Никогда не подставляйте сюда текст, полученный из формы, HTTP, файла или чужой базы: это исполнение кода с правами текущего контекста, не песочница.
Запускайте пример только на сервере отдельной учебной базы. В веб-клиенте оператор не поддерживается; через COM-соединение тоже. На мобильной iOS он не поддерживается.
Синтаксическая ошибка внутри строки проявится при Выполнить. Статическая проверка внешнего модуля не заменяет проверку содержимого литерала.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.