ExecuteCode
Метод ExecuteCode() выполянет указанный фрагмент кода на стороне сервера. Возможна передача параметра произвольного сериализуемого типа. Исполняемый код может возвращать значение произвольного сериализуемого типа.
Значение указанного в методе параметра доступно в коде через переменную "Параметр". Для возврата значения необходимо установить возвращаемое значение в переменную "Результат".
Параметры:
Имя | Тип | Описание |
---|---|---|
code | xs:string | Фрагмент кода, который необходимо выполнить. |
param | производный от brom:ValueBase | Значение параметра, которое можно получить в коде через переменную "Параметр". Опциональный. |
Возвращаемое значение:
Тип | Описание |
---|---|
производный от brom:ValueBase | Значение, возвращаемое как результат выполнения кода. Возвращается значение, которое было установлено в переменную "Результат". Если значение не устанавливалось, то возвращается "Неопределено". |
Примеры:
Пример №1. Выполнение простейшего фрагмента кода без передачи параметра и без возврата результата. Фрагмент кода находит заданный элемент номенклатуры и приводит его наименование к верхнему регистру.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header/>
<soap:Body>
<brom:ExecuteCode>
<brom:code>
ТекСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Бутылка");
ТекОбъект = ТекСсылка.ПолучитьОбъект();
ТекОбъект.Наименование = ВРег(ТекОбъект.Наименование);
ТекОбъект.Записать();
</brom:code>
<brom:param xsi:nil="true"/>
</brom:ExecuteCode>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:ExecuteCodeResponse xmlns:m="https://brom.itworks.group">
<m:return xsi:type="m:ValueNull" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</m:ExecuteCodeResponse>
</soap:Body>
</soap:Envelope>
Пример №2. Фрагмент кода возвращает прописное значение числа, которое передается в виде параметра.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header/>
<soap:Body>
<brom:ExecuteCode>
<brom:code>
Результат = ЧислоПрописью(Параметр);
</brom:code>
<brom:param xsi:type="brom:ValueNumber" Value="2465.47"/>
</brom:ExecuteCode>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:ExecuteCodeResponse xmlns:m="https://brom.itworks.group">
<m:return xsi:type="m:ValueString" Value="Две тысячи четыреста шестьдесят пять 47 " xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</m:ExecuteCodeResponse>
</soap:Body>
</soap:Envelope>
Пример №3. Фрагмент кода суммирует все числа в массиве, который передается в качестве параметра.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header/>
<soap:Body>
<brom:ExecuteCode>
<brom:code>
Результат = 0;
Для Каждого Значение Из Параметр Цикл
Результат = Результат + Значение;
КонецЦикла;
</brom:code>
<brom:param xsi:type="brom:ValueArray">
<brom:Item xsi:type="brom:ValueNumber" Value="176.45"/>
<brom:Item xsi:type="brom:ValueNumber" Value="55"/>
<brom:Item xsi:type="brom:ValueNumber" Value="12"/>
<brom:Item xsi:type="brom:ValueNumber" Value="67.89"/>
</brom:param>
</brom:ExecuteCode>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:ExecuteCodeResponse xmlns:m="https://brom.itworks.group">
<m:return xsi:type="m:ValueNumber" Value="311.34" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</m:ExecuteCodeResponse>
</soap:Body>
</soap:Envelope>
Пример №4. Фрагмент кода создает таблицу значений, заполняет ее значениями различного типа и возвразает в качестве результата.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header/>
<soap:Body>
<brom:ExecuteCode>
<brom:code>
ТаблЗнач = Новый ТаблицаЗначений();
ТаблЗнач.Колонки.Добавить("Кол1");
ТаблЗнач.Колонки.Добавить("Кол2");
Стр = ТаблЗнач.Добавить();
Стр.Кол1 = "Хорошие нововсти!";
Стр.Кол2 = ТекущаяДата();
Стр = ТаблЗнач.Добавить();
Стр.Кол1 = Справочники.Номенклатура.НайтиПоНаименованию("Бутылка");
Стр.Кол2 = Новый Структура("А, Б", "Значение А", "Значение Б");
Результат = ТаблЗнач;
</brom:code>
<brom:param xsi:nil="true"/>
</brom:ExecuteCode>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:ExecuteCodeResponse xmlns:m="https://brom.itworks.group">
<m:return xsi:type="m:ValueTable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<m:Column Name="Кол1"/>
<m:Column Name="Кол2"/>
<m:Row>
<m:Property xsi:type="m:ValueString" Name="Кол1" Value="Хорошие нововсти!"/>
<m:Property xsi:type="m:ValueDate" Name="Кол2" Value="2019-02-23T18:41:39"/>
</m:Row>
<m:Row>
<m:Property xsi:type="m:ValueObjectRef" Name="Кол1" Value="f93e112a-c83a-11e2-8026-0015e9b8c48d" Type="Справочник.Номенклатура"/>
<m:Property xsi:type="m:ValueStruct" Name="Кол2">
<m:Property xsi:type="m:ValueString" Name="А" Value="Значение А"/>
<m:Property xsi:type="m:ValueString" Name="Б" Value="Значение Б"/>
</m:Property>
</m:Row>
</m:return>
</m:ExecuteCodeResponse>
</soap:Body>
</soap:Envelope>
Пример №5. Фрагмент кода перемножает два числа, которые переданны в виде полей структуры.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header/>
<soap:Body>
<brom:ExecuteCode>
<brom:code>
Результат = Параметр.X * Параметр.Y;
</brom:code>
<brom:param xsi:type="brom:ValueStruct">
<brom:Property xsi:type="brom:ValueNumber" Name="X" Value="12"/>
<brom:Property xsi:type="brom:ValueNumber" Name="Y" Value="25"/>
</brom:param>
</brom:ExecuteCode>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<m:ExecuteCodeResponse xmlns:m="https://brom.itworks.group">
<m:return xsi:type="m:ValueNumber" Value="300" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</m:ExecuteCodeResponse>
</soap:Body>
</soap:Envelope>