Почему в отчете Табель и расчете зарплаты в 1С:ЗУП 3.1 отображаются не все дни месяца?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При ведении учета рабочего времени и начислении заработной платы в программе 1С:Зарплата и управление персоналом 3.1 пользователи и разработчики периодически сталкиваются с ситуацией: в проведенном документе Табель данные занесены за весь период (например, с 1 по 15 число), в регистре накопления Данные табельного учета рабочего времени сотрудников все движения присутствуют, однако унифицированная печатная форма или отчет Табель (Т-13) выводит рабочие часы только за часть периода (например, с 1 по 5 число), а расчет зарплаты или аванса игнорирует оставшиеся дни.

Разберем внутреннее устройство подсистемы учета времени, выясним, какую роль в этом процессе играет независимый регистр сведений Графики работы по видам времени, почему в нем «застревают» устаревшие данные и как исправить ошибки расчета.

Механика работы регистра сведений «Графики работы по видам времени»

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

Рассмотрим главные особенности его архитектуры:

  1. Составной тип измерения «ГрафикРаботы»: данное измерение может принимать значения ссылки на справочник Графики работы сотрудников или прямой ссылки на справочник Сотрудники. Когда для конкретного сотрудника регистрируются индивидуальные отклонения или вводится документ Табель, программа при расчете формирует персональные строки, где измерение ГрафикРаботы заполняется ссылкой на самого сотрудника.
  2. Отсутствие регистратора: регистр является независимым. Записи в него вносятся не движениями документов учета времени, а программно в момент проведения расчетных документов (например, Начисление за первую половину месяца, Начисление зарплаты и взносов, межрасчетные начисления) либо при подготовке данных для отчетов.
  3. Приоритет чтения данных: при расчете начислений и формировании отчета Т-13 система в первую очередь обращается к персональным записям в регистре Графики работы по видам времени за соответствующий Месяц и ПериодРегистрации. Если персональный кэш найден, запрос берет данные из него, не считывая повторно исходные записи из регистра накопления Данные табельного учета рабочего времени сотрудников.

Причины возникновения расхождений

Проанализируем типовые ситуации, из-за которых в кэширующем регистре формируется неполный срез времени:

  1. Нарушение последовательности проведения документов: если до проведения итогового табеля был рассчитан и проведен межрасчетный документ (больничный, командировка, отпуск) или расчет аванса за короткий период, процедура расчета успела зафиксировать в регистре сведений срез времени только по дату этого документа. Последующее проведение документа Табель вносит движения в регистр накопления, но не очищает уже сформированный независимый кэш.
  2. Программная загрузка табелей через внешние обработки (COM, HTTP-сервисы, расширения): сторонние обработки часто формируют и проводят документ Табель в объектной модели, не вызывая служебные модули перерасчета зарплаты и очистки кэша рабочего времени.
  3. Кадровые документы и состояния: наличие зарегистрированных документов отклонений или записей в регистре сведений Состояния сотрудников (например, непроведенное увольнение или неявка) вытесняет табельные данные в итоговом расчетном запросе.

Способ 1. Ручное восстановление последовательности документов

Если проблема носит единичный характер и возникла в пользовательском режиме, выполним следующую пошаговую последовательность действий:

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

Способ 2. Очистка кэша регистра сведений через внешнюю обработку или код

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

Рассмотрим пример кода на встроенном языке 1С для программного удаления устаревших персональных записей по сотруднику:


// Очистка персональных записей сотрудника в регистре сведений "Графики работы по видам времени"
НаборЗаписей = РегистрыСведений.ГрафикиРаботыПоВидамВремени.СоздатьНаборЗаписей();

// Устанавливаем отбор по сотруднику и месяцу учета
НаборЗаписей.Отбор.ГрафикРаботы.Установить(СсылкаНаСотрудника);
НаборЗаписей.Отбор.Месяц.Установить(НачалоМесяца(ПериодРегистрации));

// Записываем пустой набор для удаления записей кэша
НаборЗаписей.Записать(Истина);

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

Способ 3. Доработка внешней обработки загрузки табелей

Если табели импортируются из сторонней учетной системы через COM-соединение, оптимизируем алгоритм загрузки следующим образом:

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

Способ 4. Переход на документ «Индивидуальный график»

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

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

← На главную