В конфигурации 1С:Зарплата и управление персоналом 3.1 пользователи периодически сталкиваются с неприятной ситуацией: при увольнении сотрудника, который в данный момент находится в статусе временного перевода, в программе фиксируется двойное событие увольнения. В регистре сведений КадроваяИсторияСотрудниковИнтервальный вместо одной корректной записи создаются две, разделенные датой окончания временного перемещения. Это приводит к тому, что в кадровых отчетах сотрудник фигурирует как уволенный дважды, что недопустимо для корректного учета.
Проанализируем причины возникновения этой ошибки, разберем механизм работы интервальных регистров и определим последовательность действий для исправления ситуации.
Для начала разберем, почему вообще возникает «разрыв». В 1С:ЗУП 3.1 кадровые данные хранятся в нескольких регистрах. Основной регистр — КадроваяИсторияСотрудников — хранит события (прием, перевод, увольнение). Однако для быстрого построения отчетов и расчета зарплаты система использует вспомогательный регистр — КадроваяИсторияСотрудниковИнтервальный.
Этот регистр является «вычисляемым». Он не заполняется напрямую документами в привычном смысле, а формируется программным кодом при проведении кадровых документов. Алгоритм «нарезает» историю сотрудника на непрерывные интервалы. Проблема возникает в следующей ситуации:
Прежде чем приступать к сложным манипуляциям, выясним, не является ли это известной ошибкой релиза. В истории обновлений 1С существует зафиксированная ошибка 10234106. Она была официально исправлена в версиях 3.1.19.80 и 3.1.18.246. Если ваш релиз ниже указанных, первым делом необходимо обновить конфигурацию.
Однако, как показывает практика, даже на новых релизах (например, 3.1.27.92) проблема может проявляться, если кадровые документы были оформлены специфическим образом (например, использовался Документ.КадровыйПереводСписком). Рассмотрим, как проверить чистоту конфигурации:
cf файл), чтобы исключить наличие кастомных правок в общем модуле КадровыйУчет.Если перепроведение документа Увольнение не помогает, воспользуемся штатным инструментом исправления данных. В ЗУП 3.1 предусмотрена специальная обработка, которая полностью пересчитывает интервальные регистры на основе первичных данных.
Выполним следующие шаги:
Важно: Этот метод безопаснее ручной правки записей регистра, так как он использует актуальные алгоритмы конфигурации для сопоставления периодов.
Иногда алгоритм проведения «зацикливается» на старых данных, сохраненных в оперативной памяти или кэше. Рассмотрим методику «принудительного схлопывания» интервалов через временное изменение дат:
Кадровый перевод (или перевод списком).Увольнение. На этом этапе система должна создать одну запись об увольнении без конечной даты.Кадровый перевод, восстановим дату окончания и снова проведем его.Увольнение.Такая последовательность заставляет систему заново инициализировать цепочку событий в регистре КадроваяИсторияСотрудников, что часто устраняет фантомные точки разрыва.
Чтобы точно понять, какая запись в основном регистре провоцирует разрыв в интервальном, проанализируем данные с помощью консоли запросов. Посмотрим на содержимое регистра КадроваяИсторияСотрудников по конкретному физическому лицу:
ВЫБРАТЬ
КадроваяИстория.Период,
КадроваяИстория.Сотрудник,
КадроваяИстория.ВидСобытия,
КадроваяИстория.ДействуетДо,
КадроваяИстория.Регистратор
ИЗ
РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИстория
ГДЕ
КадроваяИстория.Сотрудник = &Сотрудник
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Интервальный.ДатаНачала,
Интервальный.Сотрудник,
Интервальный.ВидСобытия,
Интервальный.ДатаОкончания,
Интервальный.Регистратор
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК Интервальный
ГДЕ
Интервальный.Сотрудник = &Сотрудник
УПОРЯДОЧИТЬ ПО
Период
Проанализируем результат: если в основном регистре у записи об увольнении заполнено поле ДействуетДо, или если в предыдущей записи о переводе дата окончания не была корректно «перекрыта» увольнением, мы увидим это в запросе. Это поможет понять, какой именно документ требует перезаполнения.
Если ни один из штатных способов не сработал, а отчеты нужно сдавать срочно, допустимо прибегнуть к ручной корректировке записей регистра КадроваяИсторияСотрудниковИнтервальный. Помните, что это не устраняет причину, и при любом перепроведении документов изменения могут затереться.
Разберем, как это сделать:
КадроваяИсторияСотрудниковИнтервальный.Подведем итог: Проблема разрыва увольнения временным переводом чаще всего связана с тем, что алгоритм заполнения интервалов не учитывает приоритет события «Увольнение» над технической датой окончания «Перевода». Рекомендуется сначала использовать штатную обработку обновления интервалов и только в случае неудачи переходить к ручным правкам или анализу кода проведения Документа.КадровыйПереводСписком.