Универсальный обмен данными между конфигурациями через http-сервис

16.05.23

Интеграция - Обмен между базами 1C

После https://infostart.ru/public/1563150/ я сам считал тему закрытой. Интересная идея, воплощенная в коде. Не более того. Очень узкая область применения. Однако выпал случай и пришлось к ней вернуться. В результате появились возможности передавать табличные части, документы и регистры сведений. И главное, подчиненные ссылки теперь раскручиваются самостоятельно, не требуя дополнительной логики. Код приобрел черты полезного законченного продукта. На мой взгляд, данный инструмент, конечно, не конкурирует с конвертацией, а слегка дополняет ее, используя http в качестве транспорта. Насколько он полезен в реальной жизни, конечно же, судить читателю. Я лишь предлагаю его Вашему вниманию. Код поставляется в виде расширения. Расширение создавалось и тестировалось на платформе 8.3.20.1613.

Скачать исходный код

Наименование Файл Версия Размер
Универсальный обмен данными между конфигурациями через http-сервис.:
.cfe 60,32Kb
34
.cfe 60,32Kb 34 Скачать

Какие задачи поставила передо мной жизнь?

Нужно было, чтобы дерево ссылок строилось самостоятельно, как в конвертации, если запросы для всех объектов участников обмена написаны. И чтобы ничего не надо было конфигурировать и сопоставлять, используя малопонятные настройки, в которых сам со временем начинаешь путаться. Информация о составе объектов в источнике должна была браться из плана обмена. А вся необходимая для обмена информация об объектах приемника должна была извлекаться из псевдонимов запроса, который служит для извлечения данных источника. 

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

Итак, перейду к описанию:

Для публикации я подготовил специальный вариант кода в виде расширения. Оно устанавливается практически на любую конфигурацию и содержит все необходимое для демонстрации возможностей решения.

Расширение содержит четыре подсистемы. УниверсальныйОбмен, ПодсистемаИсточник, ПодсистемаПриемник, ПодсистемаДемонстрация. Из названия ясно что для чего.

  • "УниверсальныйОбмен" служит исключительно для размещения в интерфейсе обработки.
  • "ПодсистемаПриемник" содержит http-сервис, который в рабочем варианте должен быть помещен в конфигурацию приемника (и естественно опубликован).
  • "ПодсистемаИсточник" содержит обработку, формирующую пакеты для обмена, регистр сведений для хранения данных авторизации и регистр "Параметры и запросы обмена". В последнем хранятся запросы для обмена между объектами источника и приемника.
  • "ПодсистемаДемонстрация" содержит план обмена и объекты для теста и демострации. В демонстрационный план уже включен демо-объекты источники.

В модуле сервиса располагается универсальный раскладчик данных в объекты приемника. Он умеет раскладывать данные в достаточно широких пределах. Справочники, документы и регистры сведений. Главное - поставлять ему правильные пакеты данных в определенном формате. Примеры пакетов приведены в комментариях модуля сервиса. Для пользователя же будут полезны примеры, приведенные в демонстрационных запросах объектов. Т.к. здесь главное - написать правильный запрос.

 

!!! Значения перечислений тоже можно передавать. Только передается не ссылка, а порядок. Подразумевается, что на стороне приемника есть точно такое же перечисление, с тем же порядком значений.

Пример из запроса: "ДокументПриемник.ПеречислениеИсточник.Порядок КАК ПеречислениеПриемник".

 

Обработка собственно и занимается формированием этих пакетов на основании запросов, которые создал пользователь. Алгоритм содержит элементы рекурсии. Что несет в себе известные плюсы и минусы.

Настройка в коде вынесена в отдельную область и сводится к указанию имени регистра, предназначенного для хранения данных авторизации. Данные авторизации по умолчанию сохраняются в регистре расширения "ХранилищеАвторизации". Он сделан по аналогии со стандартным регистром "БезопасноеХранилищеДанных" и в рабочем варианте (при необходимости), легко может быть им заменен. Имя этого регистра также можно поменять в коде. В модуле обработки есть функция:

 

 

Вот, собственно, и все настройки.

 

Зарегистрируйте расширение.

