Выполнение длительных операций в 1С 8 с помощью БСП 2.3

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

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

В Интернете есть множество примеров, как это сделать неудобно. Благодаря БСП 2.3 мы можем запустить выполнение длительной операции с выводом формы длительной операции («крутящееся колёсико») и сообщение прогресса выполнения буквально в несколько строк кода.

Рассмотрим тестовую задачу.

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

Для решения задачи:

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

Серверный общий модуль

В коде общего модуля разместим процедуру фонового задания и процедуру, выполняющую длительную операцию — паузу:

2. Создадим обработку «ТестоваяОбработка» с формой обработки.

3. На форме обработки создадим реквизит формы «ДлительнаяОперация» с типом «Произвольный».

В этом пункте заключается одно из основных отличий от других примеров обработки длительных операций. Нужно создать всего навсего один реквизит, а не несколько (в других примерах упоминаются реквизиты «АдресХранилища» и «ИдентификаторЗадания»).

В БСП 2.3 нужен всего один реквизит формы, который будет хранить структуру со всеми свойствами запущенного задания.

Реквизиты формы

4. Также создаём реквизит формы «РезультатВычислений», в который фоновое задание вернёт результат.

5. В обработчике нажатия кнопки размещаем следующий код:

Также в модуле формы требуется еще два метода:

Вот и всё. Не нужно самим создавать никаких обработчиков ожидания и избыточных методов/реквизитов. Всё уже сделано за нас разработчиками БСП 2.3.

Форма длительной операции:

Форма длительной операции

Результат работы длительной операции — в поле ввода появился текст:

Результат длительной операции

Данный код можно легко модифицировать под свои нужды. Удачи!

Поделиться