Как включить надбавки в расчет стоимости часа для доплаты за ночные часы в 1С:ЗКБУ 1.0 и 1С:ЗУП 2.5

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

В медицинских и других бюджетных учреждениях часто возникает задача включить в расчетную базу для оплаты ночных часов не только чистый оклад (тарифную ставку), но и различные ежемесячные надбавки, такие как надбавка за вредность, надбавка за непрерывный стаж, квалификационную категорию и другие плановые начисления. В редакциях программ 1С:Зарплата и кадры бюджетного учреждения 1.0 (ЗКБУ) и 1С:Зарплата и управление персоналом 2.5 (ЗУП) стандартный показатель ТарифнаяСтавкаЧасовая жестко рассчитывается только на основе основного оклада сотрудника.

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

Почему возникает предупреждение о категории начисления «Первичное»?

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

«Рекомендуется установить категорию начислений "Первичное", т.к. для вида расчета не заданы базовые начисления или для базовых начислений не заданы категории начисления! Записать вид расчета?»

Давайте выясним причину этого поведения платформы. Логика расчетного механизма 1С построена на строгом соответствии формулы расчета и настроек зависимости начисления:

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

Более того, сам показатель ТарифнаяСтавкаЧасовая (или пересчитанный оклад в часовую ставку) в программном коде ЗКБУ 1.0 собирает данные исключительно из регистра сведений ПлановыеНачисленияРаботниковОрганизаций только по основному виду расчета (окладу), игнорируя любые другие плановые надбавки, закрепленные за сотрудником.

---

Решение 1. Обходной путь в пользовательском режиме (без программирования)

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

Рассмотрим по шагам процесс создания и настройки такого начисления:

  1. Перейдем в меню Расчет зарплаты — Настройка расчета — Основные начисления и создадим новый элемент.
  2. Назовем его, например, «Доплата за ночные часы (от базы с надбавками)».
  3. На вкладке «Расчеты» установим переключатель в положение «Произвольная формула расчета» и нажмем ссылку «Изменить формулу расчета».
  4. В окне редактора формул составим следующее выражение:

Результат = (РасчетнаяБаза / НормаВремениВЧасах) * (ПроцентДоплаты / 100) * ВремяВЧасах

Разберем подробнее, как работает эта формула:

Продолжим настройку начисления на других вкладках:

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

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

---

Решение 2. Модификация алгоритма через Конфигуратор

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

Проанализируем ситуацию в конфигураторе:

  1. Основные механизмы расчета и пересчета тарифных ставок в конфигурациях ЗКБУ 1.0 и ЗУП 2.5 сосредоточены в общем модуле ПроведениеРасчетов (а также в специализированных процедурах модулей документов начисления зарплаты).
  2. За пересчет месячного оклада в часовую ставку отвечает отдельная экспортная функция (например, ПересчитатьМесячныйТарифВЧасовой или аналогичная в зависимости от релиза вашей программы).
  3. Внутри этой функции программа обращается к виртуальной таблице среза последних или среза периодов регистра сведений ПлановыеНачисленияРаботниковОрганизаций.

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

  1. Найти запрос, который выбирает действующий оклад сотрудника по его основному рабочему месту.
  2. Модифицировать данный запрос так, чтобы из регистра плановых начислений выбирался не один предопределенный вид расчета (оклад), а массив видов расчетов, формирующих совокупную ставку.
  3. Ниже приведен концептуальный пример изменения логики запроса для получения совокупной тарифной ставки в модуле проведения расчетов:

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

СписокВидов = Новый СписокЗначений;
СписокВидов.Добавить(ПланыВидовРасчета.ОсновныеНачисления.ОкладПоДням);
СписокВидов.Добавить(ПланыВидовРасчета.ОсновныеНачисления.НадбавкаЗаВредность); // Добавляем вредность
СписокВидов.Добавить(ПланыВидовРасчета.ОсновныеНачисления.НадбавкаЗаСтаж);     // Добавляем стаж

Запрос.УстановитьПараметр("Период", Регистратор.ПериодРегистрации);
Запрос.УстановитьПараметр("Сотрудник", ТекущийСотрудник);
Запрос.УстановитьПараметр("СписокВидовРасчета", СписокВидов);

ТаблицаТарифов = Запрос.Выполнить().Выгрузить();
СовокупныйТариф = ТаблицаТарифов.Итог("Тариф");

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

Предупреждение: Изменение общего модуля ПроведениеРасчетов влияет на всю систему в целом. Помните, что пересчет стоимости часа по аналогичной схеме может использоваться также при расчете оплаты сверхурочных часов и праздничных дней. Убедитесь, что включение надбавок в стоимость часа для этих видов расчета согласуется с локальными нормативными актами вашего учреждения и требованиями ТК РФ.

---

Как данная проблема решена в современных конфигурациях (ЗКГУ 3.1 и ЗУП 3.1)

Если ваше учреждение планирует переход на современные программные продукты платформы «1С:Предприятие 8.3», вам будет полезно узнать, что в редакциях 3.1 эта проблема решена полностью на уровне типового функционала без необходимости программирования.

В ЗУП 3.1 и ЗКГУ 3.1 реализован механизм под названием «Совокупная тарифная ставка». Работает он следующим образом:

  1. Пользователь переходит в меню Настройка — Расчет зарплаты.
  2. В блоке настроек «Показатели, определяющие состав совокупной тарифной ставки» достаточно просто установить флажки напротив тех показателей (надбавок), которые должны увеличивать стоимость часа.
  3. При расчете любых начислений, использующих показатели стоимости часа (ночные, праздничные, сверхурочные), программа автоматически просуммирует оклад и выбранные плановые надбавки сотрудника и разделит их на норму времени.

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

← На главную