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

9. non1ka 30 16.05.14 13:10 Сейчас в теме
Всем доброго времени суток. Удалось ли побороть проблему? столкнулся ровно с такой же) Заранее спасибо.
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
10. Evil Beaver 8107 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. Душелов 4013 19.01.10 08:53 Сейчас в теме
Так стоило бы свой код показать.
17. RomDron 19.01.10 15:13 Сейчас в теме
из справочника запускаю процедуру

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

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


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

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

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


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

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

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

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

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

Ps: Кстати, перед тем как добавить тему, я подозревал процентов на 90, что общение по этим вопросам будет только с тобой. :)
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день