Как исправить проблему незаполнения тарифных ставок в сдельном наряде для новых сотрудников в 1С:ЗУП 3.1

Программист 1С v8.3 (Управляемые формы)
← На главную

Переход с версии 1С:ЗУП 2.5 на 3.1 часто сопровождается сложностями в настройке привычных инструментов. Одной из таких проблем является работа с документом «Сдельный наряд» (который в новой версии представлен как подвид документа Данные для расчета зарплаты). Пользователи часто сталкиваются с тем, что если сотрудник принят на работу в середине месяца, то при формировании бригадного наряда за весь месяц его тарифная ставка не подтягивается автоматически. Это приводит к необходимости ручного ввода, который к тому же может некорректно отражаться в итоговом распределении заработка.

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

Разбор причины возникновения проблемы

Основная причина, по которой программа «теряет» тарифную ставку нового сотрудника, кроется в алгоритме поиска данных в регистре сведений Плановые начисления. В старых релизах ветки 3.1 (например, 3.1.7) запрос на получение тарифной ставки выполнялся на дату начала периода документа. Если документ создается на период с 1-го по 31-е число, а сотрудник принят 10-го числа, то на 1-е число у него еще нет актуальных плановых начислений. В результате программа считает ставку нулевой.

Кроме того, существует нюанс с определением единицы времени. Программа может ошибочно квалифицировать время сотрудника как «в днях», тогда как для сдельного наряда критически важно использование часового тарифа. Если параметр ВремяВЧасах принимает значение Ложь, расчет распределения заработка по тарифным ставкам нарушается.

Способ 1: Программное исправление (для версий ниже 3.1.8)

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

Рассмотрим пошагово процесс внесения изменений:

  1. Откройте конфигуратор и найдите документ ДанныеДляРасчетаЗарплаты.
  2. Перейдите в Модуль формы документа (обычно это основная форма).
  3. Найдите процедуру ЗаполнитьТарифныеСтавки.
  4. Внутри цикла перебора строк таблицы найдите блок, где заполняются значения из выборки.

Нам необходимо модифицировать код следующим образом. Проанализируем пример исправленного блока:


Для Каждого СтрокаТаблицы Из СтрокиТаблицы Цикл
    Выборка.Сбросить();
    Если Выборка.НайтиСледующий(СтрокаТаблицы.Объект, "Сотрудник") Тогда
        СтрокаТаблицы.ТарифнаяСтавка = Выборка.ТарифнаяСтавка;
        
        // Вставляем проверку и корректировку признака времени в часах
        Если Не Выборка.ВремяВЧасах = Ложь Тогда 
            СтрокаТаблицы.ВремяВЧасах = Истина;
        Иначе
            СтрокаТаблицы.ВремяВЧасах = Выборка.ВремяВЧасах;
        КонецЕсли;
        
        // Важно: обновление суммы должно идти после установки признака времени
        ОбновитьСуммуПоТарифуВыполненныхРабот(СтрокаТаблицы);
    КонецЕсли;
КонецЦикла;

Почему это важно: Условие Если Не Выборка.ВремяВЧасах = Ложь Тогда СтрокаТаблицы.ВремяВЧасах = Истина; позволяет обработать ситуации, когда в выборку попадает значение Null или Неопределено. Для сдельщика в наряде время всегда должно интерпретироваться как часовое, чтобы тарифная ставка корректно участвовала в распределении.

Способ 2: Настройка шаблона ввода исходных данных

Иногда проблема кроется не в программном коде, а в настройках Шаблона ввода исходных данных. Разберем, на что стоит обратить внимание:

  1. Перейдите в раздел Настройка — Шаблоны ввода исходных данных.
  2. Найдите шаблон, используемый для сдельных нарядов.
  3. На вкладке Распределение по сотрудникам проверьте способ распределения. Если выбрано «Распределять пропорционально тарифным ставкам», наличие ставки у каждого сотрудника обязательно.
  4. Если вы используете коэффициенты трудового участия, можно переключить настройку на «Распределять по КТУ». В этом случае программа перестанет требовать тарифную ставку для расчета и будет опираться только на введенные коэффициенты.

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

Способ 3: Обновление конфигурации

Фирма «1С» признала данную проблему ошибкой (код ошибки 30151177). Официальное исправление было выпущено в тестовой версии 3.1.8.67 и перенесено во все последующие стабильные релизы. Если ваша конфигурация ниже этой версии, самым правильным и безопасным способом будет обновление до актуального релиза (например, веток 3.1.10, 3.1.14 или современных 3.1.27+).

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

Особенности распределения при наличии отклонений

Рассмотрим ситуацию, когда сотрудник в период действия месячного наряда находился на больничном или в отпуске. В ЗУП 3.1 реализована иная логика распределения, чем в 2.5:

Работа с ночными и праздничными часами

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

Резюме

Подводя итог, если вы столкнулись с пустыми тарифными ставками в сдельном наряде:

  1. Проверьте релиз: если он ниже 3.1.8.67 — планируйте обновление.
  2. Временное решение: используйте правку кода в процедуре ЗаполнитьТарифныеСтавки, как показано выше.
  3. Настройки: убедитесь, что в шаблоне ввода данных верно указан способ распределения, а у сотрудников назначены корректные плановые начисления со сдельной оплатой.

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

← На главную