|
ПолучитьИзВременногоХранилища не работает | ☑ | ||
---|---|---|---|---|
0
Pandoch
01.10.19
✎
14:36
|
Перечитала все темы, которые были здесь.
От пользователя запущено фоновое задание, в нем было помещено значение (пустая ссылка), и тут же пытаюсь получить из временного хранилища - возвращает неопределено. Процедура находится в серверном общем модуле. Почему может не помещаться во временное хранилище значение? Помещаю так: ПоместитьВоВременноеХранилище(Результат,АдресВХранилище); |
|||
1
dka80
01.10.19
✎
14:39
|
Адрес = ПоместитьВоВременноеХранилище(Результат)
Данные = ПолучитьИзВременногоХранилища(Адрес) Так не работает? |
|||
2
Deon
01.10.19
✎
14:43
|
(0) Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.
Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. |
|||
3
vicof
01.10.19
✎
14:44
|
(0) А синтакс-помощник читать не пробовала?
Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage) Глобальный контекст (Global context) ПоместитьВоВременноеХранилище (PutToTempStorage) Синтаксис: ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Параметры: <Данные> (обязательный) Тип: Произвольный. Данные, которые необходимо поместить во временное хранилище. <Адрес> (необязательный) Тип: УникальныйИдентификатор; Строка. Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода. В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы. Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя. Если передан адрес уже удаленного значения, будет сгенерировано исключение. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. Возвращаемое значение: Тип: Строка. Адрес во временном хранилище. Описание: Сохраняет сериализуемое значение во временное хранилище. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Вызов метода выполняет обращение к серверу. Примечание: Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. -------------------------------------------------------------------------------- Методическая информация |
|||
4
vicof
01.10.19
✎
14:45
|
(3) отмена
|
|||
5
Pandoch
01.10.19
✎
14:47
|
да, без идентификатора работает (1)
но нам нужно потом с клиента получать данные, поэтому нужна привязка к идентификатору |
|||
6
Deon
01.10.19
✎
14:55
|
(5) Ты точно помещаешь на сервере, а получаешь на клиенте?
|
|||
7
palsergeich
01.10.19
✎
15:18
|
Читайте уже справку наконец.
Длятого что ьы работало то что ты хочешь - Адрес должен быть равен Форма.УникальныйИдентификатор. ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Примечание: Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе. |
|||
8
Pandoch
01.10.19
✎
15:57
|
Адрес должен быть равен Форма.УникальныйИдентификатор - я и передаю УИ формы. (7)
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. - вот ятак и делаю. Открываю форму, там помещаю так: АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор); далее вызываю выполнение фонового задания, туда этот адрес параметрами передаю. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. - вот это скорее всего влияет |
|||
9
Pandoch
01.10.19
✎
15:58
|
(6) да, у меня в форме выполняется обработчик ожидания, который по адресВХранилище получает данные.
Но видимо они = неопределено, потому что фоновое активно на этот момент еще. |
|||
10
Cyberhawk
01.10.19
✎
15:59
|
Получать через ВХ в вызывающем сеансе то, что положено в это ВХ в сеансе ФЗ, не дожидаясь завершения этого сеанса ФЗ, нельзя.
|
|||
11
Cyberhawk
01.10.19
✎
15:59
|
Какие данные требуется получить из сеанса ФЗ?
|
|||
12
pechkin
01.10.19
✎
16:00
|
обмен с фоновым заданием может быть только через сообщения (сообщить)
Но это не надежный канал, сообщения могут теряться |
|||
13
unenu
01.10.19
✎
16:01
|
автор врет(в заголовке и по поводу перечитал все темы), паникует и наконец понимает что он не познал
|
|||
14
Pandoch
01.10.19
✎
16:08
|
(10) спасибо, буду попытаться по другому сделать. (11) ссылку. Она либо пустая, либо заполненная. И если она заполнена (я на клиенте получаю из временного значения эти данные и смотрю - заполнена ссылка или нет) - я захожу на сервер и делаю какие-то операции.
Здесь попытка уйти от постоянного вызова сервера. То есть регулярно крутится фоновое на сервере, а в сеансе пользователя мы только на клиенте проверяем Временное хранилище, не заходя на сервер. На сервер будем заходить в случае заполненной ссылки только |
|||
15
pechkin
01.10.19
✎
16:09
|
(14) делай через ПолучитьСообщенияПользователя.
так например прогрессбар работает |
|||
16
Pandoch
01.10.19
✎
16:22
|
(15) дак это тоже на сервер обращаться, чтобы получить эти сообщения (вызывается на сервере) - мне нужно без сервера обойтись
|
|||
17
palsergeich
01.10.19
✎
16:23
|
(16) Сделай неконтекстный вызов, в чем проблема то
|
|||
18
pechkin
01.10.19
✎
16:24
|
(16) а из временного хранилища значит ты без обращения к серверу получаешь данные?
|
|||
19
palsergeich
01.10.19
✎
16:25
|
(14) Лучшее - враг хорошего.
что бы избежать постоянного дергания сервера работай или с сервером взаимодействия или пиши ВК tcp сервер, что бы можно было клиеннт с сервера через этот костыдль дернуть |
|||
20
palsergeich
01.10.19
✎
16:25
|
(18) Тссс
|
|||
21
palsergeich
01.10.19
✎
16:30
|
(14) Звучит как очень странное орхитектурное решение.
Запускаем параллельный сеанс. Если в нем пустая ссылка оповещваем родительский сеанс. Родительский сеанс что то делает, без интерактива. вопрос: зачем вообще в родительский сеанс вообще что то возвращать, если интерактива по описанию не предполагается? |
|||
22
palsergeich
01.10.19
✎
16:30
|
(21) Не проще из фонового вызывать другое фоновое при пустой ссылке?
|
|||
23
Cyberhawk
01.10.19
✎
16:32
|
(14) "на клиенте проверяем Временное хранилище, не заходя на сервер" // Брешешь.
"ПолучитьИзВременногоХранилища" влечет вызов сервера всегда. |
|||
24
palsergeich
01.10.19
✎
16:33
|
(23) оно просто неявное)
|
|||
25
Сияющий в темноте
01.10.19
✎
16:34
|
Сервер 1с на на клиента что то сказать может или через систему взаимодействия или через внешнюю компоненту.
то,что временное хранилище мы можем на клиенте пощупать не отменяет поход на сервер. поэтому,если данных не много,то можно на сервер в регистр сведений за флагом их наличия лазить. |
|||
26
palsergeich
01.10.19
✎
16:34
|
(23) Ну хотя даже если просто логически если подумать, тот как возможно получить что то с сервера не обращаясь к нему?)
|
|||
27
Cyberhawk
01.10.19
✎
16:35
|
(24) Это еще хуже - создают иллюзию что все хорошо.
Вот в БСП например из-за этого вызов сервера убрали для ОбщегоНазнаения.ПолучитьЗначенеРеквизита (и его аналогов), чтоб пейсатель кода сам сначала уходил на сервер. Однако в ОбщегоНазначенияУТВызовСервера это все равно присутствует, бгг)) |
|||
28
Cyberhawk
01.10.19
✎
16:35
|
Т.е. ребятки из БСП старались, а ребятки из линейки УТ хер положили и вернули как удобно)
|
|||
29
palsergeich
01.10.19
✎
16:38
|
(28) Ребята из БСП реализовали общее АПИ
Ребята из УТ на основании существующего АПИ сделали апи под свои потребности. |
|||
30
pechkin
01.10.19
✎
16:39
|
(27) это не из-за неявного вызова, а типо для безопасности
|
|||
31
Pandoch
01.10.19
✎
16:58
|
(21) интерактив предполагается, если ссылка заполнена
|
|||
32
Pandoch
01.10.19
✎
17:01
|
блин, отстой. значит зря день убили на эту хрень) спасибо за комменты, в голове упорядочилось по поводу работы с ВХ
|
|||
33
Cyberhawk
02.10.19
✎
08:39
|
(29) Не так: ребятки из БСП сначала реализовали с вызовом сервера, а потом убрали эту возможность
|
|||
34
Cyberhawk
02.10.19
✎
08:47
|
(30) Нашел на партнерке разъяснения, благодарю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |