Как организовать автоматический односторонний обмен сотрудниками из ЗУП в самописную конфигурацию

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

При интеграции систем часто возникает задача регулярной передачи справочной информации из кадровой базы в учетную или управленческую систему. Разберем типичный сценарий: требуется настроить ежедневную автоматическую выгрузку сотрудников и связанных с ними данных из 1С:Зарплата и Управление Персоналом 2.5 КОРП в конфигурацию, созданную с нуля, а также оценим реальные сроки выполнения этой задачи.

Особенности структуры данных кадрового учета в ЗУП 2.5

Проанализируем специфику конфигурации источника перед выбором архитектуры передачи. Одной из главных ошибок при выгрузке сотрудников из ЗУП 2.5 является попытка ограничиться только объектом СправочникСсылка.СотрудникиОрганизаций. В данной конфигурации этот справочник выполняет скорее роль оболочки, а ключевые данные распределены по другим объектам:

  1. Физические лица: персональные данные хранятся в справочнике ФизическиеЛица. На одно физлицо может приходиться несколько элементов сотрудников (например, при внутреннем или внешнем совместительстве, повторном приеме на работу).
  2. Срез кадровой истории: актуальное подразделение, должность, график работы и состояние (работает или уволен) находятся в периодическом регистре сведений РаботникиОрганизаций. Без обращения к виртуальной таблице среза последних на дату выгрузки приемник не получит актуальной должности и подразделения.
  3. Персональные сведения: адреса и телефоны хранятся в регистре КонтактнаяИнформация, паспортные данные — в регистре ПаспортныеДанныеФизЛиц, а история смены фамилий — в регистре ФИОФизЛиц.

Таким образом, даже при задаче «переносить только сотрудников» в обмене всегда участвует группа связанных объектов: сотрудники, физические лица, организации, подразделения, должности и соответствующие регистры сведений.

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

Рассмотрим классический и наиболее надежный способ интеграции для ЗУП 2.5. Конфигурация работает в режиме совместимости с платформой 8.2, поэтому стандартный механизм EnterpriseData (КД 3.0) для нее недоступен, и базовым инструментом выступает «Конвертация данных 2.1».

Для реализации автоматического регулярного обмена по изменениям выполним следующие шаги:

  1. Выгрузка структуры метаданных: с помощью обработки MD82Exp.epf выгружаем структуры конфигураций ЗУП 2.5 и самописной базы в XML-файлы и загружаем их в базу КД 2.1.
  2. Настройка правил конвертации объектов (ПКО): описываем правила для справочников. Для физических лиц настраиваем поиск по неизменяемым реквизитам: СтраховойНомерПФР (СНИЛС) или комбинации ИНН + ФИО. Для сотрудников правилом поиска выбираем связку Организация + Код (табельный номер). Это исключит задвоение данных при повторных обменах.
  3. Регистрация изменений: в ЗУП создаем новый объект ПланОбмена. В состав плана обмена включаем необходимые справочники с авторегистрацией изменений (или подключаем подписки на события).
  4. Автоматизация выгрузки: переносим типовую обработку УниверсальныйОбменДаннымиXML в самописную базу или используем ее программно через внешнюю обработку. Для ежедневной передачи только измененных записей программно инициализируем обработку и передаем узел плана обмена:

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

// После успешной выгрузки очищаем регистрацию изменений
ПланыОбмена.УдалитьРегистрациюИзменений(ОбработкаОбмена.УзелДляОбмена);

На стороне конфигурации-приемника настраиваем аналогичный запуск обработки в режиме загрузки данных из сформированного XML-файла с помощью серверного вызова ОбработкаОбмена.ВыполнитьЗагрузку() по регламентному заданию.

Важное замечание по файловому обмену: при формировании файлов на сетевом ресурсе формируйте файл с временным расширением (например, .tmp) и переименовывайте его в .xml только после завершения метода выгрузки. Это предотвратит чтение не полностью записанного файла приемником.

Способ 2. Обмен через Web-сервисы (SOAP)

Разберем альтернативный вариант, исключающий работу с промежуточными XML-файлами на диске. Платформа 8.2 полностью поддерживает SOAP-сервисы, что позволяет исключить использование общих папок.

  1. В ЗУП 2.5 создается Web-сервис, привязанный к точке публикации на веб-сервере (IIS или Apache).
  2. Сервис содержит операцию, принимающую дату последнего успешного опроса либо идентификатор узла плана обмена, и возвращающую пакет данных (в виде сериализованной строки JSON или структуры XML).
  3. В самописной конфигурации создается объект конфигурации WS-ссылка. По расписанию регламентное задание вызывает операцию веб-сервиса, получает порцию изменений и непосредственно в кодовой логике обновляет справочники.

Этот метод технологически проще в поддержке прав доступа, но требует развертывания веб-сервера и наличия статического адреса или локальной сети между базами.

Оценка сроков разработки

Проанализируем временные затраты на реализацию проекта. Сроки зависят от квалификации специалиста и выбранного подхода:

  1. Анализ и проектирование (1–2 часа): сопоставление полей, выбор ключевых полей идентификации (СНИЛС, ИНН, табельный номер), определение списка регистров, откуда необходимо получать срез данных.
  2. Разработка правил в КД 2.1 (2–4 часа): сопоставление 5 связанных справочников, написание алгоритмов в обработчиках событий для выборки данных из среза последних регистра РаботникиОрганизаций.
  3. Внедрение механизмов автоматизации (2–4 часа): создание плана обмена в ЗУП, реализация регламентных заданий на стороне источника и приемника (или запуск через системный планировщик задач), отладка снятия регистрации изменений.
  4. Тестирование граничных условий (2–3 часа): проверка передачи уволенных сотрудников, совместителей, обновления паспортных данных и смены фамилий, проверка на исключение создания дубликатов.

Для программиста уровня Middle, знакомого с механизмами планов обмена и базовыми принципами КД 2.1, суммарная трудоемкость задачи составляет от 6 до 12 рабочих часов. Если разработчик ранее не работал с «Конвертацией данных», срок увеличивается до 2–3 рабочих дней с учетом изучения синтаксиса обработчиков и структуры метаданных ЗУП 2.5.

← На главную