При работе в программах 1С:ERP Управление предприятием, 1С:Зарплата и управление персоналом или 1С:Комплексная автоматизация пользователи часто сталкиваются со странным поведением кадровых отчетов. Типичный пример: в отчете Штатные сотрудники один и тот же человек выводится в виде нескольких строк (например, четырех), хотя в организации он занимает только одну ставку и не является совместителем. При этом общее количество сотрудников в подвале отчета может рассчитываться абсолютно корректно. Подобное поведение системы вводит в заблуждение кадровую службу и руководство.
В этой статье мы подробно разберем, почему возникает такая проблема, рассмотрим внутреннюю кухню регистров 1С и изучим пошаговые инструкции по устранению дублей в отчетах.
Прежде чем погружаться в техническую отладку регистров и кода, проанализируем настройки самого отчета. Очень часто причиной появления «лишних» строк становятся некорректно настроенные группировки или добавление в структуру отчета полей, которые имеют несколько значений для одного сотрудника.
Выполним проверку настроек по шагам:
Штатные сотрудники и перейдем в меню Настройки.Рассмотрим ситуацию, когда у сотрудника в системе зарегистрировано несколько документов, удостоверяющих личность. Например, сотрудница вышла замуж, сменила фамилию и получила новый паспорт. В кадровом учете нормальной практикой является сохранение истории документов.
Однако в некоторых релизах конфигураций существовала программная ошибка: при соединении таблиц сотрудников и физических лиц запрос отчета не учитывал период действия документа или флаг его актуальности. В результате, если у физического лица в программе зафиксировано два паспорта, отчет выводил сотрудника дважды. Если документов больше (например, паспорт гражданина РФ, загранпаспорт, старый паспорт), строк могло стать три или четыре.
Для исправления этой ситуации убедитесь, что в карточке физического лица в разделе Все документы корректно указаны даты действия документов и только один из них отмечен как основной (актуальный) документ, удостоверяющий личность.
Проанализируем состояние штатного расписания. Отчет Штатные сотрудники тесно связан с регистром сведений ЗанятостьПозицийШтатногоРасписания. Если по сотруднику проводились исправления кадровых документов «задним числом» или имели место коллизии при переносе данных, записи в этом регистре могли задвоиться.
Выясним причину через просмотр движений:
ЗанятостьПозицийШтатногоРасписания.В современных конфигурациях 1С для ускорения работы отчетов кадровые данные хранятся в специальных «интервальных» регистрах сведений. Система сама рассчитывает временные интервалы при проведении документов. Но если цепочка кадровых документов была нарушена (например, сначала провели перевод, потом распровели прием, затем снова провели), интервалы могут «разорваться» или наложиться друг на друга.
Чаще всего сбои происходят в следующих регистрах:
Кадровая история сотрудников интервальныйПлановые авансы интервальныйСостояния сотрудниковРазберем, как восстановить целостность этих данных без написания кода:
Перезаполнение интервальных регистров (в некоторых версиях она называется Обновление состояний сотрудников).Регистр сведений Текущие кадровые данные сотрудников аккумулирует оперативную информацию по каждому работнику. При некорректных обменах данными или программных сбоях в нем могут появиться фантомные записи-дубли.
Проанализируем этот регистр:
e1cib/list/РегистрСведений.ТекущиеКадровыеДанныеСотрудников.Физлицо и Сотрудник, а остальные колонки пусты — перед нами технический дубль.Этот регистр хранит информацию о том, какое рабочее место (какая карточка сотрудника) является основным для конкретного физического лица. Это критически важно, если у человека в одной организации открыто несколько карточек (например, основное место работы и внутреннее совместительство).
Если при переносе данных из старых систем (например, ЗУП 2.5) связь установилась неверно, в регистре Основные сотрудники физических лиц для одного человека может быть привязано сразу несколько «основных» карточек. При построении запроса отчета Штатные сотрудники происходит левое соединение по этому регистру, что приводит к размножению строк в геометрической прогрессии. Решением является ручная проверка регистра и удаление некорректных связей.
Стоит отметить, что дублирование сотрудников часто являлось следствием зарегистрированных багов самой платформы 1С или типовых конфигураций (ЗУП 3.1.14 / ERP 2.4). Ошибка крылась в сложном пакете запросов схемы компоновки данных (СКД) кадровых отчетов, где соединение с регистром состояний сотрудников при определенных условиях давало декартово произведение строк.
Если вы столкнулись с этой проблемой на старом релизе и у вас нет возможности оперативно обновить конфигурацию (в дальнейшем для таких задач удобно использовать автоматическое обновление баз по расписанию), воспользуемся быстрым обходным путем (лайфхаком):
Штатные сотрудники в расширенном режиме.Сотрудник или Табельный номер.Если вы подозреваете, что проблема кроется в регистре состояний, но визуально все записи выглядят правильными, можно принудительно заставить систему пересчитать движения по конкретному сотруднику с помощью следующего алгоритма:
Отсутствие (болезнь, прогул, неявка) на проблемного сотрудника.При отмене проведения 1С снова пересчитает регистр состояний для этого сотрудника, но уже очистит «зависшие» в памяти неактуальные записи, которые и вызывали дублирование в отчете.
Таким образом, мы детально разобрали все возможные причины дублирования сотрудников в отчете Штатные сотрудники. Последовательное выполнение предложенных шагов гарантированно поможет вам выявить и устранить ошибку, вернув кадровой отчетности корректный и лаконичный вид.