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

См. также

НДС 22% Учетные задачи ККМ Файловый обмен (TXT, XML, DBF), FTP 1С 8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет НДС Платные (руб)

Готовое обновление для конфигурации 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 , 1С:Управление производственным предприятием 1.3 обеспечивающее полную поддержку новой ставки НДС 22%. Для 1С:УТ 10.3 реализована поддержка печати чеков ККМ, а также Правила обмена с 1С:БП 3.0. Решение встраивает необходимые изменения в перечисления и документы, включая торговые операции и печатные формы.

12200 руб.

16.12.2025    7273    81    0    

75

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    186482    349    283    

411

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

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

58000 руб.

04.08.2015    184333    427    298    

438

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

22650 руб.

12.06.2017    157901    944    317    

475

SALE! 10%

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

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

38000 34200 руб.

15.12.2021    32554    242    61    

182

SALE! 10%

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

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

38000 34200 руб.

23.07.2020    66024    308    84    

247

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    61312    77    128    

75

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

Перенос данных из ЗУП 3 в ЗУП 3 | из ЗУП 3 в КА 2 | из ЗУП 3 в ERP | Оперативно обновляется при выходе новых релизов 1С | Готовые правила конвертации (КД 2) для перехода с "ЗУП 3" на "УП ред. 3" / "КА, ред. 2" / "ERP, ред. 2" |Переносится нормативно-справочная информация и документы с движениями

55200 руб.

11.01.2021    37184    33    56    

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