Как в табеле 1С:ЗУП 3.1 убрать вывод часов для кода «НН» (Неявка по невыясненным причинам)?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

В процессе ведения кадрового учета в программе 1С:Зарплата и Управление Персоналом 3.1 (1С:ЗУП) пользователи часто сталкиваются с требованиями кадровой службы привести печатные формы документов в строгое соответствие с внутренними регламентами или локальными трактовками законодательства. Одним из таких требований является отображение в Табеле учета рабочего времени (форма Т-13) буквенного кода неявки «НН» (Неявка по невыясненным причинам) без указания количества часов (например, просто «НН» вместо «НН 8»).

В этой статье мы подробно разберем, почему программа по умолчанию выводит часы для неявок, к каким критическим ошибкам в расчете зарплаты может привести ручная правка документов, и как решить эту задачу правильно и безопасно с технической точки зрения.

Почему в 1С:ЗУП 3.1 для кода «НН» вообще выводятся часы?

С точки зрения методологии учета времени в программных продуктах 1С, отображение часов для кода «НН» обусловлено несколькими важными факторами:

  1. Временный статус отсутствия: Код «НН» — это промежуточный статус. В дальнейшем, когда сотрудник предоставит оправдательные документы, этот период будет перерегистрирован. Если это окажется болезнью, то будет введен документ «Больничный лист», и код сменится на «Б» (при этом, согласно правилам Госкомстата, для целодневных болезней часы в табеле не указываются). Если же причина окажется неуважительной, будет зафиксирован прогул («ПР»). Прогул является плановым, но незаконно неотработанным временем, и для корректного уменьшения отработанного времени системе жизненно необходима информация о часах этого прогула.
  2. Внутрисменные неявки: Сотрудник может отсутствовать не весь день, а только часть смены (например, уйти на полдня по невыясненным причинам). В этом случае в табеле должна быть отражена комбинированная запись (например, «Явка 4 / НН 4»). Без указания часов программа физически не сможет понять, сколько времени сотрудник фактически отработал, а сколько отсутствовал.
  3. Вытеснение планового времени: Любая неявка в 1С:ЗУП вытесняет плановое рабочее время сотрудника. Чтобы программа при начислении зарплаты правильно уменьшила оклад (особенно при почасовой системе оплаты труда или при суммированном учете времени), ей необходимо знать точное количество неотработанных часов в этот день.

К каким последствиям приведет ручное исправление «НН 8» на «НН 0» в документе «Табель»?

Некоторые пользователи пытаются решить проблему «в лоб»: создают документ Табель, находят нужного сотрудника и вручную меняют значение в ячейке с «НН 8» на «НН 0» (или просто удаляют восьмерку, оставляя только буквенный код).

Проанализируем, к каким тяжелым последствиям в учете ведет такая ручная правка:

Как правильно решить задачу без вреда для учета?

Для того чтобы удовлетворить требования кадровой службы и при этом не сломать автоматические расчеты в программе, необходимо разделять данные в базе данных и данные в печатной форме.

В самой информационной базе (в документах отклонений и в документе Табель, если вы его используете) часы обязательно должны оставаться («НН 8»). Это залог правильного расчета зарплаты и среднего заработка. А вот в печатной форме отчета Т-13, которая выводится на экран и отправляется на принтер, мы можем настроить вывод информации так, как этого хотят кадровики — выводить исключительно символ «НН» без часов.

Рассмотрим два основных и безопасных варианта решения.

Вариант 1. Использование типового механизма отчетов без создания документов «Табель»

Разработчики фирмы «1С» настоятельно рекомендуют не плодить документы Табель без крайней необходимости. Документ Табель нужен только в сложных случаях (например, при суммированном учете рабочего времени, при наличии вечерних/ночных часов или при сложных графиках со сменным режимом). Во всех остальных случаях достаточно вводить только документы-отклонения (больничные, отпуска, отсутствия).

Сам отчет «Табель учета рабочего времени (Т-13)» рекомендуется формировать через меню Зарплата — Отчеты по зарплате — Т-13. В этом случае данные собираются динамически на основании кадровых документов. Однако и в стандартном отчете Т-13 для кода «НН» по умолчанию будут выводиться часы. Чтобы изменить это поведение на уровне печатной формы, перейдем ко второму варианту.

Вариант 2. Разработка внешней печатной формы или внешнего отчета

Самым правильным, безопасным и профессиональным решением является кастомизация печатной формы Т-13. Мы можем создать внешний отчет (или расширение конфигурации), который будет использовать стандартный алгоритм формирования табеля, но на этапе заполнения макета перед выводом на экран будет очищать часы (заменять «8» на пустое значение) именно для строк с кодом «НН».

Разберем этот процесс по шагам для разработчика:

  1. Создадим новый внешний отчет в конфигураторе 1С. За основу возьмем типовой отчет Т13 из состава конфигурации ЗУП 3.1.
  2. В модуле объекта внешнего отчета реализуем стандартную экспортную функцию для возможности подключения отчета через механизм дополнительных отчетов и обработок.

Посмотрим на пример кода функции регистрации внешнего отчета:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
    ПараметрыРегистрации.Вставить("Наименование", "Табель учета рабочего времени (без часов для НН)");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", "Альтернативный отчет Т-13, в котором для кода НН не выводятся часы.");
    
    Возврат ПараметрыРегистрации;

КонецФункции
  1. Проанализируем алгоритм заполнения макета в модуле отчета. В типовом механизме за вывод ячеек времени отвечает компоновка данных или программный обход формируемой таблицы. Нам необходимо найти фрагмент кода, где в ячейку табеля выводится значение часов.
  2. Внесем изменения в логику вывода. Перед выводом показателей в область макета добавим условие: если вид времени равен "НН" (или предопределенному элементу справочника ВидыИспользованияРабочегоВремени.НеявкаПоНевыясненнымПричинам), то значение часов выводить не нужно (передавать пустую строку вместо числа часов).

Примерный фрагмент кода для модификации вывода ячейки может выглядеть следующим образом:


// Предположим, ПеременнаяКодВидаВремени содержит строковый код ("Я", "НН", "ОТ" и т.д.)
// А ПеременнаяЧасы содержит число часов неявки или явки

Если ПеременнаяКодВидаВремени = "НН" Тогда
    // Обнуляем вывод часов только для представления в печатной форме
    ЗначениеЧасовДляВывода = ""; 
Иначе
    ЗначениеЧасовДляВывода = Формат(ПеременнаяЧасы, "ЧГ=0");
КонецЕсли;

// Далее выводим подготовленные параметры в область макета Т-13

После подготовки внешнего отчета сохраним его на диске и подключим в базу данных через раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки. Теперь кадровики смогут формировать красивый табель, соответствующий их требованиям, а расчетчики будут спокойны за точность начислений, ведь в самой базе данных вся информация о часах останется в целости и сохранности.

← На главную