!!! После регистрации расширения не забудьте снять галку "Безопасный режим". Иначе конструктор HTTPСоединение будет давать ошибку.

 

 

В регистр параметров настроек обмена объекты из плана попадают автоматически. Все объекты, участвующие в обмене надо в состав плана включить. Иначе обмен не пойдет. При этом авторегистрацию объекта включать не обязательно, если предполагается только обмен по ссылкам.

 

 

На практике система оказалась особенно полезной при использовании в базах РИБ, где конфигурация обновляется релизами, периодически. Один раз установив и опубликовав универсальный сервис-раскладчик в приемнике получаем возможно управлять логикой обмена исключительно на стороне источника. Т.к. манипуляции с конфигурацией и данными приемника в случае РИБ обычно существенно затруднены и регламентированы.

 

Обработка доступна в подсистеме "Универсальный обмен".

 

 

Запустив конфигуратор от имени администратора, опубликуйте http-сервис расширения (не забудьте про галку).

 

 

Можете увидеть такую картинку:

 

 

Тогда надо пойти и дать указанному пользователю ОС все права на указанный каталог. 

 

Не буду рассказывать, как настроить IIS. Это многократно описано в других местах. Наверное, здесь не место для таких описаний. Будем считать, что публикация сделана. Идем дальше.

Данные узла обмена должны быть уже заполнены из демо-данных. Поля понадобятся при настройке на реальный узел. Изначально нужно ввести только параметры авторизации для сервиса в базе приемника. В режиме демонстрации - это наша база.

У меня результат выглядит примерно так:

 

 

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

 

 

!!! Предлагаемое расширение позволяет продемонстрировать работу на одной конфигурации. Часть объектов имитирует объекты источника, а остальные - объекты приемника. По названию объектов легко разобраться - кто есть кто. Все объекты находятся в одной конфигурации, но передача данных из источников в приемники осуществляется через http-сервис.

Для демонстрации нужно указать параметры авторизации своей же базы.

Пока работаем (пробуем, смотрим) то на вкладке "Отладка", в демонстрационных целях, доступен и список объекта приемника.

Нижний динамический список на следующей картинке это чистая демонстрация. В него ничего пытаться вносить не надо!!! Он нужен для того, чтобы по его содержанию можно сразу оценить результат обмена. В реальных условиях (для добавленных объектов, которых нет в базе источнике) он на форме не появится.

 

Для демонстрации результата обмена данные в объектах источниках придется заполнить самостоятельно. Регистрируются изменения всех объектов в плане расширения автоматически. Работаем на вкладке "Отладка". Она предназначена для проверки написанных запросов. Вносим необходимые данные в источник и нажимаем "Выполнить обмен". Или кнопку "Обменяться", если нужно проверить обмен по выбранной строке объекта. При выборе объекта обмена в левой таблице, в правой на форме программно строится соответствующий динамический список. 

 

 

В правой части экрана выведен протокол обмена. Можно посмотреть, что и в какой последовательности обменивалось. Также, в отдельном окне, можно посмотреть текст оправленного пакета.

В нижней части формы, в поле "Результат", можно увидеть диагностику в случае неудачной попытки обмена:

 

 

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

 

Общие правила написания запросов: 

1. Во всех запросах используется параметр &СписокСсылок.

!!! Не надо думать о том, как его задать. Он заполняется автоматически. Просто он должен быть в тексте запроса. Программа сама его задаст в зависимости от обстоятельств. Для регистров это будет узел обмена. Для документов и справочников это либо список ссылок на измененные объекты (для обмена по зарегистрированным изменениям), либо список подчиненных ссылок объектов данного типа для передаваемых изменений.

2. Обязательно должно передаваться поле "Ссылка". Через него в приемник будет передаваться УИД. Программа ждет, что оно есть. Если нет - выдаст в диагностику ошибку.

3. Нужно указывать в запросе поля "ПометкаУдаления" и "Проведен", если Вы хотите получить в приемнике документ с проведением или установить пометку удаления в нужное положение.

