При интеграции устаревших или сильно кастомизированных конфигураций (таких как 1С:Управление производственным предприятием, ред. 1.3) с современными решениями для учета кадров и зарплаты (1С:Зарплата и управление персоналом, ред. 3.1) специалисты часто сталкиваются с архитектурными противоречиями. Типичная ситуация: в исторической базе УПП кадровый учет велся в упрощенном виде — документы оформлялись напрямую на элементы справочника ФизическиеЛица, а справочник Сотрудники не использовался вовсе. При попытке перенести кадровые документы («Прием на работу», «Кадровое перемещение») в ЗУП 3.1 возникает технический тупик: новая система требует обязательного указания ссылки на элемент справочника Сотрудники.
В этой статье мы подробно разберем, как решить данную задачу технически, рассмотрим проверенный лайфхак для исторического переноса данных, а также обоснуем, почему с точки зрения методологии 1С правильнее развернуть поток интеграции на 180 градусов.
Если бизнес-требования жестко диктуют необходимость первичного ввода кадровых документов именно в УПП, нам придется научить систему обмена автоматически генерировать карточки сотрудников в ЗУП 3.1 на основании данных о физических лицах. Реализовать это можно программно с помощью правил обмена в конфигурации 1С:Конвертация данных 2.1.
Разберем этот процесс по шагам:
Сотрудники) назначается справочник ФизическиеЛица из УПП. Приемником выступает справочник Сотрудники в ЗУП 3.1.ФизическоеЛицо (приемник) сопоставляется со значением Ссылка (источник — физлицо из УПП).Организация передается из реквизита документа-источника (поскольку в самом физлице организации нет, значение организации нужно передавать через входящие данные ПараметрыОбъекта).Наименование сопоставляется с ФИО физического лица.Сотрудник мы указываем реквизит ФизЛицо из УПП, но жестко связываем его с ПКО Сотрудники. Также в ПКС передаем структуру сопутствующих параметров (Организация, Подразделение, Должность), необходимых для создания карточки сотрудника.Сотрудники в обработчике события «Поля поиска» на стороне ЗУП 3.1 мы должны написать запрос, который проверяет наличие уже созданного сотрудника по связке «Физическое лицо + Организация»:
// Обработчик "Поля поиска" в ПКО Сотрудники (ЗУП 3.1)
Если СвойстваПоиска.Получить("ФизическоеЛицо") <> Неопределено И СвойстваПоиска.Получить("ГоловнаяОрганизация") <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ФизическоеЛицо = &ФизическоеЛицо
| И Сотрудники.ГоловнаяОрганизация = &Организация
| И НЕ Сотрудники.ВАрхиве";
Запрос.УстановитьПараметр("ФизическоеЛицо", СвойстваПоиска.Получить("ФизическоеЛицо"));
Запрос.УстановитьПараметр("Организация", СвойстваПоиска.Получить("ГоловнаяОрганизация"));
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
СсылкаНаОбъект = Выборка.Ссылка;
ПрекратитьПоиск = Истина; // Объект найден, создавать новый не нужно
КонецЕсли;
КонецЕсли;
Если поиск не дал результатов, система создаст новый элемент справочника Сотрудники. При этом платформа ЗУП 3.1 автоматически сгенерирует для него новый табельный номер. Кадровику в ЗУП останется лишь зайти в созданный документ приема, проверить автоматически подставившегося сотрудника и провести документ.
Если перед вами стоит задача не ежедневного обмена, а разового (или регулярного, но крупного) переноса всей кадровой истории из кастомизированной УПП 1.3 в новую ЗУП 3.1, можно прибегнуть к проверенной хитрости. Поскольку архитектура учета кадров в типовой УПП 1.3 базируется на коде ЗУП 2.5, штатный помощник перехода ЗУП 3.1 умеет идеально переносить из нее данные, автоматически преобразуя физлиц в сотрудников.
Рассмотрим алгоритм действий:
ЗарплатаИУправлениеПерсоналом, а номер версии устанавливаем соответствующим одной из поддерживаемых версий ЗУП 2.5 (информацию об актуальных версиях для переноса можно найти в дистрибутиве обновления ЗУП 3.1).ФизическиеЛица и Сотрудники с сохранением всей истории связей и срезов последних данных.Несмотря на техническую реализуемость прямой схемы (УПП -> ЗУП), опытные архитекторы 1С и участники обсуждения настоятельно рекомендуют отказаться от этой концепции. Попытка вести первичный кадровый учет в УПП и транслировать его в ЗУП 3.1 неизбежно приведет к критическим проблемам:
Правильная архитектурная схема:
Кадровый учет и расчет зарплаты полностью ведутся в 1С:ЗУП 3.1. Это позволяет кадровикам оперативно сдавать отчетность, а расчетчикам — корректно начислять зарплату в едином контуре. На сторону 1С:УПП из ЗУП передаются только агрегированные или необходимые для управленческого учета данные:
ФизическиеЛица (для складского учета, ответственных лиц в документах УПП и т.д.).Отражение зарплаты в бухучете в конце месяца для формирования проводок по дебету затратных счетов и кредиту 70 (73, 69) счета в УПП без детализации по конкретным сотрудникам (или с детализацией, если это необходимо для аналитики затрат).Для решения разовой задачи переноса данных воспользуйтесь «обманом» помощника перехода. Если же вы проектируете постоянную интеграцию, мы рекомендуем приложить усилия для убеждения руководства в необходимости смены вектора обмена. Попытка сделать УПП источником кадровых данных для ЗУП 3.1 превратит поддержку системы в постоянную борьбу с ошибками проведения документов и расхождениями в расчете налогов и взносов.