Работа обработки "Универсальный обмен данными в формате XML" с планом обмена "Синхронизация данных через универсальный формат"

19.09.24

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Настройка работы штатного плана обмена «Синхронизация данных через универсальный формат» с правилами обмена. В качестве примера используется Бухгалтерия 3.0, но может также использоваться во всех конфигурациях, в которых есть «Синхронизация данных через универсальный формат».

 Работа обработки «Универсальный обмен данными в формате XML» с планом обмена «Синхронизация данных через универсальный формат»

Предположим, у нас есть правила обмена и внешняя обработка, которая запускается по расписанию и выгружает документы из базы источника, а в базе приемника аналогичная обработка по расписанию эти документы загружает. В этих обработках инициализируется запуск штатной обработки «Универсальный обмен данными в формате XML» и выполняется соответственно выгрузка (загрузка) за определенный период.

 Задача: доработать обмен так, чтобы выгружались (загружались) не все документы за период, а те лишь которые были изменены за последний, например, час. Для этого используем штатный план обмена «Синхронизация данных через универсальный формат». В нашем распоряжении конфигурация Бухгалтерия 3.0. Версия конвертации данных 2.1 (2.1.8.1).

Порядок настроек и доработок следующий:

  1. В обеих базах включаем константу «Синхронизация данных

 

 

  1. Создаем узлы в плане обмена. Делать это интерактивно руками сложно, поэтому создадим обработку. Код обработки в базе источника:

Процедура СоздатьУзлыНаСервере()

// Настраиваем текущий узел

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка КАК Узел

|ИЗ

| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат

|ГДЕ

| СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел = Истина";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Количество() > 0 Тогда

Выборка.Следующий();

ТекущийУзел = Выборка.Узел.ПолучитьОбъект();

Иначе;

ТекущийУзел = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.СоздатьУзел();

ТекущийУзел.ЭтотУзел = Истина;

КонецЕсли;

ТекущийУзел.Код = "БИ";

ТекущийУзел.Наименование = "База источник";

УстанваливаемРеквизиты(ТекущийУзел);

ТекущийУзел.Записать();

// Настраиваем узел 2-й базы

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка КАК Узел

|ИЗ

| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат

|ГДЕ

| СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел = ЛОЖЬ

