Как исправить ошибку «деление на 0» при расчете командировки в 1С:ЗУП?

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

При оформлении документа «Командировка» в программе 1С:Зарплата и управление персоналом пользователи нередко сталкиваются с неприятным системным сообщением: «деление на 0». Эта ошибка блокирует расчет среднего заработка и не позволяет провести документ. В данной статье мы детально разберем, почему программа не видит данные о времени, и как совместными усилиями найти и устранить причину этой проблемы.

Суть проблемы: математика среднего заработка

Прежде чем переходить к настройкам, давайте проанализируем, почему возникает математическая ошибка деления на ноль. Расчет среднего заработка для командировки строится по формуле: Сумма начислений за расчетный период / Отработанное время в днях (или часах). Если программа выдает ошибку, это означает, что знаменатель в этой формуле равен нулю. Другими словами, система по какой-то причине считает, что сотрудник не отработал ни одного дня или часа, либо у него отсутствует норма рабочего времени.

Рассмотрим основные шаги по диагностике и решению этой ситуации.

Шаг 1. Проверка заполнения графика работы на текущий год

Самая распространенная причина, по которой НормаДнейЧасов оказывается равной нулю, — это банально незаполненный график работы на новый календарный год. Рассмотрим ситуацию: в феврале расчет прошел успешно, а в марте возникла ошибка. Это первый признак того, что в справочнике графиков отсутствуют данные на текущий период.

Выполним следующие действия:

  1. Перейдем в раздел Настройка — Графики работы сотрудников.
  2. Найдем график, по которому работает проблемный сотрудник, и откроем его.
  3. Посмотрим на календарную сетку. Если на текущий месяц (например, март 2024 года) дни не отмечены цветом и не проставлены часы, значит график не заполнен.
  4. Нажмем кнопку Заполнить. Важно убедиться, что производственный календарь, на основании которого заполняется график, также обновлен и заполнен.

Шаг 2. Анализ свойств графика и «нормы по другому графику»

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

Параметр «Считать норму по другому графику». Если здесь стоит галочка, программа при расчете среднего заработка будет искать норму времени не в основном графике сотрудника, а в том, который указан в этом поле. Если этот «другой» график (например, пятидневка) не заполнен на текущий год, возникнет ошибка деления на 0, даже если основной график сотрудника выглядит корректно.

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

Шаг 3. Влияние индивидуальных графиков

Выясним, не вводился ли сотруднику документ Индивидуальный график. В системе 1С этот документ имеет приоритет над основным графиком работы. Если документ был создан (например, для изменения сменности), но в нем не заполнены часы или он остался «пустым» из-за ошибки ввода, программа возьмет норму именно из него.

Рассмотрим алгоритм проверки:

  1. Перейдем в раздел Зарплата — Индивидуальные графики.
  2. Сделаем отбор по сотруднику и проверим наличие документов за расчетный период и месяц командировки.
  3. Если документ найден, убедимся, что в нем проставлены явки (например, «Я 8») и итоговое количество часов за месяц не равно нулю.

Шаг 4. Новые сотрудники и отсутствие данных в расчетном периоде

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

Проанализируем ситуацию: если сотрудник принят 1-го числа, а 2-го числа уезжает в командировку, программа должна взять данные из его плановых начислений и нормы по графику за текущий месяц. Если в этот момент ВремяВДняхЧасах за отработанный период равно 0 и нет данных о тарифной ставке в регистре, может возникнуть ошибка. В таких случаях рекомендуется проверить правильность оформления приема на работу и корректность указания Плановых начислений.

Шаг 5. Проверка технических регистров (для продвинутых пользователей)

Иногда визуально данные в графиках заполнены, но в технических регистрах накоплены ошибки. Для расчета среднего заработка 1С использует данные из регистра накопления ДанныеОВремениДляРасчетаСреднегоЗаработкаОбщий.

Рассмотрим, как можно исправить ситуацию технически:

  1. Попробуем воспользоваться встроенным сервисом: Зарплата — Сервис — Обновить данные для расчета среднего заработка.
  2. Выберем нужного сотрудника и период, после чего запустим процесс обновления. Это заставит программу пересчитать и перезаписать данные о времени в регистрах.
  3. Если это не помогло, можно временно перепровести документы Начисление зарплаты и взносов за предыдущие месяцы, чтобы актуализировать записи в регистре накопления.

Шаг 6. Настройки суммированного учета

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

В настройках графика (раздел Параметры сменного графика) должен быть указан вид времени «Явка». Если в графике стоят только «Ночные» или «Сверхурочные» без основного времени «Явка», алгоритм расчета может не распознать эти часы как рабочее время для нормы, что приведет к пустому знаменателю.

Посмотрим на пример настройки кода:


// Внутренняя логика программы проверяет:
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГрафикРаботы, "СуммированныйУчетРабочего времени") Тогда
    Знаменатель = СведенияОДоходах.ВремяВЧасах;
Иначе
    Знаменатель = СведенияОДоходах.ВремяВДнях;
КонецЕсли;

Если Знаменатель = 0 Тогда
    ВызватьИсключение "Ошибка: Деление на 0 при расчете среднего заработка";
КонецЕсли;

Итоги и рекомендации

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

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

← На главную