При оформлении коллективного сдельного наряда (документ Данные для расчета зарплаты с видом операции сдельных работ) пользователи часто сталкиваются с ситуацией: в документе указаны отработанные дни и часы, а также КТУ сотрудников, однако общая сумма наряда распределяется только пропорционально дням (или дням с учетом КТУ). При изменении количества часов сумма начислений сотрудникам не меняется. Разберем подробно, почему типовой механизм программы ведет себя именно так, и рассмотрим все доступные варианты настройки распределения по часам.
Проанализируем внутреннее устройство типового алгоритма распределения бригадного наряда в 1С:Зарплата и управление персоналом 3.1. В типовой конфигурации распределение суммы между исполнителями опирается на два ключевых параметра:
Начисления для каждого вида расчета хранится служебный реквизит ВремяВЧасах. Значение Истина устанавливается автоматически только для тех начислений, в формуле которых задействованы показатели времени в часах (например, ОтработаноЧасов, НормаЧасов). Если вид расчета имеет стандартную формулу СдельныйЗаработок, флаг ВремяВЧасах равен Ложь, и программа считает начисление чисто «дневным».ВремяВЧасах в процедуре распределения запускается только в том случае, если в шаблоне документа включена опция Пропорционально размерам тарифных ставок. Если этот флаг снят, типовая конфигурация всегда рассчитывает долю сотрудника исходя из отработанных дней.Таким образом, для чистого сдельного наряда без тарифных ставок система считает базовой единицей измерения рабочую смену (день), полагая, что сотрудники с разной продолжительностью смен соизмеряются днями.
Рассмотрим по шагам, как настроить программу типовыми средствами, чтобы наряд распределялся пропорционально часам и КТУ:
ВремяВЧасах, изменим формулу начисления, добавив нулевое влияние часового показателя:
СдельныйЗаработок + ОтработаноЧасов * 0
Такая корректировка не искажает итоговую математику начисления, но переключает признак ВремяВЧасах в значение Истина.
Важный нюанс: при кадровых переводах, индексациях и изменениях оплаты труда необходимо следить, чтобы тарифная ставка оставалась одинаковой у всей бригады, иначе пропорция распределения изменится.
Если на предприятии используется полноценная сдельно-премиальная или аккордная система, методологически правильнее использовать разделение на базовый тариф и приработок:
ЧасоваяСтавка * ОтработаноЧасов, а оставшуюся сумму общего наряда (сдельный приработок) распределяет пропорционально часам, ставкам и КТУ.Если на предприятии требуется делить весь наряд исключительно по часам и КТУ, не указывая фиктивные тарифные ставки в кадровом учете, оптимальным решением является корректировка модуля формы документа Данные для расчета зарплаты.
Выясним причину в коде: в процедуре распределения находится тернарный оператор выбора единицы времени:
// Типовой фрагмент процедуры РаспределитьСтоимостьРаботПоСотрудникам:
ОтработанноеВремя = ?(СтрокаТаблицы.ВремяВЧасах, СтрокаТаблицы.ОтработаноЧасов, СтрокаТаблицы.ОтработаноДней);
Чтобы система всегда брала часы при распределении, создадим расширение конфигурации (без снятия основной конфигурации с поддержки) и переопределим алгоритм процедуры РаспределитьСтоимостьРаботПоСотрудникам, заменив выбор времени на прямое использование часов:
&Вместо("РаспределитьСтоимостьРаботПоСотрудникам")
Процедура Расширение_РаспределитьСтоимостьРаботПоСотрудникам(ОтменятьИсправления = Ложь)
// В цикле распределения стоимости работ по строкам сотрудников:
ОтработанноеВремя = СтрокаТаблицы.ОтработаноЧасов;
// Далее выполняется типовой расчет долей с учетом КТУ
// КоэффициентРаспределения = ОтработанноеВремя * СтрокаТаблицы.КТУ;
КонецПроцедуры
Использование расширения позволяет сохранить типовую конфигурацию на полной поддержке и обновлять 1С:ЗУП без дополнительных трудозатрат.
При работе со сдельными нарядами обратим внимание на сопутствующие нюансы: