При интеграции устаревших систем на платформе 1С:Предприятие 8.2 (или работающих в режиме совместимости с версией 8.2) с современными решениями на базе «Библиотеки стандартных подсистем» (БСП) возникает необходимость использовать единый универсальный формат EnterpriseData. Типовая конфигурация «1С:Зарплата и Управление Персоналом 2.5» изначально разрабатывалась для работы в обычном приложении и не содержит механизмов универсального формата. Разберем, с какими сложностями сопряжен перенос модулей БСП в ЗУП 2.5 и как правильно решить задачу обмена данными.
Попытка скопировать один или два общих модуля (например, отвечающих за сериализацию XDTO или обработку формата EnterpriseData) из актуальных версий БСП в ЗУП 2.5 не приведет к успеху. Проанализируем ключевые причины архитектурных ограничений:
ОбщегоНазначения, ДлительныеОперации, Пользователи, ОчередьСообщений и других. Перенос одного модуля потянет за собой цепочку из десятков общих модулей, планов обмена, констант и регистров сведений.8.2.13. Модули БСП активно используют директивы управляемого приложения (&НаСервере, &НаКлиенте), асинхронные методы, инструкции компиляции и вызовы функций, которые в режиме совместимости 8.2 вызовут синтаксические ошибки еще на этапе проверки конфигурации.ОбменДаннымиПереопределяемый, выключена константа ИспользоватьСинхронизациюДанных или в плане обмена отсутствуют реквизиты и табличные части, обязательные для механизмов БСП.Часто возникает соблазн поднять режим совместимости конфигурации до 8.2.16 или даже до 8.3.x. Делать это крайне не рекомендуется. В ЗУП 2.5 используется огромное количество обычных форм, прямого управления модальными окнами, специфических блокировок и алгоритмов расчета зарплаты. Повышение режима совместимости может привести к следующим последствиям:
Поэтому правильный подход заключается в том, чтобы сохранить исходный режим совместимости 8.2.13 и адаптировать логику выгрузки под возможности платформы.
Прежде чем разрабатывать выгрузку, необходимо учесть особенности формата EnterpriseData. В стандартной XDTO-схеме формата нет отдельной сущности «Сотрудники» в том понимании, в котором она существует в ЗУП 2.5. Для передачи данных о работниках используется справочник ФизическиеЛица, а сведения о кадровых состояниях передаются в виде агрегированных срезов.
Если расширить схему EnterpriseData собственными кадровыми справочниками, формат перестанет быть стандартным. В этом случае в типовой конфигурации-приемнике (например, в «1С:Бухгалтерии предприятия 3.0» или «1С:ERP») типовые правила загрузки не смогут прочитать новые данные, и вам придется дорабатывать схему и правила на обоих концах интеграции.
Наиболее надежный путь интеграции ЗУП 2.5 в формате EnterpriseData без разрушения типовой конфигурации — создание собственного механизма формирования XML-пакета через стандартный объект ФабрикаXDTO. Разберем алгоритм по шагам:
Запись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.
Если требуется регулярный обмен с гибкой настройкой правил, можно задействовать конфигурацию «Конвертация данных 3.0» (КД 3.0):
МенеджерОбменаЧерезУниверсальныйФормат.Если задача заключается исключительно в передаче нормативно-справочной информации, использование EnterpriseData часто оказывается избыточным. Стоит рассмотреть проверенные альтернативы:
УниверсальныйОбменДаннымиXML.V83.COMConnector, напрямую считывая данные справочников без модификации конфигурации-источника.