Книга знаний

1С:Предприятие / v8 / Приемы программирования / Встроенный язык

v8: Асинхронные вычисления без «заморозки» формы (на фоновых заданиях)

В бытность свою студентом, курсе на 1, открыл для себя в Delphi замечательную возможность создания многопоточных приложений. По делу и без дела, делал многопоточными все свои поделки – было интересно, хоть тогда у меня еще не было многоядерных процессоров. Постепенно мозги привыкли к этому, и когда я занялся 1С 8, меня ожидало разочарование – запущенный из формы код замораживал не только саму форму, но и окно приложения заодно. Грустно. «Финты ушами» с использованием генератора «Внешних событий» по душе не пришлись. А до фоновых заданий в версии 1С 8.1 добрался только сейчас.Автор статьи:
Последняя редакция №1 от 08.08.08
URL: http://kb.mista.ru/article.php?id=696

Ключевые слова: 1cv81, фоновое задание, асинхронно, многопоточность


Дано:

1С:Предприятие > 8.1.8, клиент-серверная архитектура, MS SQL.
Общий неглобальный серверный модуль. Обработка с одной формой, одной кнопкой и одним табличным полем.

Цель:

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

Методика:

Как показала практика, из отработавшего фонового задания вернуть штатным путем каке-либо данные невозможно. Имеется 2 способа, позволяющих это делать:
1) фоновое задание пишет результат своей работы в БД, обработка отслеживает, что фоновое задание завершилось и считывает из БД результат. В качестве места хранения результата предлагается использовать регистр сведений, где измерение хранит UID экземпляра фонового задания, а ресурс имеет тип ХранилищеЗначений.
2) извращенный способ – передать значение через программную генерацию исключения  (оператор «ВызватьИсключение»).

Решение:


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

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика