Как настроить начисление зарплаты в 1С только при наличии заполненного табеля?

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

Многие пользователи и расчетчики, переходя на современные конфигурации 1С, такие как Комплексная автоматизация 2.x или ЗУП 3.x, сталкиваются с вопросом: почему программа продолжает начислять зарплату сотрудникам даже в том случае, если документ Табель еще не был создан или заполнен? Давайте разберемся, почему так происходит и какие существуют пути решения этой задачи.

Почему 1С начисляет зарплату без табеля?

В основе работы всех современных конфигураций 1С лежит так называемый принцип отклонений. Это архитектурное решение, при котором программа исходит из предположения, что сотрудник работает согласно своему График работы полный месяц. Если в систему не внесены документы об отклонениях (такие как Больничный лист, Отпуск, Прогул или Неявка), 1С автоматически считает, что сотрудник отработал норму времени, и начисляет ему полную заработную плату.

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

Чего делать не стоит: риски «пустых» графиков

В ходе обсуждений часто предлагают варианты создания «пустых» График работы или индивидуальных графиков с нулевой нормой времени. Мы настоятельно рекомендуем не использовать этот метод по следующим причинам:

  1. Возникновение ошибки деления на 0 при расчете начислений. Система не может вычислить стоимость часа, если норма времени равна нулю.
  2. Нарушение целостности учета рабочего времени. Плановые показатели по организации перестают корректно отражаться в отчетах.
  3. Риск забытых документов. Если вы создали индивидуальный график, вам придется вручную отслеживать его удаление после заполнения табеля, что вносит хаос в процесс расчета зарплаты.

Вариант решения №1: Доработка конфигурации через расширение (Рекомендуемый)

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

Рассмотрим алгоритм реализации:

  1. При заполнении документа Начисление зарплаты и взносов программа должна инициировать процедуру проверки по каждому сотруднику.
  2. Проверке подлежит регистр накопления ДанныеТабельногоУчетаРабочегоВремениСотрудников.
  3. Если за расчетный месяц в данном регистре отсутствуют записи по конкретному сотруднику, система должна либо исключать его из документа, либо выдавать предупреждение пользователю о необходимости ввода табеля.

Этот способ позволяет сохранить типовую логику программы, не создавая «костылей» в виде пустых графиков, и обеспечивает 100% контроль наличия данных.

Вариант решения №2: Управление через формулу расчета

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

?(НормаЧасов = 0, 0, Оклад / НормаЧасов * ВремяВЧасах)

При использовании такой формулы, если НормаЧасов по какой-то причине оказалась равна нулю, начисление просто не произойдет (вернется 0), вместо того чтобы вызывать критическую ошибку расчета.

Вариант решения №3: Организационный контроль

Если внесение правок в код невозможно, рекомендуем перейти к жесткому регламенту:

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

← На главную