ПоместитьВоВременноеХранилище работает не пойми как
Добрый день господа знающие, подскажите где косяк!
Есть внешняя обработка где таблица значений (созданная программно) очищается, потом заполняется и помещается во временной хранилище в цикле, в момент записи в хранилище таблица значений заполнена верно, но (!) после окончания цикла все записи в хранилище принимают значение Последней записи.
Такого происходить категорически не должно, ведь каждая запись в хранилище под своим уникальным идентификатором и в цикле происходит только запись Нового значения.
Конфигурация УТ 11.1.10.193, Платформа 8.3.10.2580, база файловая, код обработки:
Есть внешняя обработка где таблица значений (созданная программно) очищается, потом заполняется и помещается во временной хранилище в цикле, в момент записи в хранилище таблица значений заполнена верно, но (!) после окончания цикла все записи в хранилище принимают значение Последней записи.
Такого происходить категорически не должно, ведь каждая запись в хранилище под своим уникальным идентификатором и в цикле происходит только запись Нового значения.
Конфигурация УТ 11.1.10.193, Платформа 8.3.10.2580, база файловая, код обработки:
Объект.ДанныеДокументов.Очистить();
Для каждого Направление Из Направления Цикл
Перемещение.Очистить();
Для каждого Стр Из Общая Цикл
Если Стр.Откуда = Направление.Откуда
И Стр.Куда = Направление.Куда Тогда
НСтр = Перемещение.Добавить();
ЗаполнитьЗначенияСвойств(НСтр,Стр);
КонецЕсли;
КонецЦикла;
Адрес = ПоместитьВоВременноеХранилище(Перемещение,Новый УникальныйИдентификатор);
НСтрАдрес = Объект.ДанныеДокументов.Добавить();
НСтрАдрес.АдресВХранилище = Адрес;
КонецЦикла;
//Тут же проверяю значения записанные в хранилище и они одинаковые (!), чего быть не должно
Для каждого Данные Из Объект.ДанныеДокументов Цикл
ТЗ = ПолучитьИзВременногоХранилища(Данные.АдресВХранилище);
КонецЦикла;
ПоказатьПо теме из базы знаний
Найденные решения
(1) Судя по описанному поведению во временное хранилище пишется ссылка на объект , грубо говоря это указатель на область памяти где лежит данная таблицу Объект у вас один эта таблица перемещения , а указателей много , но все они указывают на одну и ту же областью.
Мне кажется что бы исправить данное поведение необходимо помещать клоны этой таблицы в хранилище
Мне кажется что бы исправить данное поведение необходимо помещать клоны этой таблицы в хранилище
Адрес = ПоместитьВоВременноеХранилище(Перемещение.Скопировать(),Новый УникальныйИдентификатор);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Судя по описанному поведению во временное хранилище пишется ссылка на объект , грубо говоря это указатель на область памяти где лежит данная таблицу Объект у вас один эта таблица перемещения , а указателей много , но все они указывают на одну и ту же областью.
Мне кажется что бы исправить данное поведение необходимо помещать клоны этой таблицы в хранилище
Мне кажется что бы исправить данное поведение необходимо помещать клоны этой таблицы в хранилище
Адрес = ПоместитьВоВременноеХранилище(Перемещение.Скопировать(),Новый УникальныйИдентификатор);
(1) вместо
можно написать:
или просто создавать новую ТЗ и новые колонки в ней, но так кода будет немного побольше.
и в строке
имя переменной Перемещение заменить на ПеремещениеНовый.
Перемещение.Очистить ();
можно написать:
ПеремещениеНовый = Перемещение.СкопироватьКолонки ();
или просто создавать новую ТЗ и новые колонки в ней, но так кода будет немного побольше.
и в строке
Адрес = ПоместитьВоВременноеХранилище(Перемещение,Новый УникальныйИдентификатор);
имя переменной Перемещение заменить на ПеремещениеНовый.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот