Методы ПоместитьВоВременноеХранилище/ПолучитьИзВременногоХранилища #483389


#0 by tuxik07
Пытаюсь организовать обмен сообщениями между фоновым заданием и общей формой. Смысл передавать в форму прогресс выполнения длительного задания. Использую временное хранилище. в хелпе к методу ПоместитьВоВременноеХранилище пишут, что "Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание" У  формы есть реквизит АдресХранилища - строка в обработчике команды пишу Вот модуль ФоновыеЗаданияСервер и тут косяк в строке: Счетчик = ПолучитьИзВременногоХранилища(Адрес); Получает значение из хранилища Неопределено. в обработчике ожидания на форме пытаюсь обратиться к хранилищу по адресу Счетчик = ПолучитьИзВременногоХранилища(Адрес) - всё срабатывает
#1 by tuxik07
релиз платформы 8.2.11.220
#2 by tuxik07
походу весь народ в Пятнице тусит!
#3 by tuxik07
Людиииии.... Аууу
#4 by Смешной 1С
Не уверен, но мне кажется что 0 - это не пустое значение. Попробуй так:
#5 by tuxik07
нифига, и 0 и неопределено и пустая строка ничего не подходит
#6 by Defender aka LINN
"Также позволяет поместить данные из фонового задания в родительский сеанс" - где тут написано, что ты что-то можешь передать в фоновое задние таким способом?
#7 by tuxik07
да мне не нужно передать в фоновое задание, а из него
#8 by SoftIce
параметр Адрес у вас случайно не массив получается?
#9 by SoftIce
Вы же ПараметрыЗадания как массив передаете..
#10 by tuxik07
нет, адрес передается в параметре
#11 by SoftIce
а я бы все таки попробовал так
#12 by tuxik07
{}: Получение элемента по индексу для значения не определено МенеджерФоновыхЗаданий (BackgroundJobsManager) Выполнить (Execute) Синтаксис: Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>) Параметры: Тип: Строка. Имя экспортируемой процедуры или функции неглобального общего модуля, который может быть выполнен на сервере, в форме ИмяМодуля.ИмяМетода. Тип: Массив. Массив параметров, передаваемых в метод. Количество и типы параметров должны соответствовать параметрам метода.
#13 by SoftIce
а УникальныйИдентификатор откуда берется?
#14 by acsent
Временное хранилище живет только вместе с формой или до конца процедуры
#15 by tuxik07
уникальный идентификатор берется у формы, форма живет я ее не закрываю
#16 by xzorkiix
а если подменить на судя по тому как в справке написано. На клиенте создается пустое хранилище (т.е. главное получить адрес), а уже сервер выполняя фоновое задание будет пополнять хранилище, значение это будет доступно только сеансу вызвавшему все это добро. фоновые задания в файловой версии не взлетели. а под 8.2 пока в планах не было на sql базу выделять. так что попытки подумать как система.
#17 by acsent
Фоновое задание не имеет никакого отношения к форме. Это вообще другой сеанс
#18 by xzorkiix
специфика фоновх заданий. можно передать массив значений, порядок заполнения которого соответсвует параметрам вызываемой процедуры т.е. для функции ЧтоТо(Имя, Возраст, ЧленПартииСР) нужно передать массив {"Алеша", 35, Истина}
#19 by tuxik07
17 а никто и не говорит, что фоновое задание как то должно быть связано с формой, просто в документации написано что родительский процесс может получить данные из хранилища. Хранилище нужно проинициализировать соответсвующим образом 16 заменил строку Счетчик = ПолучитьИзВременногоХранилища(Адрес); результат тот же: в отладчике в контексте фонового задания не получается получить значение из хранилища. даже после выполнения: притом у Счетчика значение всегда числового типа, и адрес тоже строка т.е. после выполнения ПоместитьВоВременноеХранилище(Счетчик, Адрес); ПолучитьИзВременногоХранилища возвращает Неопределено 18 а кто-бы сомневался. Нормально параметры передаются в процедуру и той получаются.
#20 by xzorkiix
в для справки. ну я умываю руки. ну очень не хочется в пятницу вечером базы новые разворачивать. "не хочешь работать в субботу - не работай после обеда пятницы" и наоборот) наша народная мудрость в отделе
#21 by acsent
Ну тупые. ПоместитьВоВременноеХранилище не живет без форм
#22 by tuxik07
как писал в форма живет! Она не закрывается
#23 by xzorkiix
умный. научи В механизме работы с временным хранилищем есть возможность передать данные из фонового задания в сеанс, инициировавший фоновое задание. Для этого в родительском сеансе нужно поместить пустое значение во временное хранилище с помощью метода ПоместитьВоВременноеХранилище. Полученный в результате адрес нужно передать через параметры фонового задания в процедуру. Если в фоновом задании методу ПоместитьВоВременноеХранилище передать полученный адрес, то значение будет скопировано в родительский сеанс с этим же адресом. как я понимаю должно быть так:
#24 by tuxik07
так оно и есть. но не работает скотина. Походу бага в платформе
#25 by xzorkiix
хз. Метод ПоместитьВоВременноеХранилище схож с предыдущим, за исключением того, что данные для записи во временное хранилище представляются не в виде пути в файловой системе, а в виде значения. Точно так же, если не указан существующий адрес во временном хранилище, создается новый адрес. Адрес возвращается как результат функции. Также как и для файлов, размещенные данные обязательно принадлежат какой-либо форме и автоматически удаляются после ее удаления. А если без привязки на уникальный индификатор формы?
#26 by tuxik07
бесполезно, пробовал. Пробовал в реквизит формы сгенерить свой уникальный идентификатор и передать его.  Не работает...
#27 by hhhh
а длина этой строки АдресХранилища случаем не 10 у тебя?
#28 by tuxik07
нет, там стандартный адрес
#29 by fisher
Подпишусь. Тема очень интересная.
#30 by TormozIT
А как подписаться?
#31 by fisher
Уже :) Теперь сможешь найти эту ветку через "Темы с моим участием"
#32 by TormozIT
Ну это как то некошерно. Я думал, может сделали фичу такую скрытую.
#33 by xReason
в закладки
#34 by tuxik07
типа больше никто не поможет, да?
#35 by tuxik07
я так понял, что ПоместитьВоВременноеХранилище не отрабатывает в фоновом задании
#36 by acsent
Всем подписчикам бан обеспечен ))
#37 by acsent
#38 by tuxik07
короче проблема вот в чем. Данные по адресу становятся доступными только ПОСЛЕ выполнения фонового задания, чего как бы я не увидел в документации
#39 by fisher
Жаль. А казалось вот он - готовый инструмент для асинхронного обмена :)
#40 by tuxik07
я тож так думал
#41 by tuxik07
а ведь всё-таки это бага, 1с вчера вписало эту ошибку в список проблемных ситуаций и ошибок
#42 by fisher
По-моему, просто обещали исправить описание в справке. Нет?
#43 by tuxik07
неа, в багрепорт вчера внесли багу что из фонового задания нельзя получитьизхранилища, хотя в принципе ни в какой справке про такую возможность даже не писали, мож и поместитьвхраилище заодно исправят. Ведь, как я думал, что написано в справке и не работает в действительности - это бага. А в багрепорте они описали фичу! :-) Мож и багу поправят
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С