Как организовать постоянный двусторонний обмен между 1С:УПП и 1С:ERP?

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

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

Анализ задачи и выбор технологии обмена

Перед тем как приступать к настройке, нам необходимо определиться с технологическим стеком. В сообществе разработчиков 1С существует два основных подхода к решению этой задачи, каждый из которых имеет свои плюсы и минусы.

1. Конвертация данных 2.0 (КД2) и обмен через XML

Это классический подход, основанный на правилах обмена (файлы XML), где мы жестко прописываем соответствие структуры источника структуре приемника.

2. Конвертация данных 3.0 (КД3) и формат EnterpriseData (XDTO)

Более современный подход, основанный на использовании универсального формата обмена (EnterpriseData). Система-источник выгружает данные в стандартизированный формат, а система-приемник их читает.

Проанализировав опыт внедрений, мы рекомендуем остановиться на EnterpriseData (КД3), так как ERP активно использует этот механизм, и он обеспечивает большую стабильность при обновлениях конфигураций.

Включение типовых механизмов обмена в УПП и ERP

Многие разработчики считают, что в УПП нет поддержки современного формата EnterpriseData, и начинают писать обмен «с нуля». Однако это не так. Рассмотрим, как активировать скрытые возможности типовой УПП.

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

  1. Откроем УПП в режиме «Предприятие».
  2. Нам необходимо включить константу, отвечающую за новый механизм синхронизации. В зависимости от релиза и настроек интерфейса она может называться ИспользоватьОбменДляКонфигурацийНа82 или ИспользоватьСинхронизациюДанных.
  3. Если в интерфейсе галочки нет, можно воспользоваться функцией «Все функции» (для управляемых форм) или «Операции — Константы» (для обычных форм) и установить значение Истина.
  4. После включения константы в меню Сервис появится пункт Обмен данными с продуктами на платформе 8.2.

В этом пункте меню используется план обмена СинхронизацияДанныхЧерезУниверсальныйФормат. Это именно то, что нам нужно для работы с КД3.

Настройка на стороне ERP:

  1. Переходим в раздел НСИ и администрирование — Синхронизация данных.
  2. Устанавливаем флаг Синхронизация данных.
  3. В настройках синхронизации создаем новую настройку и выбираем в списке Управление производственным предприятием, редакция 1.3 (EnterpriseData).

Проблема версий форматов EnterpriseData

При настройке мы столкнемся с техническим нюансом: разницей версий формата.

Механизм синхронизации 1С умеет договариваться. При начале обмена ERP узнает, что УПП «понимает» только версию 1.8, и будет формировать файлы выгрузки именно в этом формате. Однако здесь кроется проблема: новые объекты или реквизиты, появившиеся в ERP в версиях формата 1.9+, просто не попадут в файл выгрузки для УПП. Поэтому для полноценного двустороннего обмена нам неизбежно потребуется доработка правил регистрации и правил конвертации.

Доработка правил обмена (КД 3.0)

Поскольку УПП скорее всего сильно переписана («управленка остается в УПП навечно»), типовые правила обмена нам не подойдут в чистом виде. Рассмотрим алгоритм действий программиста:

1. Подготовка правил для УПП:

Нам необходимо выгрузить структуру метаданных УПП и загрузить её в конфигурацию «Конвертация данных 3.0». Там же мы создадим или загрузим типовые правила конвертации для формата EnterpriseData. Основная задача — добавить в правила маппинг (сопоставление) наших нетиповых реквизитов (например, КатегорияЗаказа, ДополнительныйМенеджер) с полями формата.

2. Расширение формата (XDTO):

Если в стандартном формате EnterpriseData нет подходящего поля для передачи ваших данных, формат нужно расширить. Мы создаем пакет XDTO расширения (AddIn), добавляем туда наши свойства. Важно понимать: этот пакет XDTO должен быть внедрен и в УПП, и в ERP.

3. Использование менеджера обмена:

В УПП обработка обмена через универсальный формат часто реализована через общие модули, такие как ОбменДаннымиXDTOСервер. Если обмен падает с ошибками при чтении файлов от новой ERP, возможно, потребуется обновление процедур чтения данных в УПП, взяв за основу более свежие версии Библиотеки Стандартных Подсистем (БСП), адаптированные под обычные формы.

Риски двустороннего обмена и архитектурные решения

Самая большая опасность, которую обсуждают эксперты — это коллизии данных при обмене в обе стороны.

Проблема UUID (ГУИД) и дублей

Если мы создадим элемент справочника «Номенклатура» в УПП и выгрузим в ERP, они синхронизируются. Но если пользователь одновременно создаст похожую номенклатуру в ERP, при обмене мы получим дубли. Типовой механизм поиска (по полям поиска, например, Артикул или Наименование) работает, но не дает 100% гарантии.

Рекомендация: Внедрение политики MDM (Master Data Management)

Чтобы избежать хаоса, мы должны жестко разграничить зоны ответственности систем:

Проблема "Задвоения оборотов" и циклические ссылки

При двустороннем обмене есть риск зацикливания: УПП выгрузила документ -> ERP загрузила, провела, зарегистрировала изменение -> ERP выгрузила обратно в УПП. Для борьбы с этим в планах обмена используются механизмы фильтрации (в КД3 это реализовано на уровне правил регистрации). Мы должны настроить правила регистрации так, чтобы документ регистрировался к отправке обратно только при изменении ключевых реквизитов, важных для системы-приемника, а не при любом перепроведении.

Использование веб-сервисов для ускорения

Автор темы отметил, что обмен через файлы (FTP/Каталог) может быть медленным. Рассмотрим альтернативу.

Для ускорения обмена можно настроить транспорт через Web-сервисы. В этом случае ERP напрямую обращается к веб-сервису, опубликованному на базе УПП (или наоборот). Это исключает задержки на чтение/запись файлов на диск. В ERP в настройках синхронизации выбираем тип подключения: «Подключение к другой программе через Интернет». Указываем адрес публикации базы УПП.

Однако помните, что для УПП публикация веб-сервисов требует корректной настройки веб-сервера (IIS/Apache) и наличия лицензий. Плюс, при большой нагрузке, прямой вызов веб-сервиса может замедлять работу пользователей в базе-источнике.

Вывод и план действий

  1. Активация: Включите в УПП константу ИспользоватьСинхронизациюДанных для доступа к плану обмена через универсальный формат.
  2. База: Настройте типовой обмен между УПП и ERP через EnterpriseData. Проверьте его работоспособность на справочниках.
  3. Адаптация: Используя «Конвертацию данных 3.0», доработайте правила под свою специфику. При необходимости расширьте пакет XDTO.
  4. Регламент: Определите Мастер-систему для каждого вида НСИ и запретите ввод данных в подчиненной системе. Это спасет от дублей.
  5. Транспорт: Для начала используйте обмен через сетевой каталог. Если скорость не устроит — переходите на веб-сервисы или, в случае сверхвысоких нагрузок, рассмотрите использование шины данных (например, RabbitMQ или 1С:Шина), хотя для связки всего двух баз это может быть избыточным.

Этот подход позволит сохранить работающую управленческую систему в УПП и корректно передавать данные для регламентированного учета в ERP, минимизируя риски рассинхронизации.

← На главную