Передача параметров из фонового задания 8.2

9. non1ka 30 16.05.14 13:10 Сейчас в теме
Всем доброго времени суток. Удалось ли побороть проблему? столкнулся ровно с такой же) Заранее спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
10. Evil Beaver 8114 19.05.14 14:06 Сейчас в теме
(4) Andrey, дайте пожалуйста весь связанный код. Например, откуда вызывается ПолучитьСлово(), где вы пытаетесь достаеть результат?
Короче, сможете сделать конкретный пример воспроизведения в виде обработки, чтобы не тратить время на подготовку к поиску проблемы?
11. non1ka 30 20.05.14 10:29 Сейчас в теме
(10) Evil Beaver,вот мой пример кода:

(Конфигурация УПП релиз 1.3.45.2, платформа 8.3.4.465, база файловая)

 &НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПодключитьОбработчикОжидания("ОбработчикОжидания_ОбновитьИндикаторыВыполненияЭтапов", 5);
    
    АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор);
    ИдентификаторЗадания = "ДействияПоЗавершениюПервичногоОсомтра_" + АктТехническогоОсмотра.УникальныйИдентификатор();
    ПараметрыЗадания = Новый Массив;
    ПараметрыЗадания.Добавить(АктТехническогоОсмотра);
    ПараметрыЗадания.Добавить(АдресВременногоХранилища);
    ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗадания, ИдентификаторЗадания);
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработчикОжидания_ОбновитьИндикаторыВыполненияЭтапов()
    
    СтруктураПараметровВыполнения = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); //ПолучитьСтруктуруПараметровВыполненияФоновогоЗаданияНаСерв­ере();

   . . .     
   // Далее на форму выводятся полученные результаты
        
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗадания, ИдентификаторЗадания)
    
    ВыполнитьОбработкуЗаданий();
    
    ФоновоеЗадание = ФоновыеЗадания.Выполнить("ЮИК_РаботаСФоновымиЗаданиями.ВыполнитьДействияПоЗавершениюПервичногоОсомтра", ПараметрыЗадания, ИдентификаторЗадания);
    // Пробовал и с ожиданием завершения, и без
    Попытка
        ФоновоеЗадание.ОжидатьЗавершения(2);
    Исключение
        
    КонецПопытки;    
    
КонецПроцедуры

// Модуль выполнения фонового задания

Процедура ВыполнитьДействияПоЗавершениюПервичногоОсомтра(АктТехническогоОсмотра, АдресВременногоХранилища) Экспорт
    
    СтруктураПараметровВыполнения = Новый Структура("ИндексЭтапа, ИндикаторЭтапа1МаксимальноеЗначение, ИндикаторЭтапа1ТекущееЗначение,
                                                       |ИндикаторЭтапа2МаксимальноеЗначение, ИндикаторЭтапа2ТекущееЗначение,
                                                       //|ИндикаторЭтапа3МаксимальноеЗначение, ИндикаторЭтапа3ТекущееЗначение,

                                                       |ИндикаторЭтапа3,
                                                       |ИндикаторЭтапа4МаксимальноеЗначение, ИндикаторЭтапа4ТекущееЗначение",
                                                       0,0,0,0,0,0,0,0,0);
        
    СтруктураПараметровВыполнения.ИндексЭтапа = 1;
    ПоместитьВоВременноеХранилище(СтруктураПараметровВыполнения, АдресВременногоХранилища);
        
    ВыполнитьПервыйВторойЭтап(СтруктураПараметровВыполнения, АдресВременногоХранилища);
    
    СтруктураПараметровВыполнения.ИндексЭтапа = 3;
    ПоместитьВоВременноеХранилище(СтруктураПараметровВыполнения, АдресВременногоХранилища);
        
    СсылкаНаДокументОПЗС = ВыполнитьТретийЭтап(СтруктураПараметровВыполнения, АдресВременногоХранилища);
    
    СтруктураПараметровВыполнения.ИндексЭтапа = 4;
    ПоместитьВоВременноеХранилище(СтруктураПараметровВыполнения, АдресВременногоХранилища);
    
    
    ВыполнитьЧетвертыйЭтап(СсылкаНаДокументОПЗС, СтруктураПараметровВыполнения, АдресВременногоХранилища);
    
КонецПроцедуры
Показать
LimarenkoA; Region_64; Lord_Alexandr; Valentine1448; FSerg; +5 Ответить
13. FSerg 66 05.09.15 22:21 Сейчас в теме
(11) non1ka, спасибо за пример кода, очень помогло!
22. ulikpan 24.08.21 23:50 Сейчас в теме
(9)
(11) если вы в транзацкии запускаете, тогда это может быть причиной отсутствия параметра
12. non1ka 30 20.05.14 10:32 Сейчас в теме
Пытался сделать алгоритм через ПолучитьСообщенияПользователю, возвращает пустой массив. Такое впечатление, будто задание не выполняется, хотя в консоли пишет, что процесс идет.
14. RomDron 16.01.10 20:49 Сейчас в теме
В описании функции "ПоместитьВоВременноеХранилище" есть интересное примечание:
"Примечание:
Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание."

Сколько не бьюсь - реализовать не получается. Хотя вроде все по инструкции. Может кто уже пробовал реализовать?
15. RomDron 19.01.10 08:44 Сейчас в теме
Странно, неужели никого не волновала эта проблема? :(
16. Душелов 4017 19.01.10 08:53 Сейчас в теме
Так стоило бы свой код показать.
17. RomDron 19.01.10 15:13 Сейчас в теме
из справочника запускаю процедуру

&НаСервере
Процедура ЗапуститьФоновоеЗадание()
	
	АдресДанных= ПоместитьВоВременноеХранилище("", ЭтаФорма.УникальныйИдентификатор);
   Ключ = Новый УникальныйИдентификатор;

    МассивПараметров = Новый Массив(1);
    МассивПараметров[0] = АдресДанных;
    ФоновыеЗадания.Выполнить("ИнформационныеБазыСервер.ТЕСТ", МассивПараметров, Ключ, "Получение параметра"); 
	
КонецПроцедуры	
Показать


АдресДанных - строковой реквизит формы

в глоб. модуле (галки сервер и вызов сервера):

Процедура ТЕСТ(АдресДанных) Экспорт
	
	стр2 = ПоместитьВоВременноеХранилище("ТестовоеСлово", АдресДанных);
	
КонецПроцедуры


Теперь в том же справочнике

&НаСервере
Процедура ПолучитьСлово()
		
	Слово = ПолучитьИзВременногоХранилища(АдресДанных);

//Тут должно вернуться "ТестовоеСлово" а на самом деле ""....
КонецПроцедуры
18. Душелов 4017 19.01.10 15:23 Сейчас в теме
(4) В последнем коде откуда берется адрес данных?
19. RomDron 19.01.10 15:48 Сейчас в теме
(5) АдресДанных - строковой реквизит формы
20. Душелов 4017 19.01.10 22:37 Сейчас в теме
Тогда, думаю все дело в

"стр2 = ПоместитьВоВременноеХранилище("ТестовоеСлово", АдресДанных);"

Новый адрес хранилища - стр2, по нему и надо получать значение. А адрес данных служит для уникальной идентификации значения, чтобы оно не очищалось.
21. RomDron 20.01.10 08:39 Сейчас в теме
Так весь фокус в том что в родительском сеансе мы знаем адрес в котором будут лежать данные из фонового задания. Если адрес получается при помещении в хранилище в задании то как его передать родителю? :-)

Ps: Кстати, перед тем как добавить тему, я подозревал процентов на 90, что общение по этим вопросам будет только с тобой. :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот