|   |   | 
| 
 | Длительные (фоновые) задания + Поместить во временное хранилище | ☑ | ||
|---|---|---|---|---|
| 0
    
        Eugeneer 02.10.22✎ 12:47 | 
        Короче мне нужно, чтобы фоновое задание (функция) мне вернула целый список стркутуры. Там есть просто пара строк, потом ТЗ, и еще самое важное - тоже адрес во временном хранилище, куда тоже кое что впихнуто.
 Поэтому соответственно у меня в фунции (которая фоном) идет возврат СтруктураРезультата.... Я так понял исходя из длительных операций. Что эта любой результат фоновых функций всегда задвигается в Результат.АдресРезультата. Ну т.е. чтобы мы не возвращали - оно всегда в хранилище. Единственная хроень - что там адрес можно заранее свой передать. Но вот беда, а как мне сдеклать чтобы адрес был в адресе. Ну т.е. вся структура передачи в хранилище, ап в этой структуре еще адрес на еще одно хранилище... Я так понял что беда с фоновыми - оно не видит никаких других адресов, кроме своего (типа сессии то разные). Вот такая штука Примечание: Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. | |||
| 1
    
        Eugeneer 02.10.22✎ 12:52 | 
        Мне просто нужно чтобы фоном отработала одна длительная фигня, которая бы на серваке данные в хранилище впихнула.
 Вернула мне адренс этого хранилища. Чтобы потом с этими данными дальше работать в других процедурах - вызывая из хранилища. Без фонового задания это все возможно. Но вот беда что фоновое их пихает видимо в сессию из которой достать адрес невозможно. | |||
| 2
    
        RomanYS 02.10.22✎ 13:36 | 
        Код бы минимально воспроизводимый привёл. Фоновые сам создаешь или методами БСП?     | |||
| 3
    
        Eugeneer 02.10.22✎ 13:54 | 
        https://its.1c.ru/db/v8std/content/642/hdoc
 Почти один в один. Только есть своя функция (глобальник) | |||
| 4
    
        Eugeneer 02.10.22✎ 13:58 | 
        в ней есть
 АдресДанныхВХранилище = ПоместитьПоВременноеХранилище(Туту большая хрень,Новый УникальныйИдентификатор); СтруктураРезультата.Вставить("АдресДанныхВХранилище",АдресДанныхВХранилище); Возврат СтруктураРезультата; &НаКлиенте Процедура ОткрытьФайлИмпорта_ПриЗавершении(Результат, ДополнительныеПараметры) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; Если Результат.Статус = "Ошибка" Тогда ВызватьИсключение Результат.ПодробноеПредставлениеОшибки; КонецЕсли; СтруктураРезультата = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); //УдалитьИзВременногоХранилища(Результат.АдресРезультата); Объект.АдресДанныхВХранилище = СтруктураРезультата.АдресДанныхВХранилище; Объект.ИдентификаторПрайса = СтруктураРезультата.ИдентификаторПрайса; Объект.ИнформацияФайл = СтруктураРезультата.ИнформацияФайл; Объект.ТабличныйДокумент = СтруктураРезультата.ТабличныйДокумент; ЗаполнитьТаблицыВОбработке(); ПолучитьСохраненныеНастройкиКолонокПрофиляСервер(); Элементы.Страницы.ТекущаяСтраница = Элементы.ИсходнаяТаблица; Если НЕ Объект.ИмпортЧерезБуфер Тогда ЭтаФорма.ТекущийЭлемент = Элементы.ТаблицаЛистовФайла; КонецЕсли; КонецПроцедуры | |||
| 5
    
        Eugeneer 02.10.22✎ 13:59 | 
        Ну и все собственно говоря
 Объект.АдресДанныхВХранилище = СтруктураРезультата.АдресДанныхВХранилище; нифига не видит адрес | |||
| 6
    
        Eugeneer 02.10.22✎ 14:01 | 
        Ну собственно и рассчитывать тут не на что. ФОновое задание является своей сессией. Только как бы выкрутится)     | |||
| 7
    
        roman52 02.10.22✎ 14:13 | 
        (6) подозреваю, что никак не выкрутиться
 и перебрасывать данные между фоновыми заданиями придется классически: либо через регистр сведений, либо через получение данных из ВХ + помещение данных в ВХ понимаю, что хочется избавится от избыточной де/сериализации, но предполагаю, что адрес пробрасываемых данных жестко связывается с [конкретной парой сеансов (порождающий, фоновый)], и передача адреса в другой фоновый сеанс невозможна, т.к. связь уже существует | |||
| 8
    
        Eugeneer 02.10.22✎ 14:40 | 
        Фигово что даже функция не может тупо вернуть ТЗ. Я бы ее потом после фонового впихнул бы в хранилище на клиенте.
 Если в структуру возврата вставляю ТЗ. начинает ругаться по причине: Ошибка получения значения из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.2/mngsrv/ws}response Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}Structure по причине: Ошибка преобразования данных XDTO: НачалоСвойства: Value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' | |||
| 9
    
        Eugeneer 02.10.22✎ 14:43 | 
        Я вообще не понимаю зачем тогда в фоновом есть хранилище и адрес хранилища, которое возвращается в результат. Но оказывается в него ничего нельзя впихнуть типа ТЗ.     | |||
| 10
    
        Eugeneer 02.10.22✎ 14:45 | 
        А вот табличный документ легко возвращает через структуру.
 В общем один вопрос - как фоновым заданием ТЗ вернуть) | |||
| 11
    
        RomanYS 02.10.22✎ 14:46 | 
        (10) может не надо их с клиента вызывать?     | |||
| 12
    
        Eugeneer 02.10.22✎ 14:49 | 
        (11) мне нужно чтобы фоновое задание вернуло ТЗ юзеру. в этом суть.     | |||
| 13
    
        RomanYS 02.10.22✎ 14:52 | 
        (12) ТЗ на клиенте нет     | |||
| 14
    
        Eugeneer 02.10.22✎ 15:00 | 
        ВОт есть обработка Удаление помеченных обьектов. По сути тоже работает в фоне. Это обработка.
 Там все делается фоном. Но там дерево значений. И оно возвращается фоном. | |||
| 15
    
        Eugeneer 02.10.22✎ 15:00 | 
        (13) она даже не является реквизитом формы.     | |||
| 16
    
        Eugeneer 02.10.22✎ 15:04 | 
        Все я врубился!! кажется!!!
 Там в обработчик ожидания на клиенте после фона. нужно не в нем адрес раскладывать. А делать серверную процедуру с передачей адреса. И уже там все делать! Спасибо типовой обработке. Сейчас проверю. | |||
| 17
    
        Eugeneer 02.10.22✎ 15:37 | 
        Все заработало.
 Я тупил что пытался результат в процедуре обработки ожидания (клиенской) получить результаты по адресу фоновой функции. В ней нужно было сделать серверную, передать в нее адрес. А уже там мастерить. Все возвращается. | |||
| 18
    
        H A D G E H O G s 02.10.22✎ 17:04 | 
        Респект таким парням!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |