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

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

В конфигурации 1С:Зарплата и Управление Персоналом 3.1 часто возникают ситуации, когда стандартные формулы начислений начинают отрабатывать некорректно после ввода документа Индивидуальный график. Это происходит потому, что показатель НормаЧасов (или НормаДней) по умолчанию обращается к текущему плановому графику сотрудника. Если на месяц введен индивидуальный график, система считает его приоритетным «планом», и норма берется именно из него, а не из основного графика или производственного календаря.

Разберем подробно, как настроить систему так, чтобы в формулах использовалась норма «пятидневки» (производственного календаря) независимо от того, какие отклонения или индивидуальные графики назначены работнику.

Проблема использования стандартного показателя НормаЧасов

Проанализируем ситуацию: в формуле начисления используется логика ограничения времени, например: Мин(ВремяВЧасах, НормаЧасов). Автор задачи столкнулся с тем, что при вводе индивидуального графика показатель НормаЧасов уменьшается (или увеличивается), что полностью меняет результат расчета. Для системы ЗУП 3.1 документ Индивидуальный график — это прямое указание на то, что норма времени сотрудника в данном месяце изменилась.

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

Решение 1: Использование показателей «полного рабочего времени»

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

  1. НормаЧасовПоГрафикуПолногоРабочегоВремени — возвращает количество часов по графику, который указан в качестве нормы для основного графика сотрудника.
  2. НормаДнейПоГрафикуПолногоРабочегоВремени — аналогичный показатель для дней.

Чтобы эти показатели возвращали именно данные производственного календаря (пятидневки), необходимо выполнить предварительную настройку в справочнике Графики работы сотрудников:

  1. Откроем основной график, по которому работает сотрудник.
  2. Перейдем по ссылке Изменить свойства графика.
  3. Установим флаг Считать норму по другому графику.
  4. В появившемся поле выберем стандартный график «Пятидневка» (который соответствует производственному календарю).

Важный нюанс: Даже если сотрудник работает на полной ставке по пятидневке, установка этой настройки позволяет системе «зафиксировать» связь. Теперь, если мы заменим в формуле НормаЧасов на НормаЧасовПоГрафикуПолногоРабочегоВремени, программа будет игнорировать Индивидуальный график при расчете знаменателя (нормы), так как она будет обращаться напрямую к пятидневке через связку в основном графике.

Решение 2: Методика «Оценки времени» и вспомогательных видов времени

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

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

  1. В настройках начисления на вкладке Учет времени указываем, что начисление выполняется за этот специальный вид времени.
  2. В формуле используем обращение к данным этого времени.
  3. Данные о норме пятидневки можно «вытащить» через использование предопределенных показателей, которые не перекрываются индивидуальным графиком, таких как НормаЧасов, но с уточнением контекста через настройки самого начисления.

Решение 3: Ввод показателя через «Данные для расчета зарплаты»

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

Разберем этот метод по шагам:

  1. Создадим новый Показатель расчета зарплаты с наименованием НормаПоПятидневке.
  2. Укажем, что он используется Только в месяце, в котором вводится значение (ежемесячно) и назначается для Сотрудника.
  3. Создадим Шаблон ввода данных для расчета зарплаты, в который включим этот показатель.
  4. Бухгалтер может заполнять этот документ раз в месяц. Значения можно скопировать из производственного календаря один раз для всех сотрудников.

Теперь наша формула будет выглядеть примерно так:


Результат = РасчетнаяБаза * 
Мин(ВремяВЧасах, НормаПоПятидневке) / 
НормаПоПятидневке

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

Проверка регистров: почему Индивидуальный график «сильнее»?

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

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

Резюме и рекомендации

Проанализировав все варианты, мы рекомендуем следующий алгоритм действий для исправления расчета:

  1. Проверьте настройки основного графика сотрудника. Убедитесь, что там включена опция «Считать норму по другому графику» и выбрана «Пятидневка».
  2. Отредактируйте формулу начисления. Замените в ней все вхождения НормаЧасов на НормаЧасовПоГрафикуПолногоРабочегоВремени.
  3. Проверьте результат в документе Начисление зарплаты и взносов. Нажмите кнопку «Показать подробности расчета» и убедитесь, что в колонке нормативного времени отображается число часов по производственному календарю, несмотря на наличие документа Индивидуальный график.

Такой подход сохранит автоматизацию расчета и избавит вас от необходимости ручных правок в табеле или документах начислений в будущем.

← На главную