Почему в ЗУП 3.1 в регистре «Графики работы по видам времени» появляются странные записи с признаком «План»?

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

Регистр сведений Графики работы по видам времени в программе «1С:Зарплата и управление персоналом 3.1» является одним из наиболее закрытых и сложных для понимания механизмов. Часто пользователи и разработчики сталкиваются с ситуацией, когда в этом регистре появляются дублирующиеся записи с признаком «План = Истина», при этом период регистрации записи может быть меньше текущего месяца (например, в сентябре появляется запись с периодом регистрации «Август»). Разберем подробно, почему это происходит, как работает этот механизм и как найти причину в конкретной базе.

Механизм «Расчетного буфера»

Проанализируем природу этого регистра. Важно понимать, что он не является первичным источником данных, как, например, справочник ГрафикиРаботы. Это вспомогательный, технический регистр, который система использует в качестве «виртуального графика». ЗУП собирает данные из различных источников (основной график, индивидуальный график, табель, документы-отклонения) и записывает их в этот регистр «на лету» для выполнения конкретных расчетов.

Заметим ключевую особенность: записи в этом регистре могут создаваться не только при проведении документов, но и в момент заполнения или открытия документа Начисление зарплаты и взносов. Программа «примеряет» плановые данные к фактическим отклонениям, чтобы корректно рассчитать норму и отработанное время.

Причины появления записей с периодом регистрации меньше текущего месяца

Рассмотрим ситуацию, когда период регистрации (например, август) оказывается меньше месяца начисления (сентябрь). Это часто вызывает недоумение, так как кажется, что данные «прилетели» из прошлого. Выделим основные причины такого поведения системы:

  1. Сторнирование и перерасчеты. Если в августе был введен документ (например, Больничный лист или Отпуск), который затрагивает дни сентября или инициирует перерасчет за прошлые периоды, система создает записи с августовской регистрацией для сентября. Это необходимо, чтобы при итоговом расчете зарплаты программа опиралась на те данные, которые были актуальны на момент регистрации изменения.
  2. Использование территорий и особых условий труда. Проанализируем влияние кадрового учета. Если сотрудник в течение месяца перемещается между различными территориями (используется функционал Учет территорий в КОРП-версии), система обязана разделить его график на части. Для каждой такой «части» создается своя запись с признаком План = Истина. Даже если сам график не менялся, привязка к новой территории заставляет систему дублировать записи плана для корректного распределения затрат.
  3. Внутрисменные отклонения. Рассмотрим влияние внутрисменных неявок или работы в праздники. Если введен документ Отсутствие на несколько часов, система может переписать записи плана на этот день. Вместо одной записи «Явка — 8 часов» создаются две: например, «Явка — 5 часов» и «Неявка — 3 часа». При определенных условиях старая запись плана (целостная) может не удалиться сразу, что выглядит в регистре как дубль.

Технический анализ формирования записей (уровень кода)

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

За запись данных отвечает функция ЗаполнитьРегистрРассчитанныхДанных(ВыборкаДляЗаполнения). Она вызывается из процедуры СформироватьЗаписиРабочегоВремениСотрудников. Основным «двигателем» процесса является обработка МенеджерДанныхУчетаВремениСотрудников, в которой запускается процедура ПриПолученииПодневныхДанныхУчетаВремени.

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


// Фрагмент логики из модуля расчета
Если ТаблицаСотрудников.Количество() > 0 Тогда
    // Вызов формирования записей в техническом регистре
    УчетРабочегоВремениРасширенный.СформироватьЗаписиРабочегоВремениСотрудников(ТаблицаСотрудников);
КонецЕсли;

Важно подчеркнуть, что запись в регистр происходит до проведения документа начисления. Система сначала подготавливает данные в регистре, а затем на их основании рассчитывает показатели в табличных частях документа. При этом удаление старых записей из этого регистра часто возлагается на документы-отклонения при их распроведении. Если в этот момент произошел программный сбой или транзакция прервалась, в регистре могут остаться «мусорные» записи.

Как диагностировать и исправить проблему?

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

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

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

← На главную