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

16.05.23

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Универсальный обмен данными между конфигурациями через http-сервис.:
.cfe 60,32Kb
43
43 Скачать (8 SM) Купить за 3 950 руб.

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

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

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

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

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

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

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

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

 

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

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

 

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

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

 

 

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

 

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

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

 

 

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

 

 

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

 

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

 

 

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

 

 

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

 

 

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

 

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

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

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

 

 

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

 

 

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

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

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

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

 

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

 

 

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

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

 

 

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

 

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

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

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

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

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

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

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

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

 

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

 

 

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

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

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

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

См. также

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141466    798    297    

419

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    166426    332    277    

373

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    23985    169    51    

127

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    51186    228    69    

185

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    36568    94    66    

89

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171155    303    257    

378

SALE! 15%

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186854    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80633    312    250    

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

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