Как настроить синхронизацию справочника Физические лица между ЗУП 3.1 и УТ 10.3

Программист 1С v8.3 (Обычные формы) Управленческий учет
← На главную

Синхронизация данных между современными конфигурациями на управляемых формах, такими как ЗУП 3.1, и классическими решениями на обычных формах, как УТ 10.3, является нетривиальной задачей. Основная сложность заключается в разности архитектур хранения данных и зачастую в невозможности вносить изменения в одну из информационных баз. Рассмотрим подробно, как организовать перенос справочника ФизическиеЛица, сохранив конфигурацию источника на поддержке.

Способ 1: Использование правил конвертации (КД 2.1) и универсального обмена

Самый надежный и гибкий метод — это создание правил обмена в конфигурации «Конвертация данных 2.1». Проанализируем этот процесс по шагам. Во-первых, нам необходимо выгрузить описания структур обеих баз (метаданные) с помощью обработки MD83Exp.epf. Поскольку УТ 10.3 работает на обычных формах, а ЗУП 3.1 на управляемых, убедитесь, что используете соответствующие версии обработки выгрузки метаданных.

После загрузки структур в КД 2.1 мы создаем «Правила обмена данными». В них настраивается ПКО (Правило конвертации объектов) для справочника ФизическиеЛица. Разберем важные нюансы настройки полей:

  1. Поиск объекта: Крайне не рекомендуется настраивать поиск только по наименованию. Рассмотрим ситуацию с полными тезками — в этом случае данные могут затереться. Лучшим решением будет установка поиска по ИНН и СНИЛС. Если же базы изначально синхронизированы, можно использовать поиск по GUID (уникальному идентификатору).
  2. Контактная информация: Выясним причину, по которой адреса могут не переноситься. В ЗУП 3.1 адреса хранятся в формате JSON (согласно стандартам БСП), в то время как в УТ 10.3 это могут быть табличные части или регистр сведений. Для корректного переноса в правилах конвертации (ПКС) для полей адреса придется написать обработчик «При загрузке» на стороне УТ 10.3, который будет разбирать строку JSON и распределять данные по полям Управления торговлей.

Для выполнения обмена используем обработку УниверсальныйОбменДаннымиXML.epf. На стороне ЗУП 3.1 она запускается в режиме управляемого приложения, а на стороне УТ 10.3 — как обычная внешняя обработка.

Способ 2: Автоматизация выгрузки из ЗУП 3.1 без изменения конфигурации

Если ЗУП 3.1 изменять нельзя, но требуется регулярный (например, ежедневный) обмен, воспользуемся механизмом Дополнительных отчетов и обработок. Посмотрим, как это реализовать программно. Мы можем создать внешнюю обработку, которая будет содержать внутри себя макет с правилами обмена и программный код для вызова универсального механизма выгрузки.

Пример кода для программного запуска выгрузки внутри внешней обработки:


// Инициализация обработки универсального обмена
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиВФорматеXML.Создать();
ОбработкаОбмена.ИмяФайлаПравил = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаВыгрузки = "C:\Exchange\Data.xml";
ОбработкаОбмена.РежимОбмена = "Выгрузка";

// Загрузка правил из файла или макета
ОбработкаОбмена.ЗагрузитьПравилаОбмена();

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

Эту обработку мы регистрируем в справочнике Дополнительные отчеты и обработки в ЗУП 3.1. БСП (Библиотека стандартных подсистем) позволяет назначить расписание для таких обработок. Таким образом, конфигурация остается типовой, а выгрузка происходит в автоматическом режиме по расписанию сервера 1С.

Способ 3: Настройка прямого подключения через COM-соединение

Если мы хотим, чтобы УТ 10.3 сама «забирала» данные из ЗУП 3.1, можно воспользоваться механизмом COM-соединения. В типовой обработке универсального обмена в УТ 10.3 есть вкладка «Подключение и выгрузка данных на узле-приемнике». Проанализируем ситуацию: в этом режиме УТ 10.3 выступает инициатором, подключается к базе ЗУП 3.1 через COMConnector, вызывает там правила и считывает данные напрямую в свою память.

Важный технический момент: При использовании COM-соединения часто возникает проблема разрядности. Если сервер 1С 64-битный, а клиент УТ 10.3 32-битный, необходимо настроить Component Services (Службы компонентов) в Windows для регистрации 32-битного comcntcfg.xml. Это позволит избежать ошибки «Класс не зарегистрирован».

Способ 4: Использование HTTP-сервисов и OData

Рассмотрим более современный вариант, который не требует изменения ЗУП 3.1. В ЗУП 3.1 можно включить стандартный OData интерфейс. Это позволит базе УТ 10.3 обращаться к справочнику ФизическиеЛица через обычные HTTP-запросы.

Алгоритм действий будет следующим:

  1. В ЗУП 3.1 публикуем базу на веб-сервере (Apache или IIS) и разрешаем доступ к данным через OData.
  2. В УТ 10.3 создаем внешнюю обработку, которая с помощью объекта HTTPСоединение получает список физических лиц в формате JSON или XML.
  3. Программно создаем или обновляем элементы в справочнике УТ 10.3.

Пример фрагмента кода в УТ 10.3 для получения данных через OData:


Соединение = Новый HTTPСоединение("server_address", , "user", "password");
Запрос = Новый HTTPЗапрос("/zup_base/odata/standard.odata/Catalog_ФизическиеЛица?$format=json");
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
    // Разбор JSON и создание объектов
    // Используем ЧтениеJSON или парсинг строки
КонецЕсли;

Рекомендации по синхронизации существующих данных

Перед тем как запустить автоматический обмен, проанализируем текущее состояние баз. Если в обеих программах уже заведены физические лица вручную, неизбежно возникнут дубли. Чтобы этого избежать, выполните предварительное сопоставление (мэппинг):

Резюмируем: Для разовых переносов лучше всего подходят правила КД 2.1 с ручным запуском. Для постоянной автоматизации без изменения ЗУП 3.1 оптимально использовать внешнюю обработку в ЗУП, запускаемую по расписанию БСП, которая будет выгружать файл, а УТ 10.3 своим регламентным заданием будет этот файл загружать. Это гарантирует стабильность работы и независимость от обновлений конфигураций.

← На главную