4. В начале пакета запросов можно использовать сколь угодно сложные конструкции для предварительных расчетов. Мне случалось делать запросы по движениям документа с целью вычисления значения для передачи в реквизит приемника. В качестве данных для передачи программа будет использовать последние запросы из пакета. Для них правило такое: Сначала идет шапка документа или справочника. Затем табличные части. Программа сама отсчитает от конца нужное количество запросов определив, что есть что, следуя указанному правилу.

5. Наименование реквизитов, табличных частей и объектов в базе приемнике будут взяты из псевдонимов запроса, написанного для соответствующего объекта источника. Поэтому везде должны использоваться псевдонимы с именами из приемника. Это касается и самого объекта. Например, не надо в запросе писать "Справочник.СправочникИсточник КАК СправочникИсточник". Надо - "Справочник.СправочникИсточник КАК СправочникПриемник". Так и пишем "СправочникПриемник.СсылочныйРеквизитИсточник КАК СсылочныйРеквизитПриемник". Это будет означать передать реквизит источника "СсылочныйРеквизитИсточник" в реквизит приемника "СсылочныйРеквизитПриемник". А когда пишем "Справочник.СправочникИсточник.ТабличнаяЧастьИсточник КАК ТабличнаяЧастьПриемник" - программа будет знать какие табличные части обмениваются данными.

Это надо учитывать при написании запросов. Надеюсь, понятно объяснил. 

 

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

 

 

Для публикации создавалась специальная редакция программы. Поэтому, если вдруг встретится баг или неадекватная диагностика ситуации в поле результата - просьба сразу сообщать. Это будет оперативно исправлено. Заранее благодарен за такую помощь.

Код модуля сервиса и код модуля обработки документированы. Функции подробно описаны.

Это все. Надеюсь, публикация будет кому-то полезна и найдутся те, кто ее оценит. Всего доброго. Удачи.

обмен план обмена интеграция синхронизация справочник сервис http web расширение импорт регистр сведений документ конвертация РИБ

См. также

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    136364    732    291    

393

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Перенос данных 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 руб.

04.08.2015    161195    359    269    

350

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    47386    202    64    

163

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Перенос данных 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

45650 руб.

31.10.2014    233073    90    328    

299

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 руб.

15.04.2019    69409    166    141    

112

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20978    137    38    

96

Перенос данных из УПП 1.3 в ERP 2.5, КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 руб.

24.06.2020    61607    44    27    

75

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 руб.

03.12.2020    34758    83    58    

81
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. alex_4x 86 22.05.23 16:18 Сейчас в теме
Правильно я понимаю, что есть аналог регистра Соответствие объектов для обмена ?
Прикрепленные файлы:
2. user1374747 210 22.05.23 20:00 Сейчас в теме
Вечер добрый. Думаю, нет. Ссылки синхронизируются по УИД. Возможности сопрячь элементы с разными УИД нет.
Я стремился к балансу между простотой и функциональностью. Ничего лишнего и все, что нужно.
Для практического применения в моих случаях такой компоновки оказалось более чем достаточно. Это регистр и эту возможность счел излишним. Может, был не прав и кто то считает по другому. Лично я - сторонник минимализма в выборе средств. Мне кажется, что лишнее не менее вредно, чем недостача.
6. Dimanchik00 08.08.23 09:45 Сейчас в теме
(2) Я правильно понимаю, что в таком случае сделать обмен с преобразованием на стороне источника в другой тип (например документ) не получится ?
7. user1374747 210 08.08.23 10:51 Сейчас в теме
(6)
День добрый.
Правильно.

Т.е. сервис-раскладчик, конечно, отработает любой пакет. Но обработку придется изменить. Для создания соответствующего пакета.
В данной обработке старался максимально упростить работу со стандартным случаем. И вывести настройки на уровень близкий к пользователю.
В сложных случаях над обработкой создания пакетов придется потрудиться. Увы.
3. elena_veza 25.05.23 14:19 Сейчас в теме
При тесте возникла проблема при обращении в http сервису. Выдавал ошибка 404.
Помогло исправление корневого url
было - Universal_Exchange
стало - universalExchange
4. user1374747 210 25.05.23 23:22 Сейчас в теме
Спасибо за информацию. Немного странно. Но на выходных обязательно посмотрю.
5. пользователь 01.08.23 22:16
Сообщение было скрыто модератором.
...
Оставьте свое сообщение