Мельница данных  (20.07.2026)
Функция execute

Функция execute позволяет вызывать методы, доступные для вызова через обработчик сервера приложений, получать результат их выполнения.

При помощи одного вызова функции (одним обращением к url) можно вызывать один и тот же метод для набора объектов с одинаковыми или с различными значениями параметров.

Принципы передачи параметров для вызова метода, включая использование параметров типа "большой объект", описаны в статье Принципы передачи параметров функциям RESTful-service.

Допустимо использовать любые расширения вызова функции, в том числе не указывать расширение. Расширение повлияет на формат возвращаемого результата следующим образом:

  • .xml - для получения результата выполнения в формате XML;
  • .js/.json - для получения результата выполнения в формате JSON;
  • пустое расширение - результат выполнения будет возвращен в формате XML;
  • другие расширения - имеет смысл использовать в случаях, когда результатом выполнения метода является "большой объект" (blob, clob, "внешний файл") и его тип известен; это позволит получить результат в виде файла или структуры данных определенного типа (.xslt,.pdf, форматы изображений и т.п.); подробнее о получении результатов типа "большой объект": Особенности передачи возвращаемых значений типа "большой объект";
    если результат выполнения не удастся привести к формату, заданному расширением, результат будет возвращен в формате XML.

В значении параметра функции query необходимо передать XML-документ или объект JSON, описывающий вызываемый метод и значения его параметров.

При использовании для параметра queryформата XML корневой элемент документа-запроса должен иметь имя execute и должен иметь атрибуты:

  • class (обязательный) - имя класса, метод которого будет вызываться;
  • method (обязательный) - имя метода, который будет вызываться.

Корневой элемент XML-документа может содержать список узлов второго уровня (в примере - row, имена элементов могут быть любыми), каждый из которых определяет набор параметров для вызова метода. Каждый параметр метода должен быть представлен элементом третьего уровня с именем, совпадающим с именем параметра, и значением, равным значению параметра. Для вызова "методов экземпляра" необходимо указывать значение неявного параметра с именем "ID". Значением этого параметра должен быть идентификатор объекта, для которого вызывается метод. 

Пример
Пример запроса с параметром query в формате XML
01<execute class="TPerson" method="GetContactList">
02  <row>
03    <ID>931669</ID>
04    <ContactType>63478</ContactType>
05  </row>
06  <row>
07    <ID>76443</ID>
08    <ContactType>63478</ContactType>
09  </row>
10</execute>
Получить результат вызовов метода GetContactList класса TPerson для объектов с идентификаторами (ID), равными 931669 и 76443 и со значением параметра ContactType, равным 63478.

Пример ответа в формате XML:
1<data eof="1">
2  <row>
3    <Result>8-903-73-210-73</Result>
4  </row>
5  <row>
6    <Result>8-916-862-27-77; 8-916-862-2777</Result>
7  </row>
8</data>

При использовании для параметра queryформата JSON значение должно представлять собой объект JSON с полями:

  • class (обязательно) - имя класса, метод которого будет вызываться;
  • method (обязательно) - имя метода, который будет вызываться;
  • rows (необязательно) - массив объектов, каждый из которых представляет собой набор параметров для вызова метода;

Каждый объект массива rows должен иметь набор полей, соответствующих набору параметров вызова метода. Имя поля должно совпадать с именем параметра, а значение поля должно представлять собой значение параметра. 

Пример
Пример запроса с параметром query в формате JSON
01{
02  "class" = "TPerson",
03  "method" = "GetContactList",
04  "rows" = [
05    {
06      "ID" = 931669,
07      "ContactType" = 63478     
08    },
09    {
10      "ID" = 76443,
11      "ContactType" = 63478     
12    }
13  ]
14}
Пример ответа в формате JSON:
1{
2  "eof: 1,
3  "data": [
4    {"Result": "8-903-73-210-73"},
5    {"Result": "8-916-862-27-77; 8-916-862-2777"}
6  ]
7}

Если возвращаемый результат имеет домен класса "большой объект" (clob, clob, "внешний файл"), то возвращаемое значение может быто подвергнуто пост-обработке. Подробнее этот случай описан в разделе: Особенности передачи возвращаемых значений типа "большой объект"