При настройке оплаты труда сдельщиков часто возникает задача произвести доплату за работу в выходные или праздничные дни в двойном размере. Казалось бы, логичный путь — создать документ Разовое начисление, использовать в формуле показатель СдельныйЗаработок и умножить его на коэффициент. Однако на практике пользователи сталкиваются с тем, что документ заполняется сотрудниками, но результат расчета остается нулевым, даже если при нажатии на ссылку «Подробно» программа «видит» накопленные суммы. Давайте подробно разберем, почему так происходит и как правильно настроить расчет.
Для начала проанализируем внутреннюю механику работы программы 1С:Зарплата и управление персоналом 3.1. Показатель СдельныйЗаработок является предопределенным (системным). Его значение накапливается в течение месяца на основании документов Сдельный наряд на выполненные работы или Приемка выполненных работ.
Основная проблема заключается в моменте расчета. Процессор расчета зарплаты в 1С:ЗУП устроен таким образом, что данные из регистров накопления, где хранятся сведения о выполненных работах, «подтягиваются» и консолидируются преимущественно в финальном документе Начисление зарплаты и взносов.
Когда мы используем документ Разовое начисление, мы пытаемся выполнить расчет «вне очереди». Почему же в окне «Подробно» сумма видна? Это происходит потому, что при открытии расшифровки программа выполняет прямой запрос к базе данных, чтобы показать пользователю контекст. Но когда запускается основной движок расчета (процедура расчета результата), он не находит зафиксированных данных для этого типа документа, так как СдельныйЗаработок еще не «улегся» в периоде действия этого разового начисления.
Кроме того, как справедливо замечено в обсуждении, для сдельной оплаты периодом является весь месяц. Сделка не «бьется» автоматически по дням внутри учетного механизма так, как это делает оклад или тарифная ставка. Если мы хотим выделить сделку именно за выходной день, нам нужно использовать другие инструменты.
Рассмотрим самый правильный и надежный с точки зрения методологии 1С способ. Вместо того чтобы пытаться «заставить» документ Разовое начисление делать несвойственную ему работу, воспользуемся штатным механизмом.
Работа в выходные и праздничные дни (раздел «Зарплата»). В нем укажем сотрудников и конкретные даты работы. Важно выбрать способ компенсации: «Повышенная оплата».Оплата работы в праздничные и выходные дни (без доплаты) и Доплата за работу в праздничные и выходные дни. При использовании этого метода программа сама проанализирует документы Сдельный наряд, даты которых совпадают с датами, указанными в документе Работа в выходные и праздничные дни. В итоговом документе Начисление зарплаты и взносов система автоматически рассчитает одинарную сделку и сверху добавит доплату в размере 100%, что в сумме даст требуемый двойной размер.
Если по каким-то причинам штатный механизм не подходит (например, нужно рассчитать выплату строго в середине месяца отдельным документом), мы можем создать свой собственный механизм. Давайте разберем его по шагам:
Шаг 1. Создаем показатель.
Перейдем в «Настройки» — «Показатели расчета зарплаты» и создадим показатель, например, СделкаВВыходной. Настроим его так:
Шаг 2. Настраиваем шаблон ввода данных.
В разделе «Настройка» — «Шаблоны ввода исходных данных» создадим новый шаблон. Выберем в нем наш показатель СделкаВВыходной. Это позволит нам вводить сумму сделки, выполненной именно в выходной день, отдельным документом.
Шаг 3. Настраиваем разовое начисление.
Теперь создадим вид начисления Доплата за сделку в выходной. В формуле укажем:
Результат = СделкаВВыходной * Коэффициент
Где Коэффициент может быть равен 1 (если мы вводим уже сумму доплаты) или 2 (если вводим одинарную сумму). В настройках начисления укажем, что оно выполняется «По отдельному документу» (Разовое начисление).
Шаг 4. Ввод данных.
Теперь последовательность будет такой:
Данные для расчета зарплаты, где указываем сумму сделки за выходной.Разовое начисление. Теперь показатель СделкаВВыходной будет подтягиваться мгновенно и без ошибок, так как он не зависит от сложных системных алгоритмов накопления сделки.Как было предложено в обсуждении, если нам критично важен произвольный период расчета, можно попробовать использовать документ Премия. В отличие от Разового начисления, документ Премия имеет более гибкие настройки привязки к периоду.
Проанализируем настройку: в виде начисления на вкладке «Основное» укажем, что начисление выполняется «По отдельному документу» и выберем вид документа Премия. В формуле по-прежнему можно использовать расчетную базу, но важно помнить: РасчетнаяБаза сработает только в том случае, если основные сдельные наряды уже проведены и рассчитаны в текущем периоде.
Однако помните, что РасчетнаяБаза и СдельныйЗаработок — это разные механизмы. РасчетнаяБаза опирается на уже начисленные суммы (результаты), а СдельныйЗаработок — на данные о работах (обороты показателей).
Выясним причину, по которой расчет может сорваться даже при правильных настройках. В 1С:ЗУП 3.1 критически важна последовательность проведения документов. Если вы используете зависимости одних начислений от других, придерживайтесь следующего алгоритма:
Сдельный наряд.Работа в выходные и праздничные дни.Разовое начисление на базе сделки, попробуйте сначала создать (хотя бы без проведения) документ Начисление зарплаты и взносов и нажать в нем «Заполнить». Это заставит систему «прогрузить» показатели в регистры. После этого вернитесь в разовое начисление и попробуйте пересчитать сотрудника.Подведем итог: основной причиной того, что СдельныйЗаработок не рассчитывается в разовом документе, является его природа как накопительного показателя, предназначенного для итогового расчета за месяц. Для корректной работы мы рекомендуем использовать либо стандартный механизм Работа в выходные и праздничные дни, либо ввод данных через пользовательские показатели в Данных для расчета зарплаты. Это гарантирует точность учета и избавит от необходимости ручных правок в документах.