Данный механизм обмена выбран из-за скорости взаимодействия web-сервиса 1С и лени описывать XDTO-пакеты под структуры данных. Принцип состоит в том, что для web-сервиса в качестве входного параметра будет текст запроса, а выходного - результирующая таблица значений. При этом параметры запроса имеют возможность создаваться на стороне базы источника, т.е. там, где выполняется запрос.
Реализован механизм с помощью расширения конфигурации. Расширение должно быть установлено на базе источнике и на базе приемнике, даже если нужно только получить данные.
Для наглядности функционала реализована консоль. Пример на скрине. Весь ее код:
&НаСервере
Процедура СформироватьНаСервере()
МассивПараметров = Новый Массив;
Для Каждого Строка Из ПараметрыЗапроса Цикл
МассивПараметров.Добавить(Новый Структура("Имя, Значение, Поиск", Строка.Имя, Строка.Значение, Строка.Поиск));
КонецЦикла;
ТЗ = WS_Service.ЗапросВыполнить("http://" + Сервер + "/" + База + "/ws/WS_Service?wsdl", "http://localhost/WS_Service", "WS_Service", "WS_ServiceSoap", Пользователь, Пароль, ТекстЗапроса, МассивПараметров);
РезультатЗапроса.Очистить();
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);
Построитель.ВыводитьЗаголовокОтчета = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ОформитьМакет();
Построитель.Вывести(РезультатЗапроса);
КонецПроцедуры
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
Весь функционал построен на одной функции WS_Service.ЗапросВыполнить, возвращающей таблицу значений. Параметры функции:
- ПутьКWebСервису - имеет вид http://МойСервер/МояБаза/ws/WS_Service?wsdl
- URIПространстваИмен - http://localhost/WS_Service
- ИмяWebСервиса - WS_Service
- ТочкаПодключенияWebСервиса - WS_ServiceSoap
- Пользователь, Пароль - учетная запись пользователя
- ТекстЗапроса - текст запроса для базы источника данных.
- ПараметрыЗапроса массив структур. (не обязателен).
Настройки подключения зависят от настроек публикации базы данных. Приведены настройки по умолчанию.
Структуры в массиве параметра ПараметрыЗапроса должны содержать обязательные ключи:
- "Имя" - имя параметра запроса (обязателен)
- "Значение" - значение параметра запроса (обязателен)
- "Поиск" - алгоритм определения значения параметра (не обязателен), при этом ключ "Значение" может быть использован в алгоритме. Ключ "Поиск" в основном используется для получения элементов ссылочного типа (НайтиПоКоду, ПолучитьСылку и пр..)
В примере реализован вариант получения всех элементов справочника Статьи затрат из 1С:Бухгалтерия, родители которых содержат "Аренда" в наименовании.
Состав расширения:
Тестировалось на платформе 3.8.22.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.147.30