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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 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    194959    479    310    

474

SALE! 10%

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

27633 руб.

12.06.2017    165218    1009    329    

493

SALE! 10%

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

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    37212    270    68    

204

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

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

20740 руб.

25.09.2016    93450    429    268    

356

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

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

27572 руб.

18.02.2016    209411    686    559    

566

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

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

85400 руб.

05.10.2022    14598    17    8    

17

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД НДС 22% Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Специализированные обработки для загрузки кассовых чеков в локальных базах: 1С:БП 3.0, 1С:УНФ 3.0, 1С:Розница 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием 2.5 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС или сканера штрихкодов и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах', 'Поступление денежных документов' и 'Реестры выплат самозанятым'. Обработка будет работать на любой версии конфигурации управляемые формы: базовой, ПРОФ или КОРП. Для загрузки чеков самозанятых достаточно только ссылки на чек.

6990 руб.

19.08.2020    83891    383    93    

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