В практике автоматизации кадрового учета на базе 1С:Зарплата и Управление Персоналом 3.1 (ЗУП) часто возникает специфическая задача: необходимо оплачивать сотруднику время, которое не совпадает с его основным графиком. Например, это могут быть дополнительные часы по «внутреннему» соглашению, которые должны фиксироваться в программе ежедневно, но при этом они могут пересекаться с выходными днями по основному графику и не должны увеличивать отработанное время в регламентированном табеле Т-13.
В этой статье мы разберем, почему стандартный подход через создание нового вида времени часто приводит к ошибкам, и рассмотрим наиболее эффективные способы реализации «параллельной» оплаты труда.
Рассмотрим ситуацию, с которой сталкиваются многие специалисты. При создании нового элемента в справочнике Виды использования рабочего времени (например, с кодом «Ф») и попытке привязать его к начислению, программа начинает вести себя строго в соответствии с заложенной логикой учета времени:
Т-13. Если задача стоит «не светить» эти часы в официальной отчетности, использование вида времени становится проблемой.Данные для расчета зарплаты без привязки к графику, документ Начисление зарплаты и взносов может проигнорировать эти данные, так как не увидит связи между временем и сотрудником.Проанализируем два основных способа решения задачи: через использование показателей (рекомендуемый) и через техническую доработку проверок (путь автора темы).
Этот способ является наиболее «чистым» с точки зрения методологии 1С, так как он не ломает логику учета времени и не требует программирования. Вместо того чтобы регистрировать время как Вид времени, мы будем регистрировать его как числовой показатель.
Шаг 1. Создание показателя расчета зарплаты
Перейдем в меню «Настройка» — «Показатели расчета зарплаты» и создадим новый показатель:
ДопЧасыУпр.Шаг 2. Настройка шаблона ввода данных
Чтобы иметь возможность вводить эти часы ежедневно (с разбивкой по дням), нам понадобится специальный шаблон. Перейдем в «Настройка» — «Шаблоны ввода данных»:
ДопЧасыУпр.Теперь в разделе «Зарплата» — «Данные для расчета зарплаты» мы сможем создавать документы, где в табличной части для каждого сотрудника можно проставить часы в нужные календарные даты, независимо от того, выходной это или рабочий день по основному графику.
Шаг 3. Настройка начисления
Теперь создадим само начисление:
Оклад * ДопЧасыУпр / НормаЧасов
Если бизнес-заказчик настаивает на использовании именно Вида времени (например, чтобы видеть буквенные обозначения в каких-то внутренних отчетах), придется столкнуться с жесткими проверками ЗУП на пересечение периодов. Проанализируем, как это реализовал автор темы.
Для того чтобы система позволила ввести вид времени «Ф» (Факт) одновременно с выходным «В», необходимо внести изменения в логику проведения документов График работы или Табель. Это делается через механизм расширений.
Выясним причину ошибки: в общем модуле УчетВремени существуют функции проверки пересечений. Нам необходимо создать прерывание в процедуре, отвечающей за контроль целосменных интервалов. Пример логики кода в расширении может выглядеть так:
&Вместо("ПроверитьПересечениеВидовВремени")
Процедура Расш1_ПроверитьПересечениеВидовВремени(ДанныеВремени, Отказ)
// Стандартная логика проверки
// ...
// Наш кусок кода: если вид времени равен "Ф", игнорируем ошибку пересечения с "В"
Если ДанныеВремени.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Ф") Тогда
Возврат; // Просто выходим из проверки для нашего вида времени
КонецЕсли;
КонецПроцедуры
После такой доработки вы сможете указывать в графике или табеле комбинации вида Я 8 / Ф 4 или даже В / Ф 8. Однако помните, что это приведет к появлению буквы «Ф» в форме Т-13. Чтобы ее оттуда убрать, придется дополнительно корректировать макет или код формирования отчета Т-13.
Рассмотрим ситуацию: начисление рассчитано верно, но бухгалтер не хочет, чтобы в расчетном листке в колонке «Отработано (оплачено)» фигурировали часы по виду «Ф», так как они путают сотрудников. Выясним, как это настроить штатными средствами:
ДопЧасыУпр, а не предопределенные показатели типа ВремяВЧасах, то при правильной настройке вкладки «Учет времени» (выбор варианта «За уже оплаченное время») часы не будут попадать в общую сумму отработанного времени по сотруднику.ДопЧасыУпр. Если в нем не стоит галочка «Является временем», то система будет воспринимать его просто как числовой коэффициент, что гарантирует его отсутствие в графах отработанных дней и часов в отчетах.Подводя итог, можно сказать, что для реализации «параллельной» зарплаты в 1С:ЗУП 3.1 наиболее эффективным является путь использования Показателей и Шаблонов ввода данных. Это избавляет от необходимости кодить расширения, не портит регламентированную отчетность и позволяет вводить данные с любой детализацией.
Метод с использованием видов времени и расширений стоит применять только в крайнем случае, когда буквенное обозначение времени критически важно для смежных подсистем или специфических управленческих отчетов, построенных на регистрах учета времени.