Как отключить проверку актуальности данных при открытии Оборотно-сальдовой ведомости в 1С:ERP

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

Многие пользователи и бухгалтеры, работающие в 1С:ERP Управление предприятием или 1С:Комплексная автоматизация, сталкиваются с раздражающей задержкой при формировании стандартных отчетов. Речь идет о появлении информационной панели на красном фоне с текстом: «Данные учета неактуальны по... Рекомендуется выполнить закрытие месяца». Мало того, что это сообщение перекрывает полезное пространство, так еще и сама проверка вызывает зависание формы на несколько секунд. Рассмотрим подробнее, почему это происходит и как программно отключить этот механизм, если стандартных настроек в интерфейсе не предусмотрено.

Почему в 1С:ERP нет простой «галочки» для отключения проверки?

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

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

Разбор механизма проверки актуальности

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

  1. При открытии формы отчета (например, ОборотноСальдоваяВедомость или АнализСчета) срабатывает клиентский код.
  2. Система обращается к общему модулю БухгалтерскийУчетКлиентПереопределяемый.
  3. Метод ПодключитьПроверкуАктуальности инициализирует обработчик ожидания.
  4. Через короткий интервал срабатывает фоновое задание или серверный вызов, который проверяет статусы в регистрах и выводит пресловутую красную панель.

Именно этот «обработчик ожидания» и запросы к базе данных создают ощущение «подтормаживания» интерфейса в момент, когда пользователь уже готов нажать кнопку «Сформировать». Если задержки вызваны избыточным объёмом информации в базе, для ускорения системы может быть выполнена многопоточная свёртка 1С:ERP для сокращения исторических данных.

Решение 1: Использование расширения для глобального отключения

Самый эффективный и быстрый способ, предложенный практикующими специалистами, — это создание расширения конфигурации. Мы переопределим поведение системы в точке входа, чтобы проверка просто не запускалась. Разберем по шагам, как это сделать: для автоматического создания резервной копии перед изменением кода удобно использовать Обновлятор 1С для архивирования и тестирования баз.

Создадим новое расширение и добавим в него общий модуль БухгалтерскийУчетКлиентПереопределяемый. Нам необходимо перехватить процедуру ПодключитьПроверкуАктуальности. Вместо того чтобы позволить системе выполнять стандартный код, мы заменим его «заглушкой».

Рассмотрим пример кода для расширения:


&Вместо("ПодключитьПроверкуАктуальности")
Процедура ИТ_ПодключитьПроверкуАктуальности(Форма, ПараметрыПроверки) Экспорт
    // Просто оставляем процедуру пустой.
    // Это предотвращает запуск обработчика ожидания и выполнение лишних запросов.
КонецПроцедуры

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

Решение 2: Программное скрытие элементов формы

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

Проанализируем процедуру ПриСозданииНаСервере в расширении формы отчета. Мы можем найти информационную панель по имени и установить её видимость в значение Ложь. Посмотрим на пример кода:


&После("ПриСозданииНаСервере")
Процедура ИТ_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Находим группу, отвечающую за актуальность данных
    ЭлементГруппа = ЭтаФорма.Элементы.Найти("ГруппаАктуальностьДанных");
    Если ЭлементГруппа <> Неопределено Тогда
        ЭлементГруппа.Видимость = Ложь;
    КонецЕсли;
    
    // Также можно скрыть информационную панель
    ЭлементПанель = ЭтаФорма.Элементы.Найти("ИнформационнаяПанель");
    Если ЭлементПанель <> Неопределено Тогда
        ЭлементПанель.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Решение 3: Корректное вмешательство через параметры

В некоторых случаях (в зависимости от конкретного релиза ERP 2.4 или 2.5) разработчики рекомендуют не просто «глушить» процедуру, а использовать штатные механизмы отказа. В процедурах проверки часто передается параметр Отказ или структура ПараметрыПроверки.

Если мы хотим оставить проверку для Монитора закрытия месяца, но убрать её для ОСВ, в расширении можно добавить проверку типа формы. Разберем этот вариант:


&Вместо("ПодключитьПроверкуАктуальности")
Процедура ИТ_ПодключитьПроверкуАктуальности(Форма, ПараметрыПроверки) Экспорт
    ИмяФормы = Форма.ИмяФормы;
    
    // Проверяем, является ли форма Оборотно-сальдовой ведомостью
    Если Найти(ИмяФормы, "ОборотноСальдоваяВедомость") > 0 Тогда
        // Для ОСВ ничего не делаем, проверка не запустится
        Возврат;
    Иначе
        // Для остальных форм вызываем стандартный обработчик (если нужно)
        ПродолжитьВызов(Форма, ПараметрыПроверки);
    КонецЕсли;
КонецПроцедуры

Важные замечания по производительности

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

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

Таким образом, мы рассмотрели несколько способов избавления от назойливого уведомления. Наиболее рекомендуемым является Решение 1, так как оно максимально эффективно убирает задержку при открытии отчетов и делает работу бухгалтера более комфортной.

← На главную