Как отключить автоматическое обновление производственного календаря в 1С:ЗУП 3.1

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

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

Способ 1. Отключение регламентного задания «Обновление классификаторов»

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

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

Важный нюанс: данный метод является радикальным, так как вместе с календарем перестанут обновляться и другие важные данные, например, классификатор банков или адресный классификатор (ФИАС/ГАР). Если вы хотите сохранить обновление других справочников, рассмотрим следующий вариант.

Способ 2. Выборочное обновление через настройки интернет-поддержки

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

  1. Перейдем в раздел Администрирование — Интернет-поддержка и сервисы.
  2. Найдем блок Обновление классификаторов.
  3. Нажмем на ссылку Обновление классификаторов (ручной запуск).
  4. В открывшемся помощнике выберем режим настройки состава классификаторов.
  5. В списке доступных элементов найдем Производственные календари и снимем с них пометку (галочку).

Таким образом, при запуске общего процесса обновления система будет игнорировать календарь, но актуализировать другие справочники.

Способ 3. Создание дубликата производственного календаря

Этот метод считается наиболее надежным для тех, кто не хочет прибегать к программированию. Логика системы 1С такова: она обновляет только тот календарь, который является «основным» или «типовым» (обычно с наименованием «Российская Федерация»). Если мы создадим собственный объект, система не будет знать о его существовании в контексте автообновлений.

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

Способ 4. Изменение признака автообновления в регистре сведений

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

Проанализируем ситуацию: в этом регистре у записи, относящейся к производственному календарю, есть флаг Обновлять автоматически. Однако форма записи обычно защищена свойством Только просмотр. Чтобы снять этот флаг, нам потребуется либо написать небольшую внешнюю обработку, либо воспользоваться расширением, которое позволит изменить значение этого ресурса. Стоит учитывать, что при глобальном обновлении конфигурации или запуске процедуры /СЗапуститьОбновлениеИнформационнойБазы эти записи могут восстановиться в исходное состояние, поэтому метод требует периодического контроля.

Способ 5. Программная блокировка через расширение конфигурации

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

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


&Вместо("ПриДобавленииКлассификаторов")
Процедура ИмяРасширения_ПриДобавленииКлассификаторов(Классификаторы)
    // Просто возвращаем управление, не выполняя стандартный код
    Возврат;
КонецПроцедуры

&Вместо("ПриЗагрузкеКлассификатора")
Процедура ИмяРасширения_ПриЗагрузкеКлассификатора(Идентификатор, Версия, Адрес, Обработан, ДополнительныеПараметры)
    // Блокируем загрузку конкретных данных
    Возврат;
КонецПроцедуры

Также можно воздействовать на модуль менеджера справочника ПроизводственныеКалендари. Выясним причину, по которой данные заменяются: система вызывает процедуру обновления основных данных. Мы можем вставить проверку, которая будет очищать таблицу изменений для конкретного года (например, 2024), прежде чем она запишется в базу:


&Перед("ОбновитьОсновныеДанныеПроизводственныхКалендарей")
Процедура ИмяРасширения_ОбновитьОсновныеДанныеПроизводственныхКалендарей(ТаблицаДанных, ИзмененияКалендарей)
    КолонкаГод = ТаблицаДанных.Колонки.Найти("Год");
    Если Не КолонкаГод = Неопределено Тогда
        СтруктураПоиска = Новый Структура;
        СтруктураПоиска.Вставить("Год", 2024); // Указываем нужный год
        МассивСтрок = ТаблицаДанных.НайтиСтроки(СтруктураПоиска);
        Для Каждого СтрокаМассива Из МассивСтрок Цикл
            ТаблицаДанных.Удалить(СтрокаМассива);
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Дополнительные факторы: Патчи и Макеты

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

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

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

← На главную