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

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

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

Суть проблемы: ошибка деления на ноль

Разберем ситуацию: бухгалтер или расчетчик запускает документ НачислениеЗарплатыИВзносов за январь. Программа выдает ошибку деления на 0. Проанализируем причину: это происходит из-за того, что для сотрудника не определена норма рабочего времени. Если зайти в график работы сотрудника, мы увидим, что календарная сетка на текущий год пуста. Поскольку рабочих часов (норма) нет, формула расчета, где оклад делится на норму времени, выдает математическую ошибку.

Как работает механизм автоматического заполнения

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

  1. Производственный календарь: Это фундамент. Важно помнить, что существует автоматическое обновление производственных календарей, которое может срабатывать при обновлении конфигурации. Если основной календарь (РФ) не заполнен на текущий год, ни один график не сможет обновиться корректно.
  2. Регламентное задание: Задание ОбновлениеКлассификаторов или специализированные фоновые задания подтягивают изменения с серверов 1С.
  3. Флаг «Автоматическое обновление по производственному календарю»: Казалось бы, это главный переключатель. Если он стоит — график обновляется, если нет — требуется ручное вмешательство. Однако, как показывает практика, всё гораздо сложнее.

Скрытая логика настройки графиков

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

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

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

Анализ регистра сведений «Автоматически обновляемые графики работы сотрудников»

Посмотрим на техническую сторону вопроса. В системе существует служебный регистр сведений АвтоматическиОбновляемыеГрафикиРаботыСотрудников. Разберем, как он влияет на процесс:

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

  1. Перейдите в Функции для технического специалиста (или «Все функции»).
  2. Найдите регистр сведений Автоматически обновляемые графики работы сотрудников. В некоторых случаях может также потребоваться пересчет итогов в регистрах сведений, если данные в системе отображаются некорректно.
  3. Проверьте, есть ли в списке ваш проблемный график. Если его там нет, система не будет обновлять его сама.

Почему «автоматика» дает сбой в январе 2024 года?

Рассмотрим ситуацию, описанную пользователями: много лет всё работало «само», а в 2024 году сломалось. Проанализируем возможные причины:

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

Пошаговая инструкция по исправлению ситуации

Рассмотрим, как быстро вернуть систему в рабочее состояние и предотвратить ошибку в будущем:

Способ 1: Ручное инициирование обновления

Самый простой способ — зайти в Производственный календарь (Настройка — Производственные календари), убедиться, что он заполнен на 2024 (или текущий) год, и нажать кнопку «Заполнить по умолчанию» (даже если он уже заполнен). Это часто инициирует цепную реакцию обновления связанных графиков.

Способ 2: Перезапись настроек графика

Рассмотрим программно-аппаратный метод «встряски» графика:

  1. Откройте проблемный график работы.
  2. Временно измените способ заполнения на «По дням недели» — это вернет видимость флажка Автоматическое обновление.
  3. Убедитесь, что галка стоит.
  4. Верните способ заполнения обратно на «По циклам».
  5. Нажмите «Записать и закрыть». В этот момент в Журнале регистрации должна появиться запись, а в РС Автоматически обновляемые графики обновиться информация.

Технический пример кода для проверки состояния

Для программистов 1С будет полезно посмотреть, как система определяет необходимость обновления. Для глубокого анализа данных и отладки отлично подойдет консоль запросов ЗУП с поддержкой программного интерфейса, либо классическая консоль запросов для ЗУП. Проанализируем фрагмент логики, который можно использовать во внешней обработке для аудита графиков:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Графики.Ссылка КАК График,
    |	Графики.СпособЗаполнения,
    |	АвтоОбновление.ГрафикРаботы КАК ЕстьВРегистре
    |ИЗ
    |	Справочник.ГрафикиРаботыСотрудников КАК Графики
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АвтоматическиОбновляемыеГрафикиРаботыСотрудников КАК АвтоОбновление
    |		ПО Графики.Ссылка = АвтоОбновление.ГрафикРаботы
    |ГДЕ
    |	НЕ Графики.ПометкаУдаления";

Результат = Запрос.Выполнить().Выгрузить();
// Если ЕстьВРегистре = NULL, значит график никогда не обновится сам

Выясним причину отсутствия записей в Журнале регистрации

Часто возникает вопрос: почему графики заполнены, но в Журнале регистрации нет записей о действиях пользователя? Разберем этот феномен. Когда график заполняется через регламентное задание или при обновлении версии программы, автором изменений выступает «Система» или пользователь, под которым запущено серверное задание. Если вы фильтруете журнал по конкретному кадровику, вы ничего не увидите. Используйте фильтр по объекту (Графику), чтобы увидеть все технические правки.

Рекомендации для кадровой службы

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

Резюме: Кадровик из обсуждения был прав — система действительно умеет обновлять графики «сама». Но техническому специалисту важно помнить, что эта «магия» держится на скрытых реквизитах и записях в служебных регистрах, которые могут быть повреждены при обновлениях или некорректных ручных правках. Своевременный аудит регистра АвтоматическиОбновляемыеГрафикиРаботыСотрудников избавит вас от авралов в начале каждого года.

← На главную