Работа обработки "Универсальный обмен данными в формате 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    165095    384    275    

369

Перенос данных 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). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    23116    159    48    

117

SALE! 10%

Перенос данных 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    140135    782    295    

409

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    24371    23    1    

25

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    71499    180    148    

120

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194155    149    242    

279

SALE! 10%

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

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

50722 45650 руб.

31.10.2014    236018    99    333    

304

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    36012    90    62    

86
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1545 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 Ответить
Оставьте свое сообщение