При работе с программными продуктами на платформе "1С:Предприятие 8", особенно с конфигурациями, разработанными на основе "Библиотеки стандартных подсистем" (БСП), такими как "1С:Бухгалтерия предприятия", пользователи могут иногда замечать на экране форму ожидания с анимацией в виде кота и текстом "Пожалуйста, подождите". Эта форма появляется при открытии некоторых списков или выполнении других длительных операций, а затем исчезает, уступая место готовой к работе форме. Многие задаются вопросом: что это за механизм, как он работает и где его можно настроить? Давайте вместе разберем эту ситуацию.
Выясним, что этот "прелоадер", или форма ожидания, не является базовой настройкой платформы, которую можно просто включить или выключить в конфигураторе. Это продуманный функционал, реализованный в рамках "Библиотеки стандартных подсистем" (БСП). Его основная цель – улучшить пользовательский опыт при выполнении операций, которые потенциально могут занять значительное время. Вместо того чтобы блокировать интерфейс и создавать впечатление "зависания" программы, 1С запускает длительную операцию в фоновом режиме, а пользователю показывает информативное окно ожидания.
Чтобы понять, как функционирует форма ожидания, давайте рассмотрим подробнее ее основные шаги. Механизм основывается на асинхронном выполнении длительных операций и состоит из нескольких ключевых этапов:
ДлительнаяОперация из БСП. Именно она содержит анимированного кота и текст "Пожалуйста, подождите". Эта форма информирует пользователя о том, что система активно работает над его запросом.ДлительнаяОперация автоматически закрывается. После этого пользователю отображается уже полностью готовая и заполненная форма списка, которая сразу готова к взаимодействию, без дополнительных пауз или ожиданий.Такой подход обеспечивает непрерывность взаимодействия с программой, предотвращает ощущение "зависания" и значительно повышает комфорт работы пользователя, особенно при работе с объемными базами данных или сложными отчетами.
Как было верно подмечено в ходе обсуждения, в контексте форм списков одной из центральных ролей в реализации этого механизма играет подписка на событие с названием ПереопределитьПолучаемуюФормуСпискаСОжиданием. Давайте разберем ее значение:
В платформе 1С:Предприятие 8 подписка на событие — это мощный механизм, который позволяет разработчикам "вмешиваться" в стандартные действия платформы или объектов конфигурации, не изменяя их основной код. Это достигается путем создания специального объекта — "Подписка на событие", который связывает определенное событие (например, открытие формы) с обработчиком (процедурой в общем модуле).
Подписка ПереопределитьПолучаемуюФормуСпискаСОжиданием является частью БСП и предназначена специально для перехвата события открытия форм списков. Ее обработчик вызывается платформой в момент, когда собирается открыться та или иная форма списка.
Внутри обработчика этой подписки содержится логика, которая анализирует, для какой именно формы происходит событие открытия, и принимает решение: нужно ли запускать механизм длительной операции с показом прелоадера. Вот почему прелоадер появляется не всегда, а только при определенных условиях:
Обработчик этой подписки может выглядеть концептуально следующим образом (без учета всей сложной логики БСП):
// Пример обработчика подписки
Процедура ПереопределитьПолучаемуюФормуСпискаСОжиданиемПриОткрытии(Источник, Отказ, СтандартнаяОбработка) Экспорт
// Источник – это объект, который инициировал событие (например, открываемая форма).
// Отказ – булево значение, если установить в Истина, то стандартное действие будет отменено.
// СтандартнаяОбработка – булево значение, позволяет управлять стандартной обработкой события.
// Получаем имя открываемой формы из источника события
ИмяФормы = Источник.ИмяФормы;
// Используем внутренние функции БСП для определения,
// нужна ли форма ожидания для данной формы и текущих условий.
// Например, если это "тяжелый" список или первый раз за сеанс.
Если ДлительныеОперации.ТребуетсяПоказатьФормуОжиданияДляСписка(ИмяФормы) Тогда
// Если требуется, запускаем механизм длительной операции.
// Это включает в себя запуск фонового задания на сервере
// и открытие формы ДлительнаяОперация на клиенте.
ДлительныеОперации.ЗапуститьДлительнуюОперациюДляФормы(Источник);
// Отменяем стандартное открытие формы, так как мы открываем ее асинхронно.
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
В этом примере, если логика внутри ДлительныеОперации.ТребуетсяПоказатьФормуОжиданияДляСписка() возвращает Истина, то вызывается функция ДлительныеОперации.ЗапуститьДлительнуюОперациюДляФормы(), которая и запускает весь описанный выше асинхронный процесс. Важно, что при этом переменная Отказ устанавливается в Истина, что предотвращает стандартное (блокирующее) открытие формы, давая возможность механизму ожидания взять управление на себя.
Упомянутый на форуме механизм отображения отчетов, появившийся в платформе 1С:Предприятие 8.3.19, является еще одним подтверждением общей тенденции развития платформы в сторону повышения комфорта пользователя при работе с длительными операциями. Принцип его работы очень похож:
Этот механизм работает "из коробки" и не требует специальных настроек со стороны разработчика для базовых отчетов. Он использует встроенные возможности платформы по работе с асинхронными вызовами и фоновыми заданиями, например, через объекты ФоновыеЗаданияКлиентСервер и модуль ДлительныеОперации из БСП. Это показывает, что разработчики платформы стремятся к тому, чтобы любые потенциально долгие операции — будь то открытие формы, формирование отчета или групповая обработка данных — были максимально комфортны для конечного пользователя, предоставляя ему обратную связь и сохраняя отзывчивость интерфейса.
Для разработчиков, работающих с конфигурациями на БСП, понимание этого механизма критически важно. Чтобы влиять на появление прелоадера, необходимо работать с:
ПереопределитьПолучаемуюФормуСпискаСОжиданием), а также другие подписки, отвечающие за длительные операции.ДлительныеОперацииКлиент, ДлительныеОперацииСервер, ФоновыеЗаданияКлиентСервер, СтандартныеПодсистемыКлиентСервер. Именно в них сосредоточены функции, которые определяют, когда и как показывать форму ожидания, а также как управлять фоновыми заданиями.Изменение или отключение этого механизма требует глубоких знаний БСП и платформы 1С. Обычно это не рекомендуется, так как может привести к ухудшению пользовательского опыта, но в специфических случаях (например, при отладке или очень узких сценариях) может быть необходимо.
Итак, прелоадер с котом и текстом "Пожалуйста, подождите" при загрузке форм списков в "1С:Бухгалтерии" — это не случайное явление и не "магия" платформы. Это продуманный и эффективно реализованный механизм из "Библиотеки стандартных подсистем", который использует асинхронные операции и фоновые задания для улучшения пользовательского опыта. Он позволяет избежать блокировки интерфейса и информирует пользователя о выполнении ресурсоемких задач. Ключевую роль в этом процессе для форм списков играет подписка на событие ПереопределитьПолучаемуюФормуСпискаСОжиданием, которая является точкой входа для активации механизма длительных операций. Понимание этого механизма позволяет разработчикам более эффективно работать с конфигурациями и создавать более отзывчивые и комфортные для пользователя решения.