При расчете заработной платы за январь нового года пользователи часто сталкиваются с критической ошибкой: «Деление на 0». В этой статье мы подробно разберем, почему возникает эта ситуация, как программа 1С:ЗУП 3.1 управляет графиками работы «за кулисами» и почему утверждения кадровиков о том, что они «никогда ничего не заполняли вручную», часто оказываются правдой, даже если настройки программы говорят об обратном.
Разберем ситуацию: бухгалтер или расчетчик запускает документ НачислениеЗарплатыИВзносов за январь. Программа выдает ошибку деления на 0. Проанализируем причину: это происходит из-за того, что для сотрудника не определена норма рабочего времени. Если зайти в график работы сотрудника, мы увидим, что календарная сетка на текущий год пуста. Поскольку рабочих часов (норма) нет, формула расчета, где оклад делится на норму времени, выдает математическую ошибку.
Рассмотрим, как система должна заполнять графики без участия пользователя. В типовой конфигурации 1С:ЗУП 3.1 за это отвечают несколько механизмов:
ОбновлениеКлассификаторов или специализированные фоновые задания подтягивают изменения с серверов 1С.Выясним причину, по которой графики со сменным режимом работы (по циклам произвольной длины) заполняются сами, даже если пользователь не видит заветной «галки» в интерфейсе. Проанализируем настройки формы графика:
В 1С:ЗУП 3.1 видимость флажка АвтоОбновлениеПоПроизводственномуКалендарю динамически меняется. Если в способе заполнения указано «По циклам произвольной длины» и снят флаг «При заполнении учитывать праздничные дни», поле автоматического обновления просто исчезает с формы. Но это не значит, что оно перестает работать в базе данных.
Важный технический нюанс: реквизит объекта остается в значении Истина, если он был установлен ранее. Программа продолжает считать такой график автоматически обновляемым.
Посмотрим на техническую сторону вопроса. В системе существует служебный регистр сведений АвтоматическиОбновляемыеГрафикиРаботыСотрудников. Разберем, как он влияет на процесс:
СохранитьПризнакАвтоОбновления().Проверим это утверждение. Если вы обнаружили, что график не заполнился, выполните следующие действия:
Автоматически обновляемые графики работы сотрудников. В некоторых случаях может также потребоваться пересчет итогов в регистрах сведений, если данные в системе отображаются некорректно.Рассмотрим ситуацию, описанную пользователями: много лет всё работало «само», а в 2024 году сломалось. Проанализируем возможные причины:
Рассмотрим, как быстро вернуть систему в рабочее состояние и предотвратить ошибку в будущем:
Самый простой способ — зайти в Производственный календарь (Настройка — Производственные календари), убедиться, что он заполнен на 2024 (или текущий) год, и нажать кнопку «Заполнить по умолчанию» (даже если он уже заполнен). Это часто инициирует цепную реакцию обновления связанных графиков.
Рассмотрим программно-аппаратный метод «встряски» графика:
Автоматическое обновление.Автоматически обновляемые графики обновиться информация.Для программистов 1С будет полезно посмотреть, как система определяет необходимость обновления. Для глубокого анализа данных и отладки отлично подойдет консоль запросов ЗУП с поддержкой программного интерфейса, либо классическая консоль запросов для ЗУП. Проанализируем фрагмент логики, который можно использовать во внешней обработке для аудита графиков:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Графики.Ссылка КАК График,
| Графики.СпособЗаполнения,
| АвтоОбновление.ГрафикРаботы КАК ЕстьВРегистре
|ИЗ
| Справочник.ГрафикиРаботыСотрудников КАК Графики
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АвтоматическиОбновляемыеГрафикиРаботыСотрудников КАК АвтоОбновление
| ПО Графики.Ссылка = АвтоОбновление.ГрафикРаботы
|ГДЕ
| НЕ Графики.ПометкаУдаления";
Результат = Запрос.Выполнить().Выгрузить();
// Если ЕстьВРегистре = NULL, значит график никогда не обновится сам
Часто возникает вопрос: почему графики заполнены, но в Журнале регистрации нет записей о действиях пользователя? Разберем этот феномен. Когда график заполняется через регламентное задание или при обновлении версии программы, автором изменений выступает «Система» или пользователь, под которым запущено серверное задание. Если вы фильтруете журнал по конкретному кадровику, вы ничего не увидите. Используйте фильтр по объекту (Графику), чтобы увидеть все технические правки.
Несмотря на то, что программа стремится к максимальной автоматизации, рекомендуем завести правило: каждый декабрь проверять заполнение графиков на следующий год. Это можно сделать через отчет Штатные сотрудники, добавив в него поля с информацией о графике, либо просто открыв список графиков и визуально проверив колонку «Дата заполнения» (если она выведена) или открыв несколько ключевых сменных графиков.
Резюме: Кадровик из обсуждения был прав — система действительно умеет обновлять графики «сама». Но техническому специалисту важно помнить, что эта «магия» держится на скрытых реквизитах и записях в служебных регистрах, которые могут быть повреждены при обновлениях или некорректных ручных правках. Своевременный аудит регистра АвтоматическиОбновляемыеГрафикиРаботыСотрудников избавит вас от авралов в начале каждого года.