Имя: Пароль:
1C
 
ПолучитьИзВременногоХранилища очищает значение
0 toypaul
 
гуру
09.09.25
08:43
Значение помещено через ПоместитьВоВременноеХранилище с адресом формы владельца. Далее в форме владельца на клиенте вызывается вызов без контекста, в котором ПолучитьИзВременногоХранилища производит некоторые вычисления по значению. По логике дальше должна быть еще обработка в другой процедура значения из хранилища. Но когда мы возвращаемся из внеконтекстного вызова значение в хранилище уже Неопределено.

Не нашел нигде внятного описания почему так происходит. В СП вообще ничего. В описании ПоместитьВоВременноеХранилище написано что если УИД формы передал, то значение очищается только при закрытии формы. На ИТС есть текст что после вызова  ПолучитьИзВременногоХранилища значение очищается. На самом деле что ли после вызова ПолучитьИзВременногоХранилища значение очищается?
1 Kigo_Kigo
 
09.09.25
08:55
Ну если очищается, засунь туда заново
2 maxab72
 
09.09.25
09:03
(0) как записываете ПоместитьВоВременноеХранилище?
3 Мультук
 
гуру
09.09.25
09:10
(0)

Пишем простейшую тестовую обработку, которая воспроизводит ошибку.

Таким образом:
1) Проверяем себя, что не показалось
2) Выкладываем обработку сюда -просим потестить на разных релизах

Люди или найдут ошибку в коде,  либо подтвердят/опровергнут поведение.
4 maxab72
 
09.09.25
09:23
(3) все проще, смотрим справку
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Параметры:
<Данные> (обязательный)
Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище.
<Адрес> (необязательный)
Тип: УникальныйИдентификатор, Строка.
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода.
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.
Если передан адрес уже удаленного значения, будет сгенерировано исключение.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
5 toypaul
 
гуру
09.09.25
09:27
(2),(4) в самом начале написано - Значение помещено через ПоместитьВоВременноеХранилище с адресом формы владельца.
6 maxab72
 
09.09.25
09:33
(5) 1с-ка иногда теряет ссылку на адрес формы, и тогда временное хранилище очищается при получении значения. Насколько я заметил, потеря адреса бывает, если форма программного вызвана из другой формы или это "подчиненная" форма - например подбор и т.п.
7 arsik
 
гуру
09.09.25
09:36
(5) У адреса какой тип?
8 toypaul
 
гуру
09.09.25
09:41
(7) УИД формы.
(3) обработку сделал. куда выложить лучше?
9 toypaul
 
гуру
09.09.25
09:45
https://disk.360.yandex.ru/d/S-EE65JkoU_L0Q ссылка на обработку
10 toypaul
 
гуру
09.09.25
09:47
(6) ну да. есть вызов подчиненной формы. в примере код почти такой как есть. но теряется не после обработки из подчиненной формы. а после безконтекстного вызова. и не адрес теряется. а значение по адресу.
11 arsik
 
гуру
09.09.25
09:55
(9) Рукалицо
Адрес = ПоместитьВоВременноеХранилище("Результат", ВладелецФормы.УникальныйИдентификатор);

PS: Хотя... Я наверно не прав
PSPS: У меня с первого раза нормально
Обработанное Результат обработан
Исходный Результат
12 toypaul
 
гуру
09.09.25
09:53
(11) больно же будет. не делай так. подчиненная форма не мое произведение. повторяю ровно так как сделано автором.

что интересно - первый запуск отработало как писал. второй и последующие отрабатывает нормально - ничего не портит. странно. или я ослеп. но в рабочем коде портит. может что-то упустил, но принцип понятен.
13 H A D G E H O G s
 
09.09.25
11:25
ПолучитьИзВременногоХранилища
УдалитьИзВременногоХранилища
Изменить
ПоместитьВоВременноеХранилище

Делай так и спина болеть не будет
14 Ильф
 
09.09.25
11:29
(0) у меня было - большие значения не переваривает, например дерево со структурой метаданных не помещалось
15 Ильф
 
09.09.25
12:34