В практике сопровождения «1С:Зарплата и управление персоналом 2.5 КОРП» часто возникает задача межбазового обмена. Типичный сценарий: сотрудник увольняется в одной информационной базе (источнике) и принимается на работу в другую (приемник). Сложность заключается в том, что базы велись независимо, и внутренние идентификаторы (GUID) одних и тех же физических лиц не совпадают. В этой статье мы разберем, как автоматизировать этот процесс, избежать дублирования данных и корректно трансформировать кадровые события.
Если мы воспользуемся стандартной обработкой ВыгрузкаЗагрузкаДанныхXML.epf, система будет пытаться сопоставить объекты исключительно по их внутренним идентификаторам. Поскольку наши базы идентичны по структуре, но имеют «разную историю» создания элементов, загрузка приведет к созданию дублей справочников ФизическиеЛица, Сотрудники, а также нормативно-справочной информации (НСИ), такой как Должности и Подразделения.
Разберем, какие инструменты и методики позволят нам решить задачу элегантно и без «ручного» ввода данных.
Это наиболее профессиональный и гибкий метод. Рассмотрим пошагово, как настроить правила конвертации объектов (ПКО) для нашей ситуации.
Шаг 1. Сопоставление физических лиц
Так как ГУИДы разные, единственным надежным ключом связи будут персональные данные. Проанализируем настройки поиска в ПКО для справочника ФизическиеЛица. Нам необходимо снять флаг «Искать объект по внутреннему идентификатору» и установить флаги «Продолжить поиск по полям поиска, если по идентификатору объект не найден».
В качестве полей поиска рекомендуется использовать комбинацию:
ИННСтраховойНомерПФР (СНИЛС)Если данные заполнены не у всех, добавим второстепенное правило поиска по Наименованию (ФИО) и ДатеРождения. Это гарантирует, что система найдет существующее физлицо в базе-приемнике и привяжет к нему нового сотрудника.
Шаг 2. Создание нового сотрудника
Важно помнить, что в ЗУП 2.5 справочники ФизическиеЛица и Сотрудники — это разные сущности. Один человек (физлицо) может иметь несколько карточек сотрудников (например, при внутреннем совместительстве или повторном приеме). Для корректного создания сотрудника в приемнике, настроим ПКО для справочника СотрудникиОрганизаций, используя поиск по:
Физлицо (которое мы уже сопоставили на предыдущем шаге)ОрганизацияТабельныйНомер (если политика нумерации совпадает)Шаг 3. Трансформация документа «Увольнение» в «Прием на работу»
Проанализируем ситуацию: в источнике у нас есть документ УвольнениеИзОрганизаций, а в приемнике нам нужен ПриемНаРаботуВОрганизацию. Напрямую перенести реквизиты не получится из-за разной структуры. Рассмотрим программный подход в КД:
УвольнениеИзОрганизаций.Объект.ДатаУвольнения + 1 день.Пример кода в обработчике ПВД (схематично):
// Создаем структуру для передачи данных в ПКО Приема на работу
СвойстваПриема = Новый Структура;
СвойстваПриема.Вставить("Дата", Объект.ДатаУвольнения + 86400); // +1 день
СвойстваПриема.Вставить("Организация", Объект.Организация);
СвойстваПриема.Вставить("ФизЛицо", Объект.Сотрудник.Физлицо);
// Вызываем выгрузку по правилу для Приема на работу
ВыгрузитьПоПравилу(Объект, , СвойстваПриема, , "ПриемНаРаботуВОрганизацию");
При переносе мы неизбежно столкнемся с перечислениями и справочниками. Рассмотрим, как избежать ошибок:
ПаспортныеДанныеФизЛиц, ФИОФизЛиц). Их лучше переносить вместе с объектом ФизическиеЛица, включив их в ПКО как входящие данные.Если бюджет времени ограничен, и вы не хотите писать сложные правила в КД, разберем вариант с ВыгрузкаЗагрузкаДанныхXML.epf. Чтобы выгрузить не всех сотрудников, а конкретных 6-10 человек, выполним следующие действия:
СотрудникиОрганизаций.ПоискИЗаменаЗначений.epf или ПоискИУдалениеДублей.epf, чтобы «схлопнуть» вновь созданные объекты с уже существующими.Проанализируем ситуацию, когда сотрудников мало (до 10 в месяц). Иногда проще и быстрее использовать стандартную обработку «Загрузка данных из табличного документа»:
ФизическиеЛица (с поиском по ИНН/СНИЛС).Прием на работу.Этот метод исключает технические сложности с КД 2.1 и гарантирует, что вы не перенесете «лишние» системные данные.
Мы рассмотрели несколько подходов к решению задачи. Выбор зависит от квалификации разработчика и регулярности задачи:
Конвертации данных 2.1. Это позволит один раз настроить сопоставление по ИНН/СНИЛС и автоматически трансформировать «Увольнение» в «Прием».Важный совет: При настройке поиска по наименованию в КД всегда используйте функцию СокрЛП() в обработчиках, чтобы исключить ошибки из-за случайных пробелов в строковых данных.