Настройка вахтового метода работы в программных продуктах 1С всегда вызывает множество вопросов у практикующих бухгалтеров и программистов. Особенно остро эта проблема стоит в устаревших, но до сих пор активно используемых конфигурациях, таких как 1С:Зарплата и Управление Персоналом 2.5. В отличие от современной версии 3.1, где многие механизмы автоматизированы «из коробки», редакция 2.5 требует от разработчика и расчетчика глубокого понимания архитектуры регистров и ограничений платформы.
В рамках этой статьи мы подробно разберем, как правильно настроить вахтовый метод, оплату дней в пути, надбавку за вахту и время изоляции. Выясним причину, по которой новые начисления не попадают автоматически в документы расчета, и найдем оптимальные пути решения этой проблемы как с помощью типового функционала, так и с использованием минимальных доработок.
---
Проанализируем ситуацию, с которой часто сталкиваются пользователи: в табеле учета рабочего времени проставляется специализированное буквенное обозначение (например, «Д» — дни в пути или «ВИ» — вахтовая изоляция), но при автоматическом заполнении документа Начисление зарплаты сотрудникам строки по этим начислениям не появляются. Почему так происходит?
Разберем по шагам внутреннее устройство обеих конфигураций:
Табель или ДанныеДляРасчетаЗарплаты и при обнаружении соответствующего кода автоматически добавляет строку в документ начисления.НачислениеЗарплатыРаботникам жестко привязан к плановым начислениям сотрудников. Чтобы вид расчета попал в табличную часть документа автоматическим заполнением, он обязательно должен быть назначен сотруднику как плановый. Сделать это можно с помощью документов ПриемНаРаботуВОрганизацию, КадровоеПеремещениеОрганизаций или ВводСведенийОПлановыхНачисленияхРаботниковОрганизаций.Если начисление назначено сотруднику как плановое, программа при заполнении документа НачислениеЗарплатыРаботникам добавит строку. Если в текущем месяце у сотрудника не было дней по этому виду расчета в табеле, результат просто рассчитается как нулевой, что является абсолютно корректным с точки зрения методологии системы.
---
Часто на предприятиях одновременно работают сотрудники с суммированным учетом рабочего времени, но одни трудятся на вахте, а другие — по обычному графику. Для корректного отражения затрат и аналитики их необходимо разделять.
Рассмотрим стандартный, методологически верный подход в ЗУП 2.5, который позволяет избежать написания сложных подписок на события и переопределения движений в регистре накопления РабочееВремя:
Вместо использования одного предопределенного вида расчета ОкладПоЧасам и последующего искусственного изменения вида времени «ВМ» на «Я» при проведении табеля, мы настроим два разных вида расчета:
При такой настройке в табеле вахтовикам напрямую проставляется код «ВМ». При автозаполнении документа начисления зарплаты система проанализирует плановое начисление сотрудника, увидит привязанный вид времени «ВМ», обратится к данным табеля по этому коду и рассчитает сумму оклада. Никаких доработок кода и рисков искажения регистров при этом не возникает.
---
Согласно Трудовому кодексу РФ, каждый день нахождения в пути к месту работы и обратно, предусмотренный графиком работы на вахте, оплачивается в размере дневной тарифной ставки или части оклада. Посмотрим на практический пример настройки этого начисления.
Создадим новое основное начисление Оплата дней в пути со следующими параметрами:
ТарифнаяСтавкаМесячная / НормаВремениВЧасах * ВремяВЧасах (или вариант с использованием дневной ставки: ТарифнаяСтавкаДневная * ВремяВДнях).Назначим сотрудникам это начисление в качестве планового. Теперь при вводе в табеле буквенного кода «ДП» программа автоматически определит количество часов пути и произведет расчет по формуле.
---
Надбавка за вахтовый метод работы выплачивается за каждый календарный день пребывания на вахте и за фактические дни нахождения в пути. Размер надбавки обычно фиксирован (например, 100 рублей за день).
Главная сложность в ЗУП 2.5 заключается в том, что один вид расчета может быть привязан на вкладке «Время» только к одному основному виду времени. А выплачивать надбавку нам нужно и за рабочие дни на вахте («ВМ»), и за дни в пути («ДП»).
Разберем, как решить эту задачу без программирования. Для этого мы разделим компенсацию на два плановых начисления:
ВремяВДнях * РазмерНадбавкиЗаВахтуВремяВДнях * РазмерНадбавкиЗаВахтуПоказатель РазмерНадбавкиЗаВахту заводится как постоянный показатель схем начисления. Оба начисления назначаются сотрудникам как плановые. При заполнении табеля программа сама определит количество дней «ВМ» и «ДП», подставит их в соответствующие строки документа начисления и корректно рассчитает общую сумму надбавки.
---
В современных реалиях часто возникает необходимость оплачивать сотрудникам время нахождения на обязательной изоляции (обсервации) перед заездом на вахту. Период изоляции должен оплачиваться в размере не ниже дневной тарифной ставки.
Настроим вид расчета Вахтовая изоляция по аналогии с оплатой дней в пути:
ТарифнаяСтавкаМесячная / НормаВремениВЧасах * ВремяВЧасах.ВводСведенийОПлановыхНачисленияхРаботниковОрганизаций, где указываем конкретный период нахождения в обсерваторе.---
Настраивая новые виды расчетов, критически важно правильно определить их налоговый статус и влияние на другие начисления (Районный коэффициент и Северную надбавку):
---
Рассмотрим альтернативный вариант автоматизации, предложенный участниками форума, если расчетный отдел категорически отказывается вводить дополнительные плановые начисления кадровыми документами. Данный подход особенно актуален для крупных предприятий с большим штатом вахтовиков.
Мы можем производить начисление дней в пути и надбавок через документ Регистрация разовых начислений работников организаций. По умолчанию этот документ не умеет автоматически считывать данные из табелей для произвольных видов времени. Однако мы можем разработать внешнюю обработку заполнения табличной части документа или внести небольшое изменение в модуль объекта документа.
Проанализируем пример кода на языке 1С, который выбирает отработанные дни в пути («ДП») из регистра накопления РабочееВремя за расчетный месяц и заполняет документ разовых начислений:
Процедура ЗаполнитьДниВПутиПоТабелю(ДокументОбъект, ПериодРегистрации) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ПериодРегистрации));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(PeriodРегистрации));
Запрос.УстановитьПараметр("ВидВремениДП", Справочники.КлассификаторИспользованияРабочегоВремени.НайтиПоКоду("ДП"));
Запрос.Текст =
"ВЫБРАТЬ
| РабочееВремя.Сотрудник КАК Сотрудник,
| РабочееВремя.Физлицо КАК Физлицо,
| СУММА(РабочееВремя.Дней) КАК КоличествоДней,
| СУММА(РабочееВремя.Часов) КАК КоличествоЧасов
|ИЗ
| РегистрНакопления.РабочееВремя КАК РабочееВремя
|ГДЕ
| РабочееВремя.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И РабочееВремя.ВидИспользованияРабочегоВремени = &ВидВремениДП
|СГРУППИРОВАТЬ ПО
| РабочееВремя.Сотрудник,
| РабочееВремя.Физлицо";
Выборка = Запрос.Выполнить().Выбрать();
ДокументОбъект.Начисления.Очистить();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ДокументОбъект.Начисления.Добавить();
НоваяСтрока.Сотрудник = Выборка.Sotrudnik;
НоваяСтрока.Физлицо = Выборка.Физлицо;
НоваяСтрока.Начисление = ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоНаименованию("Оплата дней в пути");
НоваяСтрока.Показатель1 = Выборка.КоличествоДней; // или КоличествоЧасов в зависимости от формулы
НоваяСтрока.ДатаНачала = НачалоМесяца(ПериодРегистрации);
НоваяСтрока.ДатаОкончания = КонецМесяца(ПериодРегистрации);
КонецЦикла;
КонецПроцедуры
Использование такой обработки позволяет полностью исключить ручной ввод данных бухгалтером. Расчетчик создает один документ РегистрацияРазовыхНачисленийРаботниковОрганизаций в месяц, нажимает кнопку заполнения по табелю, система мгновенно считывает все дни пути, надбавки или изоляции и рассчитывает итоговые суммы.