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