![]() |
|
Фоновые задания, Временное хранилище и Обычные формы | ☑ | ||
---|---|---|---|---|
0
seperblunt2
23.07.19
✎
09:47
|
Всем добрый день.
Пытаюсь реализовать возврат результат работы ФЗ в "клиента" на обычных формах через временное хранилище. Не могу сообразить, что нужно передать в качестве УникальногоИдентификатора формы в моменте когда получаешь адрес ВХ для передачи его в ФЗ. На УФ это выглядит так: Адрес_ВХ = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор); на ОФ - что передать? КлючУникальности не отрабатывает.. |
|||
1
zwolf
23.07.19
✎
09:53
|
По-моему, так исчерпывающе |
|||
2
seperblunt2
23.07.19
✎
09:57
|
(1) УникальныйИдентификатор формы есть только в УФ и там у меня все хорошо отрабатывает
(реализую многопоточность - готовятся куча ТаблицЗначений).. ... или я чего то не увидел в исчерпывающей справке? |
|||
3
Andreyyy
23.07.19
✎
10:01
|
Адрес_ВХ = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор);
|
|||
4
zwolf
23.07.19
✎
10:02
|
(2) > готовятся куча ТаблицЗначений
Глубоко поъ. Третий абзац. |
|||
5
seperblunt2
23.07.19
✎
10:04
|
(3)(4) Тогда то, что помещу во временном в фоновое не будет доступно из формы:
Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. |
|||
6
Andreyyy
23.07.19
✎
10:05
|
С ОФ какая-то засада была для клиент-сервера и пришлось сделать так:
1. Адрес получать в модуле на сервере: АдресРезультатаФоновогоЗадания = ОбщийМодульНаСервереТакойТо.ПолучитьАдресРезультатаФоновогоЗадания(КлючУникальности); Функция ПолучитьАдресРезультатаФоновогоЗадания(УникальныйИдентификатор) Экспорт Возврат(ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор)); КонецФункции |
|||
7
Andreyyy
23.07.19
✎
10:07
|
2. Получение результата:
РезультатПодключения = ОбщийМодульНаСервереТакойТо.ПолучитьРезультатФоновогоЗадания(АдресРезультатаФоновогоЗадания); УдалитьИзВременногоХранилища(АдресРезультатаФоновогоЗадания); Функция ПолучитьРезультатФоновогоЗадания(АдресРезультатаФоновогоЗадания) Экспорт Возврат(ПолучитьИзВременногоХранилища(АдресРезультатаФоновогоЗадания)); КонецФункции |
|||
8
seperblunt2
23.07.19
✎
10:13
|
(6) (7) - увы не взлетело
модуль формы: Процедура Кнопка1Нажатие(Элемент) Массив_Заданий = Новый Массив; Для Сч = 1 По 1 Цикл Массив_Параметров = Новый Массив; Адрес_ВХ = РК_Операции_BI.ПолучитьАдресРезультатаФоновогоЗадания(КлючУникальности); //Адрес_ВХ = ПоместитьВоВременноеХранилище(Неопределено, КлючУникальности); ////Адрес_ВХ = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор); Массив_Параметров.Добавить(Адрес_ВХ); //СтрЗаменить(Новый УникальныйИдентификатор, "-", "_") Задание = ФоновыеЗадания.Выполнить("РК_Операции_BI.Поместить_ТЗ_В_Ячейку_Памяти", Массив_Параметров, , "Тест_фона"); Массив_Заданий.Добавить(Новый Структура("Задание, Адрес_ВХ", Задание, Адрес_ВХ)); КонецЦикла; КонецПроцедуры Процедура Кнопка2Нажатие(Элемент) Для каждого Сохр_Задание Из Массив_Заданий Цикл Тек_Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Сохр_Задание.Задание.УникальныйИдентификатор); Если Тек_Задание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда Результат = РК_Операции_BI.ПолучитьРезультатФоновогоЗадания(Сохр_Задание.Адрес_ВХ); УдалитьИзВременногоХранилища(Сохр_Задание.Адрес_ВХ); Если ЗначениеЗаполнено(Результат) Тогда Сообщить(Результат); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ПриОткрытии() КлючУникальности = Новый УникальныйИдентификатор; КонецПроцедуры модуль РК_Операции_BI: Процедура Поместить_ТЗ_В_Ячейку_Памяти(Адрес_Ячейки) Экспорт ГС = Новый ГенераторСлучайныхЧисел; ПоместитьВоВременноеХранилище(ГС.СлучайноеЧисло(100, 200), Адрес_Ячейки); Сообщить(ГС.СлучайноеЧисло(100, 200)); КонецПроцедуры Функция ПолучитьАдресРезультатаФоновогоЗадания(УникальныйИдентификатор) Экспорт Возврат(ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор)); КонецФункции Функция ПолучитьРезультатФоновогоЗадания(АдресРезультатаФоновогоЗадания) Экспорт Возврат(ПолучитьИзВременногоХранилища(АдресРезультатаФоновогоЗадания)); КонецФункции |
|||
9
Andreyyy
23.07.19
✎
10:15
|
(8) КлючУникальности это свойство формы, присваивать ничего не нужно.
|
|||
10
seperblunt2
23.07.19
✎
10:22
|
(7) (8) заработало - снимаю шляпу. На модуле стояла галка "Клиент" сделал в чисто серверном модуле - полетело.
Благодарю |
|||
11
seperblunt2
23.07.19
✎
10:24
|
Миста всемогущая :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |