Имя: Пароль:
1C
1С v8
Почему не работает ПолучитьИзВременногоХранилища?
,
0 DrWeb
 
09.12.20
18:27
Ситуация. В УТ 11.4, обработка ОбеспечениеПотребностей. Расширяю через расширение модуль менеджера в опасном режиме.

Хочу расширить процедуру ТаблицаПотребностейПоЗаказамИОстатков(Параметры, АдресРезультата)

В конце этой процедуры есть строка:

    ПоместитьВоВременноеХранилище(Таблица, АдресРезультата);
    
КонецПроцедуры


В расширении делаю так:

&После("ТаблицаПотребностейПоЗаказамИОстатков")
Процедура О_ТаблицаПотребностейПоЗаказамИОстатковПосле(Параметры, АдресРезультата)
    Таблица = ПолучитьИзВременногоХранилища(АдресРезультата);


И тут почему-то в Таблицу получаю Неопределено. ЧЯДНТ?
1 DrWeb
 
09.12.20
18:29
Да, забыл сказать. Адрес результата смотрю в отладчике. Он правильный. Тот, по которому помещается значение. Волшебство в общем
2 H A D G E H O G s
 
09.12.20
18:31
АдресРезультата как создан?
3 DrWeb
 
09.12.20
18:34
Не смотрел. Передается в оригинальную процедуру видимо из того места где она вызывается. Принципиальный момент?
4 DrWeb
 
09.12.20
18:40
Адрес получается вот так:

ПараметрыВыполнения.АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, ПараметрыВыполнения.ИдентификаторФормы);
5 DrWeb
 
09.12.20
18:43
Волшебство №2 - если делать все медленно в отладчика - Таблица получается. Такие дела
6 DrWeb
 
09.12.20
18:46
Нет, ошибся, но когда смотрел откуда и как берется адрес таблицу вдруг получило один раз. Но повторно эффект не воспроизводится.
7 H A D G E H O G s
 
09.12.20
18:53
(4) Я думал, что проблема могла быть в тем, что не помещался UID формы и ВХ умирало после перехода в расширение. Ну, возможно, баг
8 DrWeb
 
09.12.20
19:18
(7) Да, похоже баг. Воспроизвелось еще один раз. Перенес свою обработку таблицы перед функцией получения результата в модуле формы. Там заработало. Спасибо, вопрос закрыт.
9 Noser2020
 
09.12.20
19:55
(8) Наверное просто функция получения результата заодно и удаляет результат из временного хранилища (есть такое требование в стандартах кодирования).
10 Noser2020
 
09.12.20
19:58
https://its.1c.ru/db/v8std/content/487/hdoc

7.3. При помещении данных во временное хранилище следует выбрать один из двух вариантов:

* помещать данные во временное хранилище на время жизни формы, используя уникальный идентификатор формы и очищать это временное хранилище после использования (см. пример в п. 7.2).
* предварительно выполнять инициализацию временного хранилища и переиспользовать его
Ошибка? Это не ошибка, это системная функция.