Заказать звонок

БСП УФ Форма длительной операции. Запуск фонового задания с показом выполнения

28.09.2016

Рассмотрим задачу, когда в обработке нужно запустить фоновое задание и при этом показывать форму выполнения фонового задания до его завершения. Рассмотрим на примере конфигурации с добавленной БСП.


 

Важное замечание! Нужны общие модули подсистемы БСП ДлительныеОперацииКлиент и ДлительныеОперации, общая форма ДлительнаяОперация.


 

Напоминание! Для отладки фонового задания в конфигураторе нужно отметить признак подключения к фоновым заданиямОтладка – Подключение… – Автоматическое подключение – Фоновые задания (рис. 1):

Рис. 1. Настройка отладки фоновых заданий

Потребуются изменения в следующих объектах:

  1. Форма обработки

    1. Добавить кнопку и команду запуска фонового задания

    2. Добавить реквизит ИдентификаторФЗ (тип УникальныйИдентификатор)

  2. Модуль формы обработки

    1. Добавить переменную ФормаДлительнойОперации

    2. Добавить описание команды запуска фонового задания

    3. Добавить процедуры для показа формы выполнения фонового задания до его завершения

Подробнее на примере:

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

 

Часть 1. Доработка формы обработки.

На форму обработки Новый_ЗаполнитьДокументНоменклатураПартнераКПолучению добавляем команду запуска фонового задания Заполнить и выводим кнопку на форму.

На форму добавляем реквизит ИдентификаторФЗ с типом УникальныйИдентификатор.


Часть 2. Доработка модуля формы обработки.

Открываем модуль формы обработки. Определяем следующие процедуры:

2.1 Добавляем переменную формы ФормаДлительнойОперации

&НаКлиенте

Перем ФормаДлительнойОперации;

2.2 Описываем команду запуска фонового задания Заполнить

&НаКлиенте

Процедура Заполнить(Команда)

//запуск ФЗ

Если ЗаполнитьСервер() Тогда

//запущено ФЗ

ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтаФорма,ИдентификаторФЗ);

ПодключитьОбработчикОжидания("ОбработчикОжиданияЗавершенияФЗ", 2);

КонецЕсли;

КонецПроцедуры

2.3 Описываем оставшиеся процедуры

2.3.1.

Предполагаем, что нужное фоновое задание описано в общем модуле Новый_ЗаполнениеДокументов в экспортной процедуре ФормированиеДокНоменклатураПартнераКПолучению, у которой один параметр Период (поэтому в массиве один элемент со значением параметра процедуры Период = ТекущаяДата()).

Присваиваем реквизиту формы ИдентификаторФЗ значение идентификатора фонового задания.

&НаСервере

Функция ЗаполнитьСервер()

ЗапущеноФЗ = Истина;

 

Если ЗапущеноФЗ Тогда

ПараметрыФЗ = Новый Массив;

ПараметрыФЗ.Добавить(ТекущаяДата());

 

ЗапущенноеФЗ = ФоновыеЗадания.Выполнить("Новый_ЗаполнениеДокументов.ФормированиеДокНоменклатураПартнераКПолучению", ПараметрыФЗ, , "Формирование документов Номенклатура партнера к получению");

 

ИдентификаторФЗ = ЗапущенноеФЗ.УникальныйИдентификатор;

КонецЕсли;

 

Возврат ЗапущеноФЗ;

КонецФункции

 

2.3.2.

Описываем ОбработчикОжиданияЗавершенияФЗ()

&НаКлиенте

Процедура ОбработчикОжиданияЗавершенияФЗ()

Если ПроверкаВыполнениеЗадания(ИдентификаторФЗ) Тогда

Если ФормаДлительнойОперации <> Неопределено Тогда

ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);

ФормаДлительнойОперации = Неопределено;

КонецЕсли;

 

ОтключитьОбработчикОжидания("ОбработчикОжиданияЗавершенияФЗ");

КонецЕсли;

КонецПроцедуры

 

2.3.3.

Описываем ПроверкаВыполнениеЗадания()

&НаСервереБезКонтекста

Функция ПроверкаВыполнениеЗадания(ИдентификаторФЗ)

Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторФЗ);

Конецфункции

Теперь можно открыть конфигурацию в режиме Предприятие и проверить внесенные изменения. Во время выполнения фонового задания будет отображаться форма, как на рис. 2:

Рис. 2. Форма выполнения фонового задания


Автор

 

Королева Дина


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей