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

Функция executeoleobjectmethod позволяет вызывать методы OLE-объекта, доступные для вызова через обработчик сервера приложений, получать результат выполнения методов. Исключением методы не могут вызваться при помощи данной функции.

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

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

В значении параметра с именем "query" необходимо передать xml-документ, описывающий вызываемый метод и значения его параметров. Этот параметр можно передавать, обращаясь к url как методом GET, так и методом POST. Значение параметра должно быть закодировано по правилам представления url.

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

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

Корневой элемент xml-документа может содержать список узлов row, каждый из которых определяет набор параметров для вызова метода. Таким образом, при помощи одного вызова функции (одним обращением к url) можно вызывать один и тот же метод для набора объектов.

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

Для вызова методов экземпляра необходимо указывать значение неявного параметра с именем "ID". Значением этого параметра должен быть идентификатор объекта, для которого вызывается метод.

Пример
1  <execute class="TBachAbiturSt" method="AddComposition">
2    <row>
3      <ID>7927267</ID>
4      <AdmissionYear>6617171</AdmissionYear>
5      <CompYear>5639232</CompYear>
6      <Theme>742348353</Theme>
7    </row>
8  </execute>
  
Получить результат вызовов метода AddComposition класса TBachAbiturSt для объекта с идентификаторами (ID), равными 7927267 и с параметрами, заданными в элементе row.

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