Одноименный стандарт https://its.1c.ru/db/v8std#content:642
Зачем нужны длительные операции?
• Чтобы не зависал интерфейс пользователя;
• Чтобы веб-сервер и браузер не отваливались на таймауте длительного обращения;
• Чтобы дать возможность пользователю отменить операцию, когда ему надоело ждать.
В БСП реализован программный интерфейс, позволяющий запускать асинхронные серверные длительные операции.
См. общие модули
ДлительныеОперации, ДлительныеОперацииКлиент.Как использовать, на примере новой формы из которой будет выполняться длительная операции:
1. Создаем команду и делаем для нее клиентский обработчики
2. Делаем серверную контекстную функцию, например
НачатьДлительнуюОперацию и делаем вызов, например такой:&НаСервере
Функция НачатьДлительнуюОперацию()
ПараметрыПроцедуры = Новый Структура;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьВФоне("Обработки.МояОбработка.ВыполнитьДействие", ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
УникальныйИдентификатор - это свойство формы, он будет передан фоновому заданию, чтобы в случае, когда форма будет закрыта, платформа прервала фоновое задание на сервере.В результате функция вернет идентификатор длительной операции, для отслеживания выполнения.
В процедуре
Обработки.МояОбработка.ВыполнитьДействие это та самая процедура, которую вызываем на сервере асинхронно.3. Делаем в клиентском обработчике команды
ДлительнаяОперация = НачатьДлительнуюОперацию();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПриЗавершенииДлительнойОперации", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
Т.е. полученный идентификатор длительной операции передается процедуре, создающей ожидание завершения.
Всю логику промежуточного общения с сервером БСП берет на себя.
4. Описываем обработчик события завершения длительной операции, как
&НаКлиенте
Процедура ПриЗавершенииДлительнойОперации(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат);
КонецПроцедуры
Механизм длительных операций имеет множество параметров и режимов работы.
Можно отображать окно состояния, или не отображать, можно получать промежуточный програсс, или не получать.
В ДемоБСП есть обработка демонстрирующая множество вариантов работы, Обработки._ДемоДлительнаяОперация.