Много написано о HTTP-сервисах в 1с. Например - //infostart.ru/public/255881/ . Или даже в 4-х частях //infostart.ru/public/842751/ .
По мотивам данных публикаций возникла идея разработать подсистему обмена с сильно ограниченными правами доступа к базе вопрошающего субъекта и использованием различных вариантов маршрутизации .
Подсистема выполнена в виде расширения и тестировалась на платформе 1С:Предприятие 8.3 (8.3.16.1148) . Используется БСП 3.1.2.306
- Схема работы подсистемы:
- Запрос ( через HTTP сервис, COM соединение и прочее) передается в обработку маршрутизации. Запрос содержит Токен (обязательно) и структуру параметров ( опционально).
- Определяется сценарий выполнения запроса (по полученному токену) , на основании которого выполняется маршрутизация или в дополнительную обработку , или в соответствующую процедуру сценария, или в общий модуль, или в обработку конфигурации.
- Осуществляется обработка полученных данных и формируется ответ.
- Как установить и пример использования.
Требования к конфигурации – режим совместимости не ниже «Версия 8.3.14».
Использование подсистемы БСП версии не ниже 3.1.2.306
Если планируется маршрутизация с использованием дополнительной обработки - включите опцию «использование внешних печатных форм, отчетов и обработок».
-
- Добавляем в конфигурацию расширение.
- Добавляем в конфигурацию расширение.
-
- Добавляем профиль групп доступа . Привязываем к профилю группу. Добавляем пользователя и включаем его в эту группу.
- Добавляем профиль групп доступа . Привязываем к профилю группу. Добавляем пользователя и включаем его в эту группу.
Прав у этого пользователя — внешнее соединение, использование обработки маршрутизации, использование дополнительных отчетов и обработок. И в данном примере — использование добавленного HTTP сервиса.
-
- Добавляем внешнюю обработку «Пример1».
- Добавляем настройку. Привязываем к ней внешнюю обработку.
-
- Для общего модуля или обработки в сценарии указываем соответствующее название
В демонстрационной конфигурации используются
- extInt_ПримерОбщийМодуль - для общего модуля расширения
- extInt_ПримерОбработка - для обработки расширения
-
- Публикуем HTTP сервис.
- В обработке Пример1 есть возможность протестировать выполнение запроса.
Необходимо указать токен выбранного варианта сценария и параметры подключения.
- Принятые соглашения.
- Идентификация сценария осуществляется по передаваемому токену.
- Структура данных формируемых обработкой обслуживания для ответа обеспечивается обработкой обслуживания.
- Используемые при маршрутизации дополнительные обработки обслуживания ( в модуле объекта ) , общие модули расширения и обработки расширения ( в модуле менеджера) должны иметь процедуру
Процедура ПолучитьДанные(СтруктураОТборов, СтруктураДополнительныхПараметров, Ответ ) экспорт
Где Ответ – структура, в которую помещаются результаты обработки
3.4 Примечание. Поскольку права у вопрошающего сильно урезаны, получение данных необходимо выполнять в привилегированном режиме.
Возможен и непосредственный вызов обработки маршрутизации ( в том числе и для COM соединения).
ОбработчикЗапроса = обработки.extIntegrationWithExternalSystems.Создать();
РезультатОбработки = ОбработчикЗапроса.exec(Токен,СтруктураОТборов,СтруктураДополнительныхПараметров, истина);
Что дает данная подсистема:
- Возможность «на лету» изменять алгоритмы обработки данных. Внесли необходимые изменения - обновили внешнюю обработку .
- При вызове сервиса используется пользователь с ограниченными правами.