WEB-приложение Сведение отчетности ((раздел целиком))

WEB-приложение Сведение отчетности- Взаимодействие с внешними веб-сервисами (раздел целиком) (26.07.2026) | (одним файлом)

Взаимодействие с внешними веб-сервисами
Сервис предоставляет возможность реализации взаимодействия с внешними веб-сервисами. Функционал основан на механизме пользовательских приложений. Пример подобной реализации представлен в поставляемом пользовательском приложении "WebServicesIntegrationCROC" в виде VBScript. Перед началом использования данного примера, необходимо задать/исправить значения следующих параметров (Файл -> Сервис -> Параметры, раздел "Первичные/сводные отчеты"): URL взаимодействия с внешним веб-сервисом: КРОК Каталог для сохранения присоединенных документов при взаимодействии с внешним веб-сервисом: КРОК. По умолчанию установлено "Присоединенные документы". Тип присоединенных документов при взаимодействии с внешним веб-сервисом: КРОК. При отсутствии значения (по умолчанию) тип присоединяемого документа будет определяться по расширению файла (на момент взаимодействия, соответствующие типы уже должны существовать в системе). При заданном значении параметра - все файлы, присоединяемые в процессе взаимодействия, будут добавляться с использованием указанного типа. В данном примере, реализована NTML аутентификация для взаимодействия с внешним веб-сервисом (т.е. по пользователям входящим в домен). В штатной поставке данного пользовательского приложения, для аутентификации передаются реквизиты пользователя, из под которого работает сервер приложений. Но т.к. штатным режимом работы сервера приложений является работа в виде сервиса Windows (а по умолчанию, все сервисы работают под локальной учетной записью "NT AUTHORITY\SYSTEM", т.е. не являются членами домена), то для успешной аутентификации необходимо выбрать 1 из следующих вариантов: Изменить учетную запись, под которой работает сервис, на учетную запись пользователя домена (Сервисы -> "DataMill Application Server" -> Свойства -> Вкладка "Вход" -> Группа "Использовать для входа"). Этот вариант является более предпочтительным. Задать логин/пароль требуемого доменного пользователя (от имени которого будет проходить аутентификация) в константах VBScript пользовательского приложения: CLogin (формат - Домен\Пользователь) и CPassword.

1. Модуль для взаимодействия по протоколу http(s)
Модуль для взаимодействия по протоколам http(s) представлен в поставляемом пользовательском приложении "ParusAppServerProvider", в виде COM-сервера. В вышеуказанном модуле реализован COM-объект с ProgID ParusAppServerProvider.Provider, реализующий следующий интерфейс:
    01IProvider = interface(IDispatch)
    02    ['{5CC36760-E292-44AA-B542-A32865828DAC}']
    03    function CreateTempFileName(const Extension: WideString): WideString; safecall;
    04    function CreateBinaryData: IDispatch; safecall;
    05    function DownloadData(const Host: WideString; const Url: WideString;
    06      const UserName: WideString; const Password: WideString; NegotiateAuth: WordBool;
    07      PostData: OleVariant; const PostContentType: WideString; PostDataIsBinary: WordBool;
    08      CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): IDispatch; safecall;
    09    function JSONEscape(const Value: WideString): WideString; safecall;
    10    function JSONUnEscape(const Value: WideString): WideString; safecall;
    11  end;
Функция CreateTempFileName возвращает сгенерированное системой имя временного файла с расширением, переданным в параметре Extension. Функция CreateBinaryData создает пустой объект, реализующий интерфейс IBinaryData (описан ниже). Функция DownloadData осуществляет обращение к указанному ресурсу по протоколу http (https), и возвращает ответ сервера в виде объекта, реализующего интерфейс IBinaryData. Параметр Host определяет http-сервер, параметр Url - Url, к которому будет происходить обращение. Параметры UserName и Password определяют имя пользователя и пароль, если http-сервер требует авторизовать пользователя. Параметр NegotiateAuth устанавливает режим аутентификации. (Basic или Negotiate (NTLM)). Параметры PostData, PostContentType и PostDataIsBinary определяют содержимое тела POST-запроса (если не определено, функция отправит GET-запрос). Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой Параметр CanCache позволяет использовать локальный кеш http-ответов. Параметр NewSession требует принудительного создания новой сессии при вызове функции. Параметр TimeOut определяет максимальное время ожидания ответа в секундах. Функция JSONEscape возвращает строку в формате JSON, полученую путем конвертации переданной строки в формат JSON. Функция JSONUnEscape возвращает строку, полученную путем расконвертации переданной JSON строки. Интерфейс IBinaryData представляет набор двоичных данных:
    01IBinaryData = interface(IDispatch)
    02    ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}']
    03    procedure Append(const Src: OleVariant);
    04    procedure Load(const Src: OleVariant);
    05    procedure Save(const Dst: OleVariant);
    06    function Size: Cardinal;
    07    procedure AppendData(Data: Pointer; DataSize: Cardinal);
    08    procedure SetData(Data: Pointer; DataSize: Cardinal);
    09    procedure GetData(Data: Pointer);
    10    function ToString(Encoding: WideString): WideString;
    11    procedure FromString(Data: OleVariant);
    12    procedure AppendString(Data: OleVariant);
    13    function ToBase64: WideString;
    14    procedure FromBase64(Data: OleVariant);
    15  end;
Процедура Load загружает двоичные данные из переданного источника. Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Процедура Append добавляет двоичные данные из переданного источника. Источник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Процедура Save сохраняет двоичные данные в переданный приемник. Приемник может быть Объектом, реализующим интерфейс IStream Объектом, реализующим интерфейс ISequentialStream Строкой, содержащей имя файла Функция ToString переводит данные в строку. Байты, содержашиеся в объекте, будут рассматриваться как содержащие строку в кодировке, заданной параметром Encoding. По умолчанию используется кодировка UTF-8 Процедура FromString загружает данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8 Процедура AppendString добавляет данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8 Функция ToBase64 возвращает строку, полученную путем кодирования в формат Base64, данных содержащихся в объекте Процедура FromBase64 загружает данные из строки, переданной в параметре Data, раскодировав ее из формата Base64