Переход с версии 1С:ЗУП 2.5 на 3.1 часто сопровождается сложностями в настройке привычных инструментов. Одной из таких проблем является работа с документом «Сдельный наряд» (который в новой версии представлен как подвид документа Данные для расчета зарплаты). Пользователи часто сталкиваются с тем, что если сотрудник принят на работу в середине месяца, то при формировании бригадного наряда за весь месяц его тарифная ставка не подтягивается автоматически. Это приводит к необходимости ручного ввода, который к тому же может некорректно отражаться в итоговом распределении заработка.
В данной статье мы разберем причины возникновения этой ситуации, проанализируем программный код и предложим варианты решения: от внесения изменений в конфигурацию до правильной настройки шаблонов ввода данных.
Основная причина, по которой программа «теряет» тарифную ставку нового сотрудника, кроется в алгоритме поиска данных в регистре сведений Плановые начисления. В старых релизах ветки 3.1 (например, 3.1.7) запрос на получение тарифной ставки выполнялся на дату начала периода документа. Если документ создается на период с 1-го по 31-е число, а сотрудник принят 10-го числа, то на 1-е число у него еще нет актуальных плановых начислений. В результате программа считает ставку нулевой.
Кроме того, существует нюанс с определением единицы времени. Программа может ошибочно квалифицировать время сотрудника как «в днях», тогда как для сдельного наряда критически важно использование часового тарифа. Если параметр ВремяВЧасах принимает значение Ложь, расчет распределения заработка по тарифным ставкам нарушается.
Если по каким-то причинам вы не можете обновить конфигурацию до актуального релиза, проблему можно решить внесением правок в модуль формы документа. Нам необходимо скорректировать логику заполнения тарифных ставок, чтобы программа принудительно учитывала расчет в часах для сдельных работ.
Рассмотрим пошагово процесс внесения изменений:
ДанныеДляРасчетаЗарплаты.ЗаполнитьТарифныеСтавки.Нам необходимо модифицировать код следующим образом. Проанализируем пример исправленного блока:
Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
Выборка.Сбросить();
Если Выборка.НайтиСледующий(СтрокаТаблицы.Объект, "Сотрудник") Тогда
СтрокаТаблицы.ТарифнаяСтавка = Выборка.ТарифнаяСтавка;
// Вставляем проверку и корректировку признака времени в часах
Если Не Выборка.ВремяВЧасах = Ложь Тогда
СтрокаТаблицы.ВремяВЧасах = Истина;
Иначе
СтрокаТаблицы.ВремяВЧасах = Выборка.ВремяВЧасах;
КонецЕсли;
// Важно: обновление суммы должно идти после установки признака времени
ОбновитьСуммуПоТарифуВыполненныхРабот(СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Почему это важно: Условие Если Не Выборка.ВремяВЧасах = Ложь Тогда СтрокаТаблицы.ВремяВЧасах = Истина; позволяет обработать ситуации, когда в выборку попадает значение Null или Неопределено. Для сдельщика в наряде время всегда должно интерпретироваться как часовое, чтобы тарифная ставка корректно участвовала в распределении.
Иногда проблема кроется не в программном коде, а в настройках Шаблона ввода исходных данных. Разберем, на что стоит обратить внимание:
Настройка — Шаблоны ввода исходных данных.Распределение по сотрудникам проверьте способ распределения. Если выбрано «Распределять пропорционально тарифным ставкам», наличие ставки у каждого сотрудника обязательно.Проанализируем также настройку плановых начислений. Чтобы ставка подтягивалась автоматически, у сотрудника в кадровых документах (Прием на работу, Кадровый перевод) должен быть назначен вид расчета, в формуле которого используется показатель СдельныйЗаработок или ТарифнаяСтавкаЧасовая.
Фирма «1С» признала данную проблему ошибкой (код ошибки 30151177). Официальное исправление было выпущено в тестовой версии 3.1.8.67 и перенесено во все последующие стабильные релизы. Если ваша конфигурация ниже этой версии, самым правильным и безопасным способом будет обновление до актуального релиза (например, веток 3.1.10, 3.1.14 или современных 3.1.27+).
В новых версиях исправлен запрос к регистру Плановые начисления: дата среза теперь определяется динамически, исходя из периода нахождения сотрудника в штате в рамках дат документа Сдельный наряд.
Рассмотрим ситуацию, когда сотрудник в период действия месячного наряда находился на больничном или в отпуске. В ЗУП 3.1 реализована иная логика распределения, чем в 2.5:
Сдельный наряд часы подтягиваются из графика сотрудника. Если были отклонения (больничные), они не всегда автоматически исключаются из таблицы наряда при ручном заполнении состава бригады. Рекомендуется сначала оформлять все документы отклонений, а затем заполнять наряд.Сумма = ОбщийЗаработокНаряда * (ТарифнаяСтавка * ОтработаноЧасов) / ОбщийФондПоНаряду.Приоритет в список вытесняющих видов расчета добавлены больничные, отпуска и неявки. Это предотвратит двойную оплату за один и тот же период.Важно помнить, что документ Сдельный наряд фиксирует только объем выполненных работ. Если сотрудники выполняли сдельную работу ночью или в праздничные дни, программа распределит только основную сумму сделки. Доплаты за ночные часы или работу в выходные дни будут рассчитаны в документе Начисление зарплаты и взносов на основании данных табеля или документов Работа в выходные и праздники. Сумма сдельного заработка при этом будет использоваться как база для расчета доплат, если это предусмотрено настройками соответствующих начислений.
Подводя итог, если вы столкнулись с пустыми тарифными ставками в сдельном наряде:
ЗаполнитьТарифныеСтавки, как показано выше.Соблюдение этих правил позволит автоматизировать расчеты и избежать расхождений при распределении заработка между членами бригады.