Как реализовать обмен в формате EnterpriseData в конфигурации 1С:ЗУП 2.5

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

При интеграции устаревших систем на платформе 1С:Предприятие 8.2 (или работающих в режиме совместимости с версией 8.2) с современными решениями на базе «Библиотеки стандартных подсистем» (БСП) возникает необходимость использовать единый универсальный формат EnterpriseData. Типовая конфигурация «1С:Зарплата и Управление Персоналом 2.5» изначально разрабатывалась для работы в обычном приложении и не содержит механизмов универсального формата. Разберем, с какими сложностями сопряжен перенос модулей БСП в ЗУП 2.5 и как правильно решить задачу обмена данными.

Почему нельзя просто перенести модуль обмена из БСП

Попытка скопировать один или два общих модуля (например, отвечающих за сериализацию XDTO или обработку формата EnterpriseData) из актуальных версий БСП в ЗУП 2.5 не приведет к успеху. Проанализируем ключевые причины архитектурных ограничений:

  1. Глубокая связанность подсистем БСП: Механизм синхронизации данных в универсальном формате жестко завязан на базовый функционал библиотеки. Он требует наличия подсистем ОбщегоНазначения, ДлительныеОперации, Пользователи, ОчередьСообщений и других. Перенос одного модуля потянет за собой цепочку из десятков общих модулей, планов обмена, констант и регистров сведений.
  2. Требования к версии платформы и режиму совместимости: Подсистема синхронизации через EnterpriseData в БСП 2.3+ рассчитана на версию платформы не ниже 8.3.6 и управляемый режим работы. Конфигурация ЗУП 2.5 по умолчанию работает в режиме совместимости с платформой 8.2.13. Модули БСП активно используют директивы управляемого приложения (&НаСервере, &НаКлиенте), асинхронные методы, инструкции компиляции и вызовы функций, которые в режиме совместимости 8.2 вызовут синтаксические ошибки еще на этапе проверки конфигурации.
  3. Ошибки инициализации планов обмена: Сообщение системы «возможность настройки синхронизации не предусмотрена» появляется в тех случаях, когда подсистема БСП не находит необходимых настроек. В частности, это происходит, если план обмена не зарегистрирован в общем модуле ОбменДаннымиПереопределяемый, выключена константа ИспользоватьСинхронизациюДанных или в плане обмена отсутствуют реквизиты и табличные части, обязательные для механизмов БСП.

Риски изменения режима совместимости в ЗУП 2.5

Часто возникает соблазн поднять режим совместимости конфигурации до 8.2.16 или даже до 8.3.x. Делать это крайне не рекомендуется. В ЗУП 2.5 используется огромное количество обычных форм, прямого управления модальными окнами, специфических блокировок и алгоритмов расчета зарплаты. Повышение режима совместимости может привести к следующим последствиям:

  1. Нарушение логики открытия диалоговых окон и модальных вызовов в обычных формах.
  2. Сбои в формировании сложных отчетов на компоновке данных и в нестандартных табличных полях.
  3. Конфликты имен процедур и переменных из-за появления новых зарезервированных ключевых слов платформы.

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

Ограничения EnterpriseData при обмене кадровыми данными

Прежде чем разрабатывать выгрузку, необходимо учесть особенности формата EnterpriseData. В стандартной XDTO-схеме формата нет отдельной сущности «Сотрудники» в том понимании, в котором она существует в ЗУП 2.5. Для передачи данных о работниках используется справочник ФизическиеЛица, а сведения о кадровых состояниях передаются в виде агрегированных срезов.

Если расширить схему EnterpriseData собственными кадровыми справочниками, формат перестанет быть стандартным. В этом случае в типовой конфигурации-приемнике (например, в «1С:Бухгалтерии предприятия 3.0» или «1С:ERP») типовые правила загрузки не смогут прочитать новые данные, и вам придется дорабатывать схему и правила на обоих концах интеграции.

Способ 1. Изолированная выгрузка через Фабрику XDTO без внедрения БСП

Наиболее надежный путь интеграции ЗУП 2.5 в формате EnterpriseData без разрушения типовой конфигурации — создание собственного механизма формирования XML-пакета через стандартный объект ФабрикаXDTO. Разберем алгоритм по шагам:

  1. Добавляем в конфигурацию ЗУП 2.5 XDTO-пакет требуемой версии EnterpriseData (выгруженный из базы-приемника или поставки БСП).
  2. Создаем отдельный общий модуль или внешнюю обработку для формирования сообщения обмена.
  3. Формируем данные справочников (организации, подразделения, физлица) программно через методы фабрики, упаковываем их в сообщение и сохраняем с помощью ЗаписьXML.

Посмотрим на пример формирования структуры сообщения универсального формата:


ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайлаВыгрузки, "UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();

ТипСообщения = ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.0", "Сообщение");
ОбъектСообщения = ФабрикаXDTO.Создать(ТипСообщения);

// Формируем заголовок сообщения
ОбъектСообщения.Заголовок = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.0", "ЗаголовокСообщения"));
ОбъектСообщения.Заголовок.Идентификатор = Строка(Новый УникальныйИдентификатор);
ОбъектСообщения.Заголовок.Дата = ТекущаяДата();
ОбъектСообщения.Заголовок.Отправитель = "ЗУП25";
ОбъектСообщения.Заголовок.Получатель = "БП30";

// Заполняем тело документа объектами XDTO
ОбъектСообщения.Тело = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.0", "ТелоСообщения"));

// Записываем сформированный пакет через фабрику
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектСообщения);
ЗаписьXML.Закрыть();

Такой подход полностью изолирован: он не требует изменения типовых общих модулей, не затрагивает режим совместимости и гарантирует формирование XML-файла, строго соответствующего схеме EnterpriseData.

Способ 2. Адаптация модуля из «Конвертации данных 3.0»

Если требуется регулярный обмен с гибкой настройкой правил, можно задействовать конфигурацию «Конвертация данных 3.0» (КД 3.0):

  1. В КД 3.0 настраиваются правила конвертации данных (ПКД) и правила конвертации свойств (ПКС) для требуемых справочников в формат EnterpriseData.
  2. КД 3.0 генерирует текст общего модуля МенеджерОбменаЧерезУниверсальныйФормат.
  3. Полученный исходный код очищается от конструкций, не поддерживаемых платформой 8.2 (директивы компиляции, вызовы процедур БСП, платформенная сериализация JSON).
  4. Адаптированный модуль встраивается в конфигурацию или подключается через внешнюю обработку выгрузки.

Альтернативные варианты обмена данными для ЗУП 2.5

Если задача заключается исключительно в передаче нормативно-справочной информации, использование EnterpriseData часто оказывается избыточным. Стоит рассмотреть проверенные альтернативы:

  1. Обмен по правилам через «Конвертацию данных 2.1»: В ЗУП 2.5 уже присутствует встроенная подсистема обмена по правилам XML. Написание правил для конкретных справочников в КД 2.1 занимает минимум времени и стабильно работает через стандартную обработку УниверсальныйОбменДаннымиXML.
  2. Подключение через COM-соединение: База-приемник на современной платформе может самостоятельно подключаться к ЗУП 2.5 через объект V83.COMConnector, напрямую считывая данные справочников без модификации конфигурации-источника.
← На главную