Выполнить
Оператор Выполнить позволяет выполнить любой кусок кода, переданный ему как параметр:
Процедура Команда1(Команда)
в = Неопределено;
Код = "а = 1; б = 2; в = а + б";
Выполнить(Код);
Сообщить(в); // 3
КонецПроцедуры
В данном примере переменная «в» будет равна 3.
Код, который передается параметром оператору Выполнить не может содержать объявление переменных и процедуры и функции. По сути весь код и так будет выполняться в процедуре.
Процедура Команда1(Команда)
в = Неопределено;
Код = "Перем а; а = 1; б = 2;";
Выполнить(Код); //ошибка
Сообщить(в);
КонецПроцедуры
В данном примере будет ошибка:
{(1,1)}: Объявления переменных должны быть расположены в начале модуля, процедуры или функции {Обработка.Обработка1.Форма.Форма.Форма(6)}: Выполнить(Код);
Процедура Команда1(Команда)
в = Неопределено;
Код = "а = 1; б = 2; Процедура Сумма(а, б) в = а + б; КонецПроцедуры";
Выполнить(Код); //ошибка
Сообщить(в);
КонецПроцедуры
Здесь тоже будет ошибка:
{(1,15)}: Ожидается последовательность операторов
{Обработка.Обработка1.Форма.Форма.Форма(6)}: Выполнить(Код);
Параметр оператору Выполнить можно передавать без скобок, можно напрямую, без промежуточной переменной «Код»:
Процедура Команда1(Команда)
в = Неопределено;
Выполнить "а = 1; б = 2; в = а + б;";
Сообщить(в);
КонецПроцедуры
Вычислить
Функция Вычислить используется для вычисления арифметических, логических и операций конкатекации строк:
Процедура Команда1(Команда)
а = 1;
б = 2;
Сумма = Вычислить("а+б");
Результат = Вычислить("а>б");
Строка = Вычислить("Строка(а) + Строка(б)");
Сообщить(Сумма); //3
Сообщить(Результат); //Ложь
Сообщить(Строка); // "12", это строка, а не число
КонецПроцедуры
Код в функции Вычислить не может содержать несколько операторов:
Процедура Команда1(Команда)
а = 1;
б = 2;
Результат = Вычислить("а+б; а>б;"); //ошибка
Сообщить(Результат);
КонецПроцедуры
Отличие Выполнить от Вычислить
* Выполнить - это оператор встроенного языка, Вычислить - функция
* В Выполнить можно использовать несколько операторов, в Вычислить только одно выражение
* Выполнить работает как процедура. Вычислить возвращает результат выполнения, работает как функция.
Смотрите также:
Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программное решение для сдачи и подготовки к экзаменам Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки