Что такое прелоадер с котом ("Пожалуйста, подождите") при открытии форм в 1С:Бухгалтерии и как он работает?

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

При работе с программными продуктами на платформе "1С:Предприятие 8", особенно с конфигурациями, разработанными на основе "Библиотеки стандартных подсистем" (БСП), такими как "1С:Бухгалтерия предприятия", пользователи могут иногда замечать на экране форму ожидания с анимацией в виде кота и текстом "Пожалуйста, подождите". Эта форма появляется при открытии некоторых списков или выполнении других длительных операций, а затем исчезает, уступая место готовой к работе форме. Многие задаются вопросом: что это за механизм, как он работает и где его можно настроить? Давайте вместе разберем эту ситуацию.

Выясним, что этот "прелоадер", или форма ожидания, не является базовой настройкой платформы, которую можно просто включить или выключить в конфигураторе. Это продуманный функционал, реализованный в рамках "Библиотеки стандартных подсистем" (БСП). Его основная цель – улучшить пользовательский опыт при выполнении операций, которые потенциально могут занять значительное время. Вместо того чтобы блокировать интерфейс и создавать впечатление "зависания" программы, 1С запускает длительную операцию в фоновом режиме, а пользователю показывает информативное окно ожидания.

Принцип работы прелоадера в 1С

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

  1. Инициация длительной операции. Когда пользователь пытается открыть форму списка, которая, по задумке разработчика конфигурации, может потребовать значительного времени на подготовку данных (например, для выполнения сложного запроса, обработки большого объема информации или первичного заполнения кэша), система не открывает форму напрямую. Вместо этого запускается специальный обработчик, который определяет необходимость асинхронного выполнения.
  2. Запуск фонового задания на сервере. Процедура, ответственная за получение и обработку данных для формы списка, выносится в отдельное фоновое задание. Это задание выполняется на сервере 1С:Предприятия, не нагружая клиентскую часть и не блокируя пользовательский интерфейс. В БСП для этого активно используются механизмы фоновых заданий и длительных операций.
  3. Отображение формы ожидания. Сразу после запуска фонового задания на сервере, на клиентской стороне открывается специальная форма, как правило, это общая форма ДлительнаяОперация из БСП. Именно она содержит анимированного кота и текст "Пожалуйста, подождите". Эта форма информирует пользователя о том, что система активно работает над его запросом.
  4. Мониторинг статуса выполнения. Клиентская часть программы с определенной периодичностью опрашивает сервер, чтобы узнать текущий статус выполнения фонового задания. Это делается в неблокирующем режиме, что позволяет сохранять отзывчивость интерфейса.
  5. Завершение фонового задания и открытие основной формы. Как только фоновое задание на сервере успешно завершает свою работу и все необходимые данные для формы списка подготовлены, форма ожидания ДлительнаяОперация автоматически закрывается. После этого пользователю отображается уже полностью готовая и заполненная форма списка, которая сразу готова к взаимодействию, без дополнительных пауз или ожиданий.

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

Ключевая роль подписки на событие ПереопределитьПолучаемуюФормуСпискаСОжиданием

Как было верно подмечено в ходе обсуждения, в контексте форм списков одной из центральных ролей в реализации этого механизма играет подписка на событие с названием ПереопределитьПолучаемуюФормуСпискаСОжиданием. Давайте разберем ее значение:

В платформе 1С:Предприятие 8 подписка на событие — это мощный механизм, который позволяет разработчикам "вмешиваться" в стандартные действия платформы или объектов конфигурации, не изменяя их основной код. Это достигается путем создания специального объекта — "Подписка на событие", который связывает определенное событие (например, открытие формы) с обработчиком (процедурой в общем модуле).

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

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

Обработчик этой подписки может выглядеть концептуально следующим образом (без учета всей сложной логики БСП):


// Пример обработчика подписки
Процедура ПереопределитьПолучаемуюФормуСпискаСОжиданиемПриОткрытии(Источник, Отказ, СтандартнаяОбработка) Экспорт
    // Источник – это объект, который инициировал событие (например, открываемая форма).
    // Отказ – булево значение, если установить в Истина, то стандартное действие будет отменено.
    // СтандартнаяОбработка – булево значение, позволяет управлять стандартной обработкой события.

    // Получаем имя открываемой формы из источника события
    ИмяФормы = Источник.ИмяФормы; 

    // Используем внутренние функции БСП для определения, 
    // нужна ли форма ожидания для данной формы и текущих условий.
    // Например, если это "тяжелый" список или первый раз за сеанс.
    Если ДлительныеОперации.ТребуетсяПоказатьФормуОжиданияДляСписка(ИмяФормы) Тогда
        // Если требуется, запускаем механизм длительной операции.
        // Это включает в себя запуск фонового задания на сервере 
        // и открытие формы ДлительнаяОперация на клиенте.
        ДлительныеОперации.ЗапуститьДлительнуюОперациюДляФормы(Источник);

        // Отменяем стандартное открытие формы, так как мы открываем ее асинхронно.
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

В этом примере, если логика внутри ДлительныеОперации.ТребуетсяПоказатьФормуОжиданияДляСписка() возвращает Истина, то вызывается функция ДлительныеОперации.ЗапуститьДлительнуюОперациюДляФормы(), которая и запускает весь описанный выше асинхронный процесс. Важно, что при этом переменная Отказ устанавливается в Истина, что предотвращает стандартное (блокирующее) открытие формы, давая возможность механизму ожидания взять управление на себя.

Сходство с поведением отчетов в 1С:Предприятии (начиная с версии 8.3.19)

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

Этот механизм работает "из коробки" и не требует специальных настроек со стороны разработчика для базовых отчетов. Он использует встроенные возможности платформы по работе с асинхронными вызовами и фоновыми заданиями, например, через объекты ФоновыеЗаданияКлиентСервер и модуль ДлительныеОперации из БСП. Это показывает, что разработчики платформы стремятся к тому, чтобы любые потенциально долгие операции — будь то открытие формы, формирование отчета или групповая обработка данных — были максимально комфортны для конечного пользователя, предоставляя ему обратную связь и сохраняя отзывчивость интерфейса.

Настройка и управление прелоадером

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

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

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

Заключение

Итак, прелоадер с котом и текстом "Пожалуйста, подождите" при загрузке форм списков в "1С:Бухгалтерии" — это не случайное явление и не "магия" платформы. Это продуманный и эффективно реализованный механизм из "Библиотеки стандартных подсистем", который использует асинхронные операции и фоновые задания для улучшения пользовательского опыта. Он позволяет избежать блокировки интерфейса и информирует пользователя о выполнении ресурсоемких задач. Ключевую роль в этом процессе для форм списков играет подписка на событие ПереопределитьПолучаемуюФормуСпискаСОжиданием, которая является точкой входа для активации механизма длительных операций. Понимание этого механизма позволяет разработчикам более эффективно работать с конфигурациями и создавать более отзывчивые и комфортные для пользователя решения.

← На главную