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

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

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

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

Почему изменилась логика заполнения табеля в ЗУП 3.1?

Для начала проанализируем ситуацию с точки зрения методологии учета. В старой редакции 2.5 в печатной форме Т-13 в колонках неявок выводилось количество рабочих смен и часов, приходящихся на период отсутствия. Это облегчало ручную сверку баланса рабочего времени: сумма фактически отработанных дней и дней отсутствия всегда равнялась норме по графику сотрудника.

В редакции ЗУП 3.1 разработчики фирмы 1С жестко разделили логику учета в зависимости от вида начисления:

  1. Календарные дни: Такие отсутствия, как ежегодный основной отпуск (код ОТ) или период временной нетрудоспособности (код Б), рассчитываются и оплачиваются исходя из календарных дней. Поэтому программа в итогах табеля выводит именно календарные дни отсутствия (например, 7 или 14 дней). Это методологически верно, так как оплата производится за каждый день этого периода.
  2. Рабочие дни: Отсутствия, которые оплачиваются по среднему заработку за рабочие дни (например, командировки — код К), или неявки по невыясненным причинам (код НН) выводятся в итогах табеля по рабочим дням графика сотрудника.

Попытка изменить это поведение «в лоб» через настройки видов времени или начислений ни к чему не приведет. Алгоритм заполнения печатной формы Т-13 жестко зашит в программном коде конфигурации.

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

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

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

Этот отчет находится в разделе Кадры — Кадровые отчеты или Зарплата — Отчеты по зарплате. Давайте разберем по шагам, как его настроить:

  1. Откроем отчет Отсутствия сотрудников.
  2. Нажмем кнопку Настройки..., а затем переключим вид в режим Расширенный.
  3. На вкладке Поля и сортировки найдем доступные поля. Данный отчет изначально умеет выводить как календарные дни отсутствия, так и рабочие дни/часы по графику сотрудника.
  4. Поставим флажки напротив полей Дней отсутствия (по графику) и Часов отсутствия (по графику). Поля с календарными днями можно отключить или оставить для сравнения.
  5. На вкладке Структура настроим группировку по подразделениям и сотрудникам.
  6. Нажмем кнопку Закрыть и сформировать.

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

Способ 2. Создание внешней печатной формы или внешнего отчета

Если вариант со стандартным кадровым отчетом не устраивает руководство и требуется именно печатная форма Т-13, то правильным техническим решением будет создание внешнего отчета или внешней печатной формы. Это позволит избежать изменения типовой конфигурации и не создаст проблем при последующих обновлениях 1С:ЗУП.

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

В самом отчете потребуется скорректировать запрос получения данных о времени сотрудников. Вместо простого суммирования дней из регистров фактически отработанного времени нам нужно будет соединить таблицу отсутствий с графиком работы сотрудника. Рассмотрим пример кода, который может использоваться в схеме компоновки данных (СКД) внешнего отчета для расчета рабочих дней неявок:


// Фрагмент запроса для расчета рабочих дней неявок по графику сотрудника
ВЫБРАТЬ
	ДанныеУчетаВремени.Сотрудник КАК Сотрудник,
	ДанныеУчетаВремени.ВидВремени КАК ВидВремени,
	СУММА(ВЫБОР
			КОГДА ГрафикиРаботы.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК РабочиеДниНеявок
ИЗ
	РегистрНакопления.ДанныеВремениДляРасчетаСреднегоЗаработка (Период) КАК ДанныеУчетаВремени
	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеГрафикаРаботыСотрудников КАК ГрафикиРаботы
		ПО ДанныеУчетаВремени.Сотрудник = ГрафикиРаботы.Сотрудник
		И ДанныеУчетаВремени.Дата = ГрафикиРаботы.Дата
ГДЕ
	ДанныеУчетаВремени.ВидВремени В (&СписокВидовВремениНеявок)
СГРУППИРОВАТЬ ПО
	ДанныеУчетаВремени.Сотрудник,
	ДанныеУчетаВремени.ВидВремени

Этот код позволяет сопоставить каждый день неявки с индивидуальным графиком работы сотрудника и посчитать только те дни, которые по графику должны были быть рабочими. Модифицированный результат выводится в итоговые колонки макета Т-13.

Способ 3. Использование расширения конфигурации

Наиболее современный и технологичный способ решения задачи — использование расширения конфигурации. Этот механизм позволяет перехватить процедуру формирования печатной формы непосредственно в момент вызова команды печати из документа Табель.

Преимущество расширения в том, что пользователю не придется заходить в меню «Дополнительные отчеты». Он будет нажимать стандартную кнопку Печать — Табель учета рабочего времени (Т-13) в документе, но программа благодаря расширению сформирует измененную форму с пересчитанными рабочими днями неявок.

Для реализации расширения программисту необходимо:

  1. Создать новое расширение в конфигураторе и снять с него признак безопасного режима (при необходимости работы с файловой системой).
  2. Добавить в расширение модуль менеджера документа Табель или модуль отчета, отвечающего за формирование Т-13.
  3. Применить аннотацию &Вместо или &После к процедуре печати или заполнения табличного документа.
  4. Переписать алгоритм подсчета итогов по видам времени ОТ, Б и др., обратившись к регистру сведений ДанныеГрафикаРаботыСотрудников.

Важное предупреждение о рисках изменения документа «Табель»

При решении подобных задач крайне важно разграничивать печатную форму и данные для расчета зарплаты. Ни в коем случае нельзя корректировать сам документ Табель в информационной базе (то есть вручную уменьшать количество дней отсутствия в строках документа до рабочих дней).

Если вы принудительно укажете в документе Табель, что сотрудник был на больничном 5 рабочих дней вместо 7 календарных, то программа 1С:ЗУП 3.1 при последующем начислении зарплаты произведет неверный расчет. Начисление по больничному листу или отпуску будет урезано, так как расчетные механизмы программы жестко завязаны на календарные дни, зарегистрированные в кадровых документах-отклонениях.

Именно поэтому любые корректировки должны касаться исключительно визуального представления данных (макета печатной формы Т-13 или внешнего отчета) и не должны затрагивать сами данные регистров накопления и документов расчета.

← На главную