Выполнение фрагментов кода
Объект класса "БромКлиент" позволяет удаленно выполнять фрагменты кода на встроенном языке 1С:Предприятие. Фрагмент кода может опционально принимать на вход параметр произвольного сериализуемого типа. Также фрагмент кода может возвращать результат в виде значения произвольного сериализуемого типа.
Для выполнения фрагмента кода необходимо вызвать метод "Выполнить()" объекта "БромКлиент". Первым параметром требуется передать текст исполняемого кода, а вторым, если требуется, значение параметра, которое будет доступно в исполняемом коде в переменной "Параметр". Для передачи полученного значения в качестве результата выполнения установите данное значение в переменную "Результат". Значение в переменной "Результат" на момент окончания исполнения фрагмента кода будет передано на клиент как результат функции "Выполнить()".
// Данный код не принимает параметров и не возвращает результата
клиент.Выполнить(@"
ТекСсылка = Справочники.Номенклатура.НайтиПоНаименованию(""Бутылка"");
ТекОбъект = ТекСсылка.ПолучитьОбъект();
ТекОбъект.Наименование = ВРег(ТекОбъект.Наименование);
ТекОбъект.Записать();
");
// Данный код принимает на вход число и возвращает строку
string числоПрописью = клиент.Выполнить(@"Результат = ЧислоПрописью(Параметр);", 2465);
Console.WriteLine(числоПрописью);
// Данный код принимает на вход массив чисел и возвращаем число
decimal суммаЧиселВМассиве = клиент.Выполнить(@"
Результат = 0;
Для Каждого Значение Из Параметр Цикл
Результат = Результат + Значение;
КонецЦикла;
", new double[] { 45, 67, 12.56, 11.9 });
Console.WriteLine(суммаЧиселВМассиве);
// Данный код не принимает параметров, но возвращает таблицу значений
ТаблицаЗначений таблица = клиент.Выполнить(@"
ТаблЗнач = Новый ТаблицаЗначений();
ТаблЗнач.Колонки.Добавить(""Кол1"");
ТаблЗнач.Колонки.Добавить(""Кол2"");
Стр = ТаблЗнач.Добавить();
Стр.Кол1 = ""Хорошие нововсти!"";
Стр.Кол2 = ТекущаяДата();
Стр = ТаблЗнач.Добавить();
Стр.Кол1 = Справочники.Номенклатура.НайтиПоНаименованию(""Телевизор"");
Стр.Кол2 = Новый Структура(""А, Б"", ""Значение А"", ""Значение Б"");
Результат = ТаблЗнач;
");
foreach (dynamic стр in таблица) {
Console.WriteLine("Кол1: {0}; Кол2: {1}", стр.Кол1, стр.Кол2);
}
Вместо ключевых переменных "Параметр" и "Результат" могут использоваться их англоязычные аналоги "Parameter" и "Result".
ВАЖНО!
Метод "Выполнить()" вызывает одноименный метод встроенного языка 1С. По этой причине на фрагменты кода распространяются те же ограничения что и на стороне 1С. В частности, код не может содержать объявляния функций и процедур, не может использовать ключевон слово "Возврат" и пр..