Метод 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>