|
Почему не работает ПолучитьИзВременногоХранилища? |
☑ |
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
|
7.3. При помещении данных во временное хранилище следует выбрать один из двух вариантов:
* помещать данные во временное хранилище на время жизни формы, используя уникальный идентификатор формы и очищать это временное хранилище после использования (см. пример в п. 7.2).
* предварительно выполнять инициализацию временного хранилища и переиспользовать его
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший