Асинхронное выполнение длительных операций

28.12.20

Разработка - БСП (Библиотека стандартных подсистем)

Демонстрация использования функционала БСП для выполнения длительных операций. Механизм может быть полезен, например, при загрузке/выгрузке больших объемов данных.

Демонстрации работы асинхронного выполнения длительной операции, будем использовать конфигурацию Управление торговлей, редакция 11 (11.4.13.99), БСП 3.1.3.353.

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

Для примера создадим справочник "РаботаВФоне":

 В форме справочника добавим команду "ВыполнитьРасчет":

Код модуля формы будет следующим:

&НаКлиенте
Процедура ВыполнитьРасчет()
	ДлительнаяОперация = НачатьВыполнениеНаСервере();
	ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры

&НаСервере
Функция НачатьВыполнениеНаСервере()
	МойПараметр1 = "МойПараметр1";
	МойПараметр2 = "МойПараметр2";
	
	Возврат ДлительныеОперации.ВыполнитьПроцедуру(, "РаботаВФоне.ВыполнитьРасчет", 
	МойПараметр1, МойПараметр2);
КонецФункции

&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ПриЗавершенииРасчета();
КонецПроцедуры 

Процедура ПриЗавершенииРасчета()
	Сообщить("У нас все получилось!");
КонецПроцедуры

Также нам понадобится общий модуль "РаботаВФоне" с галочкой "Сервер" и экспортной процедурой "ВыполнитьРасчет".

Процедура ВыполнитьРасчет(Знач МойПараметр1, Знач МойПараметр2) Экспорт
	
	ТекДата = ТекущаяДата();	
	Пока ТекущаяДата() < ТекДата + 5*60 Цикл 
	КонецЦикла;
	
КонецПроцедуры

Запускаем в пользовательском режиме, создаем элемент справочника и нажимаем кнопку "Выполнить расчет".

Появляется окно ожидания:

А через пять минут появляется сообщение об успешном выполнении операции:

Если необходимо возвращать результат выполнения длительной операции, нужно использовать метод:

ДлительныеОперации.ВыполнитьФункцию

В других версиях БСП имена функция могут отличаться, но суть остается той же. 

Всем спасибо!

длительные операции фоновые задания БСП асинхронное

См. также

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1272    dimanich70    6    

13

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    682    FilippovRI    0    

15

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2343    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    5117    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

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

15.01.2024    3791    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4819    mrXoxot    11    

99
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AnryMc 849 28.12.20 10:37 Сейчас в теме
(0)
В других версиях БСП имена функция могут отличаться


Вот за что я ЛЮБЛЮ применять БСП ;-)
rpgshnik; BigB; prog_mayskiyse; +3 Ответить
2. EvgeniuXP 01.01.21 08:01 Сейчас в теме
В НачатьВыполнениеНаСервере() создаем два "моих параметра", а в ВыполнитьРасчет передаем один МойПараметр.
prog_mayskiyse; +1 Ответить
3. ellavs 1022 04.01.21 11:45 Сейчас в теме
За статью спасибо. Жаль только, что пример опять про длительные операции на сервере... никак не найду пример оптимальной реализации асинхронных длительных операций на клиенте :(
prog_mayskiyse; +1 Ответить
4. ovasiliev 6 09.01.21 12:42 Сейчас в теме
(3) На мой взгляд это понятно.
Необходимость в асинхроне возникает, когда есть две машины, и нужно устранить ситуацию, когда одна машина работает, а другая ковыряет в носу и ждёт результата работы первой. Если же длительная операция выполняется на одной, она и так должна грузить ресурсы так, что параллельно работать будет некомфортно. Если это не так, то скорее всего что-то написано не правильно.
5. ellavs 1022 09.01.21 15:39 Сейчас в теме
(4) в последнее время появляются задачи, связанные со взаимодействием с разными внешними системами, которые находятся в защищенных сетях, и обычно доступ к ним есть только с клиентской машины (т.е. машина находится внутри специальной защищенной сети для конкретной внешней системы, а также взаимодйствует с криптопровайдером), поэтому все длительные операции по обращению и обмену данными с этими системами происходят на стороне "клиента". Один из вариантов - настраивать в каждой защищенной сети и для каждой внешней системы отдельный кластер (но это лишние затраты для заказчика - таких внешних систем и сетей может быть несколько, серверных лицензий не напасешься). Пока только один выход - запускать несколько клиентских сессий.
7. ovasiliev 6 09.01.21 21:40 Сейчас в теме
(5) В принципе, это совершенно законно - пакетно запускать сессию для выполнения конкретной задачи. Настолько законно, что я понимаю отсутствие длительных операций в клиентском режиме. Вернее, это и есть фоновое задание в клиентском режиме.
6. ovasiliev 6 09.01.21 21:36 Сейчас в теме
8. retr0 26.10.21 06:42 Сейчас в теме
И че, зачем эта статья здесь? Снова статья ради статьи, ноль новый инфы максимум вторичности.
RocKeR_13; +1 Ответить
Оставьте свое сообщение