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

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

В практической работе расчетчика или разработчика 1С часто возникает задача настройки сложных надбавок, зависящих от определенных условий работы сотрудника. Типичный пример — надбавка за работу в особых условиях (например, «Надбавка за работу не дома» или «Вахтовая надбавка»). Логика её расчета проста: надбавка должна начисляться только в том случае, если в табеле зарегистрирован специализированный вид времени (например, Не дома). При этом расчет должен охватывать не только обычные рабочие дни по этому профилю, но и работу в праздничные дни.

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

В чем суть проблемы и почему стандартная настройка не работает?

При создании подобного начисления на вкладке Основное мы обычно выбираем вариант: «Начисление выполняется: Только если введен вид учета времени» и указываем наш основной вид времени — Не дома. Чтобы праздничные дни также учитывались в расчете надбавки, мы переходим на вкладку Учет времени и добавляем праздничные дни в список Дополнительные виды времени.

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

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

Почему это происходит? Разбор логики системы

Проанализируем логику работы механизма учета времени в 1С:ЗУП 3.1. Когда программа формирует документ НачислениеЗарплатыИВзносов, она выполняет предварительный анализ зарегистрированного времени сотрудников за месяц.

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

Решение проблемы: разделение на два начисления с перекрестной настройкой времени

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

Разберем этот процесс по шагам.

Шаг 1. Настройка первого начисления — для обычных дней

Создадим начисление, которое будет отвечать за расчет надбавки в обычные (не праздничные) дни.

Назовем его, например, «Надбавка за работу не дома (в обычные дни)» и настроим следующие вкладки:

  1. Вкладка «Основное»:
    • Установим переключатель Начисление выполняется в положение Только если введен вид учета времени.
    • В появившемся поле выберем наш основной вид времени: Не дома.
    • Запишем формулу расчета:
    Результат = ВремяВДнях * ТарифНадбавки (где ТарифНадбавки — это созданный вами показатель для ввода фиксированной суммы тарифа).
  2. Вкладка «Учет времени»:
    • В качестве основного вида времени укажем Не дома.
    • Табличную часть Дополнительные виды времени оставим абсолютно пустой.

Шаг 2. Настройка второго начисления — для праздничных дней

Теперь создадим второе начисление, которое будет рассчитывать надбавку за работу в праздники, но запускаться только при наличии работы в особых условиях.

Назовем его «Надбавка за работу не дома (в праздничные дни)» и выполним настройки:

  1. Вкладка «Основное»:
    • Важный момент! Переключатель Начисление выполняется также устанавливаем в положение Только если введен вид учета времени.
    • В качестве вида времени для запуска снова выбираем Не дома. Это ключевая деталь: начисление по праздникам будет проверяться на запуск именно по триггеру основного начисления!
    • Формула расчета остается аналогичной:
    Результат = ВремяВДнях * ТарифНадбавки
  2. Вкладка «Учет времени»:
    • В качестве основного вида времени укажем Праздники (или Работа в выходные и праздничные, в зависимости от того, какими кодами вы отражаете этот период в табеле).
    • Табличную часть Дополнительные виды времени также оставляем пустой.

Как это работает на практике: разберем сценарии

Выясним, как поведет себя программа в различных ситуациях при начислении заработной платы.

Сценарий А: Сотрудник работал в условиях «Не дома» и захватил праздничные дни.
В табеле сотрудника зафиксированы дни по коду Не дома и по коду Праздники. При расчете зарплаты программа видит, что триггерный вид времени Не дома присутствует. Соответственно, запускаются оба начисления: - Первое начисление рассчитывает дни работы по коду Не дома. - Второе начисление (поскольку триггер сработал) успешно запускается и берет для расчета дни по своему основному коду учета времени — то есть Праздники. Сотрудник получает корректную сумму за все дни.

Сценарий Б: Сотрудник НЕ работал в особых условиях, но работал в праздники.
В табеле сотрудника зафиксированы только обычные Праздники, а код Не дома отсутствует. Система анализирует условия запуска: - Для первого начисления триггер Не дома не найден — начисление не создается. - Для второго начисления триггером также назначен код Не дома. Поскольку его нет в табеле, это начисление тоже игнорируется программой. В результате сотруднику будет начислена обычная оплата за работу в праздничный день по законодательству, а «Надбавка за работу не дома» вообще не попадет в документ расчета. Цель достигнута!

Преимущества данного метода

Используя этот обходной путь, мы получаем сразу несколько преимуществ:

← На главную