Как в ЗУП 3.1 начислять праздничные и сверхурочные из приказов при наличии документа Табель?

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

В типовой логике программы 1С:Зарплата и управление персоналом 3.1 документ Табель обладает наивысшим приоритетом. Если этот документ введен, система считает его единственным и окончательным источником данных об отработанном времени за месяц. Все сведения из приказов на работу в выходные, праздничные дни или сверхурочно игнорируются, если они не продублированы в самом табеле. Разберем, почему так происходит и какими способами можно реализовать требование расчетчиков: брать «Явки» из табеля, а «Праздничные» — из соответствующих приказов.

Анализ механизмов учета времени

Прежде всего, проанализируем, как программа собирает данные для расчета. При проведении документа Табель записи формируются в регистре накопления Данные оперативного учета рабочего времени. В программном коде общего модуля УчетРабочегоВремени реализована жесткая иерархия источников. Если система находит записи табеля по конкретному сотруднику, она прекращает анализ других документов (графиков, индивидуальных графиков и приказов об отклонениях) для этого периода.

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

Способ 1. Использование произвольных показателей (без доработки)

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

  1. Создадим новый показатель расчета зарплаты, например, ЧасыПраздничныеИзПриказов.
  2. Настроим шаблон ввода данных в разделе «Настройка» — «Шаблоны ввода исходных данных», чтобы вводить эти часы документом Данные для расчета зарплаты.
  3. Создадим новое начисление (или отредактируем копию типового), где в формуле вместо стандартного показателя ВремяВПраздники будет использоваться наш новый показатель.

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

Способ 2. Использование индивидуальных графиков

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

Способ 3. Техническая доработка через расширение

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

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

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


// В типовом запросе данные табеля вытесняют всё остальное. 
// Необходимо изменить условие так, чтобы виды времени 
// "Праздничные" (ПН) и "Сверхурочные" (С) 
// объединялись (ОБЪЕДИНИТЬ ВСЕ) с данными табеля, 
// даже если табель существует.

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

Способ 4. Работа с регистром «Параметры зарегистрированных данных»

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

Рекомендации по внедрению

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

  1. Оцените трудозатраты. Любая доработка механизмов учета времени в ЗУП 3.1 чревата сложностями при обновлениях, так как модуль УчетРабочегоВремени — один из самых часто обновляемых фирмой 1С.
  2. Протестируйте вариант с Индивидуальными графиками. Это наиболее «чистый» способ с точки зрения типовой методологии.
  3. Если доработка неизбежна, выбирайте вариант с автоматическим заполнением документа Табель данными из приказов. Это сохранит прозрачность учета: в печатной форме табеля и в регистрах данные будут совпадать, что исключит ошибки в будущем при расчете среднего заработка или формировании статистической отчетности.
← На главную