vypolnenie_procedury_v_fone_cherez_dlitelnye_operacii

Это старая версия документа!


Первая вызываемая функция на клиенте.

  • «Элементы.ИндикаторОбработкиExcel» - это элемент на форме типа «индикатор». В качестве источника данных у него реквизит формы «ИндикаторОбработкиExcel»
  • «ИндикаторОбработкиExcel» - реквизит формы. чило. туда будем закидывать число
&НаКлиенте
Процедура ЗапуститьВыгрузкНаСервере(РезультатВопроса, параметры) Экспорт 	
	Если РезультатВопроса = КодВозвратаДиалога.ok Тогда
		Элементы.ИндикаторОбработкиExcel.Видимость=Истина;
		ИндикаторОбработкиExcel	=	0;
		ВыполнитьФоновоеПолнуюВыгрузкуНаСервере();
		ПодключитьОбработчикОжидания("ПроверитьВыполнениеЗадания1", 1);
	КонецЕсли;
КонецПроцедуры

«ID_ФоновогоЗадания» - ревизит формы или объекта. Будет хранить в себе ГУИД фонового задания чтобы потом можно было по нему обращаться к фоновому заданию и проверять его состояние

&НаСервере
Процедура ВыполнитьФоновоеПолнуюВыгрузкуНаСервере()
	
	ID_ФоновогоЗадания = Неопределено;
	ПолнаяВыгрузкаВФоновом(ID_ФоновогоЗадания);
	Объект.ID_ФоновогоЗадания1 = ID_ФоновогоЗадания; 
	
	Мсооб	=	новый СообщениеПользователю;
	Мсооб.Текст	=	""+ТекущаяДата()+": Запущенна выгрузка в фоновом режиме. Вы можете продолжать работать. Прогресс будет отображаться в этом окне.";
	Мсооб.Сообщить();	
	
КонецПроцедуры

&НаСервере
Процедура ПолнаяВыгрузкаВФоновом(ID_ФоновогоЗадания)
	
	//Если нужно передат параметры в фоновое задание - формируем его в структуре
        СтруктураПараметров = Новый Структура;
	СтруктураПараметров.Вставить("УИДНастройки",ОбщийМодульОбменСPromUa.ПолучитьУИДобъекта(Объект.Ссылка));
	СтруктураПараметров.Вставить("РучнойВызов",истина);
	
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ЭтаФорма.УникальныйИдентификатор);
	ПараметрыВыполнения.ЗапуститьВФоне   = Истина;
	ПараметрыВыполнения.ЗапуститьНеВФоне = Ложь;
	ПараметрыВыполнения.НаименованиеФоновогоЗадания  = "ПолнаяВыгрузка_ВызовСФормы";
	ПараметрыВыполнения.ОжидатьЗавершение   = Ложь;	

	//тут путь уже непосредственно к самой процедуре которую нужно выполить в фоне**
        СтрокаЗапуска="ОбщийМодульОбменСPromUa.ОбменСPromUa_толькотовары";
	СтруктураЗадания = ДлительныеОперации.ВыполнитьВФоне(СтрокаЗапуска,СтруктураПараметров,ПараметрыВыполнения);
	
	ID_ФоновогоЗадания = СтруктураЗадания.ИдентификаторЗадания;
	
КонецПроцедуры
  • /sites/data/attic/vypolnenie_procedury_v_fone_cherez_dlitelnye_operacii.1614340057.txt.gz
  • Последнее изменение: 2021/02/26 11:47
  • tro