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