Как настроить оплату дней в пути на основании данных табеля в 1С:Комплексная автоматизация 1.1?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет
← На главную

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

В данной статье мы разберем, как правильно настроить систему, чтобы кадровик мог просто проставить «ДП» в табеле, а расчетчик получил готовые суммы в документе Начисление зарплаты.

Анализ проблемы: Почему не получается добавить начисление через «Прием на работу»?

Рассмотрим типичную ошибку начинающих специалистов. При попытке создать новое начисление и назначить его сотруднику как основное (например, наряду с окладом), программа выдает сообщение: «Сотруднику не может быть назначено основное начисление дважды». Это происходит потому, что в архитектуре 1С:КА 1.1 (ЗУП 2.5) за один и тот же период времени может отвечать только одно начисление, имеющее вид «Начисление за работу полную смену в пределах нормы времени».

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

Решение 1: Настройка через интерфейс (без программирования)

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

Шаг 1. Настройка Классификатора использования рабочего времени

Прежде всего, нам нужно создать сам символ «ДП» в системе. Перейдем в справочник Классификатор использования рабочего времени и создадим новый элемент:

  1. Наименование: Дни в пути.
  2. Буквенный код: ДП.
  3. Вид времени: Обязательно выберем «Дополнительное время в пределах нормы». Это критически важный момент: такой вид времени позволяет фиксировать часы в табеле, которые накладываются «поверх» явки, не уменьшая норму рабочего времени и не конфликтуя с основным окладом.

Шаг 2. Создание нового вида начисления

Теперь перейдем к справочнику Основные начисления организаций (или Дополнительные начисления, в зависимости от выбранной логики, но в КА 1.1 лучше работать через основные с правильной настройкой времени):

  1. На вкладке «Расчеты» установим переключатель в положение «Произвольная формула» и нажмем «Редактировать формулу»...
  2. Введем формулу: ТарифнаяСтавкаМесячная / НормаВремениВЧасах * ВремяВЧасах. Здесь ВремяВЧасах — это показатель, который система будет искать в регистре рабочего времени по нашему коду «ДП».
  3. На вкладке «Время» выберем переключатель «Дополнительное начисление за уже оплаченное время».
  4. В поле «Вид времени по классификатору» выберем наш созданный элемент «Дни в пути».
  5. На вкладке «Использование» укажем, что начисление является ежемесячным.

Шаг 3. Назначение начисления сотруднику

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

Решение 2: Программная доработка через подписку на событие

Рассмотрим альтернативный вариант, который предложили коллеги на форуме. Если типовая настройка по каким-то причинам не подтягивает данные (например, из-за специфики заполнения табеля «сводно»), можно прибегнуть к небольшому «костылю» — программному созданию движений в регистре РабочееВремяРаботниковОрганизаций.

Суть метода заключается в том, чтобы при проведении документа ТабельУчетаРабочегоВремени принудительно записывать данные о времени по нашему виду использования времени «ДП».

Посмотрим на пример кода, который можно разместить в модуле подписки на событие ОбработкаПроведения документа ТабельУчетаРабочегоВремени:


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

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

Важные нюансы и типичные ошибки

При внедрении данного функционала разберем несколько критических моментов:

  1. Проблема «пустого табеля»: Если в конкретном месяце у сотрудника нет дней в пути, но начисление назначено как плановое, программа может вести себя некорректно. Чтобы избежать расчета «всех часов» месяца как дней в пути, в формуле можно использовать логическую проверку через функцию ?(Условие, Выражение1, Выражение2). Однако при использовании вида времени «Дополнительное время в пределах нормы» система обычно корректно берет 0, если в табеле нет соответствующих записей.
  2. Учет при увольнении: Как было замечено в обсуждении, если сотрудник увольняется в середине месяца, важно, чтобы «ДП» не стояли датой позже даты увольнения. В противном случае расчет НормаВремениВЧасах может отработать некорректно. Проверьте, чтобы в настройках начисления на вкладке «Прочее» были правильно указаны вытесняющие начисления (например, прогулы или больничные).
  3. Налоги и надбавки: Не забудьте, что на сумму «Дней в пути» обычно должны начисляться районный коэффициент и северная надбавка. Для этого нужно зайти в настройки соответствующих начислений (РК и СН) и на вкладке «Прочее» добавить ваше новое начисление в список «Расчетная база».
  4. Показатели нормы: Выясним, какую именно норму использовать. Если сотрудники работают по разным графикам (сменный, пятидневка), используйте предопределенный показатель НормаВремениВЧасах, который учитывает индивидуальный график работника.

Таким образом, мы выяснили, что наиболее стабильным решением является настройка начисления с видом времени «Дополнительное время в пределах нормы». Это позволяет гармонично вписать «Дни в пути» в общую структуру фонда оплаты труда без нарушения логики учета рабочего времени в 1С:Комплексная автоматизация 1.1.

← На главную