При интеграции систем часто возникает задача регулярной передачи справочной информации из кадровой базы в учетную или управленческую систему. Разберем типичный сценарий: требуется настроить ежедневную автоматическую выгрузку сотрудников и связанных с ними данных из 1С:Зарплата и Управление Персоналом 2.5 КОРП в конфигурацию, созданную с нуля, а также оценим реальные сроки выполнения этой задачи.
Проанализируем специфику конфигурации источника перед выбором архитектуры передачи. Одной из главных ошибок при выгрузке сотрудников из ЗУП 2.5 является попытка ограничиться только объектом СправочникСсылка.СотрудникиОрганизаций. В данной конфигурации этот справочник выполняет скорее роль оболочки, а ключевые данные распределены по другим объектам:
ФизическиеЛица. На одно физлицо может приходиться несколько элементов сотрудников (например, при внутреннем или внешнем совместительстве, повторном приеме на работу).РаботникиОрганизаций. Без обращения к виртуальной таблице среза последних на дату выгрузки приемник не получит актуальной должности и подразделения.КонтактнаяИнформация, паспортные данные — в регистре ПаспортныеДанныеФизЛиц, а история смены фамилий — в регистре ФИОФизЛиц.Таким образом, даже при задаче «переносить только сотрудников» в обмене всегда участвует группа связанных объектов: сотрудники, физические лица, организации, подразделения, должности и соответствующие регистры сведений.
Рассмотрим классический и наиболее надежный способ интеграции для ЗУП 2.5. Конфигурация работает в режиме совместимости с платформой 8.2, поэтому стандартный механизм EnterpriseData (КД 3.0) для нее недоступен, и базовым инструментом выступает «Конвертация данных 2.1».
Для реализации автоматического регулярного обмена по изменениям выполним следующие шаги:
MD82Exp.epf выгружаем структуры конфигураций ЗУП 2.5 и самописной базы в XML-файлы и загружаем их в базу КД 2.1.СтраховойНомерПФР (СНИЛС) или комбинации ИНН + ФИО. Для сотрудников правилом поиска выбираем связку Организация + Код (табельный номер). Это исключит задвоение данных при повторных обменах.ПланОбмена. В состав плана обмена включаем необходимые справочники с авторегистрацией изменений (или подключаем подписки на события).УниверсальныйОбменДаннымиXML в самописную базу или используем ее программно через внешнюю обработку. Для ежедневной передачи только измененных записей программно инициализируем обработку и передаем узел плана обмена:
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ОбработкаОбмена.ИмяФайлаПравил = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаДанных = "C:\Exchange\Data.xml";
ОбработкаОбмена.УзелДляОбмена = ПланыОбмена.ОбменССамопиской.НайтиПоКоду("001");
ОбработкаОбмена.ВыполнитьВыгрузку();
// После успешной выгрузки очищаем регистрацию изменений
ПланыОбмена.УдалитьРегистрациюИзменений(ОбработкаОбмена.УзелДляОбмена);
На стороне конфигурации-приемника настраиваем аналогичный запуск обработки в режиме загрузки данных из сформированного XML-файла с помощью серверного вызова ОбработкаОбмена.ВыполнитьЗагрузку() по регламентному заданию.
Важное замечание по файловому обмену: при формировании файлов на сетевом ресурсе формируйте файл с временным расширением (например, .tmp) и переименовывайте его в .xml только после завершения метода выгрузки. Это предотвратит чтение не полностью записанного файла приемником.
Разберем альтернативный вариант, исключающий работу с промежуточными XML-файлами на диске. Платформа 8.2 полностью поддерживает SOAP-сервисы, что позволяет исключить использование общих папок.
Web-сервис, привязанный к точке публикации на веб-сервере (IIS или Apache).WS-ссылка. По расписанию регламентное задание вызывает операцию веб-сервиса, получает порцию изменений и непосредственно в кодовой логике обновляет справочники.Этот метод технологически проще в поддержке прав доступа, но требует развертывания веб-сервера и наличия статического адреса или локальной сети между базами.
Проанализируем временные затраты на реализацию проекта. Сроки зависят от квалификации специалиста и выбранного подхода:
РаботникиОрганизаций.Для программиста уровня Middle, знакомого с механизмами планов обмена и базовыми принципами КД 2.1, суммарная трудоемкость задачи составляет от 6 до 12 рабочих часов. Если разработчик ранее не работал с «Конвертацией данных», срок увеличивается до 2–3 рабочих дней с учетом изучения синтаксиса обработчиков и структуры метаданных ЗУП 2.5.