Каталог решений - Функция MSSQL для вызова HTTP сервиса 1С

Функция MSSQL для вызова HTTP сервиса 1С

Функция MSSQL для вызова HTTP сервиса 1С

В наличии

MSSQL вызывает какие-либо действия в 1С или получает оттуда информацию. В сторонних таблицах при вставке/обновлении/удалении строк срабатывает триггер. Процедура триггера дёргает предлагаемую функцию. Вызывается HTTP сервис 1С, который обрабатывает информацию об изменениях сторонних таблиц, либо возвращает информацию для записи.

Категория:

Описание

Скрипт создания функции:

CREATE FUNCTION [dbo].[HTTPRequest] ( @postData nvarchar(max) )
RETURNS nvarchar(500)
AS
BEGIN
 
Declare @Object as Int;
Declare @ResponseText as nvarchar(500);
Declare @ResponseError as int;
DECLARE @source varchar(255), @desc varchar(255) 

Exec @ResponseError = sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT ;
IF @ResponseError <> 0 BEGIN
      EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
      RETURN '1 ' + @desc;
END

Exec @ResponseError = sp_OAMethod @Object, 'open', NULL, 'post',
    'http://localhost/<base>/hs/<rootUrl>/', 'false', '<user>', '<password>';
IF @ResponseError <> 0 BEGIN
      EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
      RETURN '2 ' + @desc;
END

EXEC @ResponseError = sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8';
IF @ResponseError <> 0 BEGIN
      EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
      RETURN '3 ' + @desc;
END

Exec @ResponseError = sp_OAMethod @Object, 'send', NULL, @postData;
IF @ResponseError <> 0 BEGIN
      EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
      RETURN '4 ' + @desc;
END

Exec @ResponseError = sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT;
IF @ResponseError <> 0 BEGIN
      EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
      RETURN '5 ' + @desc;
END

Exec sp_OADestroy @Object;
 
RETURN @ResponseText
 
END

В скрипте необходимо указать свои данные подключения к HTTP сервису: URL, логин и пароль. Параметр функции — строка которую необходимо передать сервису. Возвращает строку полученную от сервиса либо ошибку.

Для проверки можно выполнить следующие команды со своим параметром:
Declare @ResponseText as nvarchar(max);
SET @ResponseText = dbo.HTTPRequest(‘zzz=yyy’);
PRINT(@ResponseText);
 

Функционал тестировался в следующей конфигурации:

Microsoft Windows 2008 R2

Microsoft SQL Server Standard Edition (64-bit)   10.50.6529.0

1С:Предприятие 8.3 (8.3.9.2309)

Управление небольшой фирмой (1.2.3.71)

has been added to your cart:
Оформление заказа