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