| И СинхронизацияДанныхЧерезУниверсальныйФормат.Код = ""БП""";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Количество() > 0 Тогда

Выборка.Следующий();

ТекущийУзел = Выборка.Узел.ПолучитьОбъект();

Иначе;

ТекущийУзел = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.СоздатьУзел();

ТекущийУзел.ЭтотУзел = ЛОЖЬ;

ТекущийУзел.Код = "БП";

КонецЕсли;

ТекущийУзел.Наименование = "База приемник";

УстанваливаемРеквизиты(ТекущийУзел);

ТекущийУзел.Записать();

Сообщить("Готово");

КонецПроцедуры
&НаСервере

Процедура УстанваливаемРеквизиты(ТекущийУзел)

ТекущийУзел.ОтправлятьДокументыПокупкиПродажи = Истина;

ТекущийУзел.ОтправлятьСкладскиеДокументы = Истина;

ТекущийУзел.ОтправлятьАвансовыеОтчеты = Истина;

ТекущийУзел.РегистрироватьИзменения = Истина;

ТекущийУзел.ОтправлятьБанковскиеДокументы = Истина;

ТекущийУзел.ОтправлятьКассовыеДокументы = Истина;

ТекущийУзел.ОтправлятьВедомостиНаВыплатуЗарплаты = Истина;

ТекущийУзел.ОтправлятьРегламентированныеОтчеты = Истина;

ТекущийУзел.РегистрироватьИзменения = Истина;

КонецПроцедуры

Здесь соответственно Код БИ - База источник, БП – приемник. На стороне приемника код аналогичный. Только там «Этот узел» будет с кодом БП, а тот от которого приходят документы – БИ. Открываем план обмена Синхронизация данных через универсальный формат и видим результат.

 

 

Соответственно в базе источника «Этот узел» с кодом БИ, в базе приемника «Этот узел» - БП.

  1. Теперь, когда узлы созданы, у нас будут автоматически регистрироваться измененные или новые документы и мы можем их выгружать с помощью универсального обмена. Предположим, в базу приемника выгружаем счет на оплату. Открываем Счет на оплату и жмем кнопку «Записать». Этим мы инициализировали изменения. Открываем узел приемника и смотрим состав отправляемых данных.

 

 

Туда попал наш счет пока без номера отправленного сообщения. Запускаем обработку Универсальный обмен данными, загружаем правила обмена и выбираем узел приемника.

 

 

После выгрузки в составе отправляемых данных появится номер отправляемого сообщения. Когда этот счет будет загружен в базу приемника он также зарегистрируется, соответственно, на узле источника как вновь созданный документ. Примечание: в правилах обмена в правилах выгрузки данных (ПВД) должен быть указан объект выборки, способ отбора данных – «Стандартная выборка» и заполнено правило конвертации.

 

 

Код выгрузки данных такой:

Процедура ВыгрузитьДанные()

Обмен = Обработки.УниверсальныйОбменДаннымиXML.Создать();

Обмен.ИмяФайлаПравилОбмена = "C:\ПравилаОбмена_Источник_Приемник.xml";

Обмен.ИмяФайлаОбмена = "C:\Источник_Приемник.xml";

Обмен.ЗагрузитьПравилаОбмена();

КодУзла = "БП";

Для Каждого ГруппыОбъектов Из Обмен.ТаблицаПравилВыгрузки.Строки Цикл

Для Каждого ТекОбъект Из ГруппыОбъектов.Строки Цикл

ТекОбъект.СсылкаНаУзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду(КодУзла);

КонецЦикла;

КонецЦикла;

Обмен.ВыполнитьВыгрузку();

КонецПроцедуры

Код загрузки такой:

Процедура ЗагрузитьДанные()

Обмен = Обработки.УниверсальныйОбменДаннымиXML.Создать();

Обмен.ЗагружатьДанныеВРежимеОбмена = Истина;

Обмен.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;

Обмен.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления = Истина;

Обмен.ОптимизированнаяЗаписьОбъектов = Истина;

Обмен.ЗаписыватьРегистрыНаборамиЗаписей = Истина;

Обмен.РежимОбмена = "Загрузка";

Обмен.ИмяФайлаОбмена = "C:\Источник_Приемник.xml";

Обмен.ВыполнитьЗагрузку();

КонецПроцедуры
  1. Теперь задача в том, чтобы удачно загруженные документы удалялись бы из регистрации изменений баз источника и приемника. Для этого база приемник должна отправлять ответ об удачно загруженном, например, счете на оплату. Для отправки таких ответов создадим правила обмена, которые будут выполняться на стороне приемника. Правила конвертации для Счета на оплату:

 

 

Поскольку мы отправляем лишь ответ, что данный счет появился в базе, то никаких свойств объекта добавлять не надо. Мы передаем пустышку, чтобы убрать регистрацию. В настройках ставим флаг «Не создавать новый объект в приемнике, если он НЕ найден», а вот флаг «Не замещать существующие объекты…» должен быть снят, так как должен отработать обработчик «После загрузки». Открываем обработчик «После выгрузки» и добавляем код.

 

 

УзелБИ = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("БИ");

ПланыОбмена.УдалитьРегистрациюИзменений(УзелБИ, Источник);

Этот код снимает регистрацию в базе приемника. Далее в обработчик «После загрузки» добавляем код:

Если Не Параметры.Свойство("ПодтвержденияОзагрузке") Тогда

Параметры.Вставить("ПодтвержденияОзагрузке", Новый Массив);

КонецЕсли;

Параметры.ПодтвержденияОзагрузке.Добавить(Объект.Ссылка);

Параметры – это структура, которая доступна на всех этапах выгрузки и загрузки данных. В ней создаем массив и заполняем его ссылками на документы. После того как загрузка полностью отработает снимаем регистрацию в «После загрузки данных».

 

 

УзелБП = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("БП");

Если Параметры.Свойство("ПодтвержденияОзагрузке") Тогда

Для Каждого ПодтверждениеСсылка Из Параметры.ПодтвержденияОзагрузке Цикл

ПланыОбмена.УдалитьРегистрациюИзменений(УзелБП, ПодтверждениеСсылка);

КонецЦикла;

КонецЕсли;

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

На этом, в принципе, обмен готов. Стоит отметить, что если сопоставление данных идет по гуиду, то и в ответах с «пустышкой» о загрузке поиск тоже должен быть по гуиду. Если сопоставление по другим реквизитам, то и ответ должен отправляться по таким же реквизитам.

Еще одна важная деталь – это правила регистрации объектов на узле. Дело в том, что в штатном плане обмена «Синхронизация данных через универсальный формат» предусмотрена отправка многих типов документов. И они все по умолчанию будут попадать в регистрацию изменений. Если наша бизнес-логика подразумевает, например, отправку только счетов на оплату, то остальные типы документов будут «висеть» в изменениях вечно, пока администратор БД или пользователь не уберет их вручную. Чтобы ограничить список настраиваем правила регистрации объектов.

В конвертации добавляем новое правило регистрации.

 

 

Указываем конфигурацию и план обмена «Синхронизация данных через универсальный формат»

 

 

Перейти -> Правила регистрации объектов. Заполняем объект настройки и режим выгрузки документов.

 

 

В верхнем меню Правила регистрации -> Сохранить правила. Выбираем нашу регистрацию и выгружаем.

 

 

В базе источника выбираем узел базы приемника и загружаем правила регистрации.

 

 

Теперь обмен готов.

Универсальный обмен план обмена синхронизация данных XML обмен

См. также

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 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    166138    330    277    

373

Перенос данных 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 руб.

12.06.2017    141102    795    296    

415

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    23750    164    51    

121

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    36448    94    66    

88

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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

43889 39500 руб.

25.02.2015    171003    303    257    

378

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    50722    219    69    

178

Перенос данных 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 руб.

18.02.2016    186693    588    509    

525

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71985    180    150    

122
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1551 20.09.24 01:29 Сейчас в теме
А куда код вставлять?
Не плохо бы расширение сделать.
2. user811896 15 20.09.24 10:39 Сейчас в теме
Код выгрузки и загрузки вставляется во внешнюю обработку, которая работает по расписанию. В типовой Бухгалтерии есть штатный механизм внешних обработок.
3. demon_infernal 41 26.09.24 10:12 Сейчас в теме
Добрый день.
Передавать "пустышку" назад для снятия регистрации не обязательно. Достаточно передать пустое сообщение обмена (без тела).
Цитата с ИТС:
В результате чего из таблиц регистрации изменений будут удалены записи об изменениях для указанного узла плана обмена с номерами сообщений меньшими или равными переданному. Тем самым номер последнего полученного сообщения сыграл роль квитанции, подтверждающей факт доставки данных в сообщении обмена с данным номером.
user811896; codejs; +2 Ответить
Оставьте свое сообщение