Как автоматически рассчитать дни для выдачи молока в 1С:ЗУП при работе во вредных условиях более 50% времени?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

В практике кадрового учета и расчета заработной платы часто возникает задача автоматизации компенсационных выплат, которые зависят от фактического времени работы в особых условиях. Одной из таких задач является начисление компенсации за молоко (или его выдача). Согласно законодательству РФ (Приказ Минтруда № 291н), молоко полагается работнику только в те дни, когда он был занят на работах с вредными условиями труда не менее половины продолжительности рабочей смены. Разберем подробно, как реализовать этот алгоритм в программе 1С:Зарплата и управление персоналом 3.1, чтобы уйти от ручного подсчета и минимизировать ошибки.

Проблема типового функционала

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

Вариант 1. Настройка начисления через «Данные для расчета зарплаты»

Этот вариант является наиболее гибким и позволяет автоматизировать расчет в документе Начисление зарплаты и взносов. Идея заключается в том, чтобы создать отдельный показатель, в который будет записываться количество «правильных» смен (тех, где вредность > 50%).

Шаг 1. Создание показателей

Перейдем в меню «Настройка» — «Показатели расчета зарплаты» и создадим два показателя:

  1. ЦенаПорцииМолока — тип «Денежный», назначается для организации (вводится один раз при изменении цены).
  2. КоличествоСменМолоко — тип «Числовой», назначается для сотрудника и вводится ежемесячно.

Шаг 2. Настройка начисления

В меню «Настройка» — «Начисления» создадим новое начисление «Компенсация за молоко». Настроим его следующим образом:

Шаг 3. Создание шаблона ввода данных

Чтобы иметь возможность вводить количество смен, необходимо создать шаблон в меню «Настройка» — «Шаблоны ввода исходных данных». В шаблоне выберем наш показатель КоличествоСменМолоко. Теперь у нас есть документ Данные для расчета зарплаты, куда можно вносить готовое количество дней.

Вариант 2. Полная автоматизация через внешнюю обработку заполнения

Чтобы табельщик или расчетчик не считал смены вручную, глядя в табель, мы можем автоматизировать заполнение документа Данные для расчета зарплаты. Для этого используется программная доработка в виде внешней обработки.

Проанализируем алгоритм, который должна выполнять такая обработка:

  1. Программа обращается к регистру накопления Данные о времени по дням (или Графики работы по видам времени).
  2. Для каждого сотрудника за выбранный месяц анализируется каждая календарная дата.
  3. По каждому дню сопоставляются два значения: Явка (общее время) и ВУ (время во вредных условиях).
  4. Вычисляется условие: Если ВУ >= (Явка / 2) Тогда СменаСчитается = 1.
  5. Итоговая сумма смен записывается в документ Данные для расчета зарплаты.

Рассмотрим пример логики на языке 1С, который можно использовать в такой обработке для анализа данных:


// Пример фрагмента кода для анализа времени из ТЗ (Таблицы Значений) табеля
Для Каждого СтрокаДанных Из ТаблицаВремениПоДням Цикл
    // Предположим, у нас есть колонки ЧасыЯвки и ЧасыВредности
    Если СтрокаДанных.ЧасыВредности > 0 Тогда
        Если СтрокаДанных.ЧасыВредности >= (СтрокаДанных.ЧасыЯвки * 0.5) Тогда
            ИтогоСменМолоко = ИтогоСменМолоко + 1;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

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

Вариант 3. Использование видов времени в Табеле

Если вы хотите видеть детализацию непосредственно в Табеле, рассмотрим настройку видов времени. Разберем по шагам:

  1. Создадим в справочнике «Виды использования рабочего времени» новый вид — «Работа во вредных условиях (для молока)», краткое обозначение ВМ.
  2. Табельщик при заполнении Табеля вручную или с помощью загрузки указывает часы по коду ВМ только в те дни, когда условие 50% соблюдено.
  3. В формуле начисления мы можем использовать стандартный показатель ВремяВДнях, но с уточнением по виду времени.

Проанализируем ситуацию: этот метод проще в реализации без программирования, но он перекладывает ответственность на табельщика. Если табельщик ошибется и поставит 3 часа вредности при 8-часовом рабочем дне кодом ВМ, программа все равно засчитает этот день для молока. Поэтому Вариант 2 с программным контролем является наиболее надежным.

Особенности налогообложения

При настройке начисления «Компенсация за молоко» важно правильно указать настройки налогов и взносов, так как это напрямую влияет на отчетность:

Резюме для реализации

Для эффективной работы мы рекомендуем совместить подходы:

  1. Использовать Табель для фиксации фактических часов вредности (вид времени ВУ).
  2. Настроить начисление через показатель КоличествоСменМолоко.
  3. Подключить внешнюю обработку к документу Данные для расчета зарплаты, которая будет автоматически подсчитывать количество дней из Табеля по алгоритму «Время ВУ >= 50% от смены».

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

← На главную