При копировании ТЗ не копируются вложенные ТЗ #666143


#0 by NcSteel
Пример: ТЗКолонка[0].ТЗКолонка.Колонки.Колонка2 - появится такая колонка. Тоесть при копировании ТЗ вложенные ТЗ не копируются и остается ссылка. Или я не туда смотрю.
#1 by NcSteel
#2 by NcSteel
При этом ТЗ[0].ТЗКолонка.Колонка2 - появится такая колонка.
#3 by Лефмихалыч
агрегатные объекты не копируются. Присваивается ссылка на правое пот "=" значение
#4 by NcSteel
ТЗ.Скопировать создает копию объекта. Описание: Создает копию исходной таблицы значений.
#5 by Лефмихалыч
Если бы копировались
#6 by Лефмихалыч
не доэтовайся до слов - я имел в виду, что присваивание не копирует агрегатные объекты
#7 by NcSteel
У мну тут и нет присваивания.
#8 by NcSteel
Логика программы понятна, что если мы копируем ТЗ, то колонки содержащие ссылки на Справочники не создают копию данных. То есть в справочнике не появится новая ссылка. Но не ожидал данного поведения от коллекций вложенных.
#9 by NcSteel
+ Такого например не происходит в дереве значений, хотя надо проверить.
#10 by NcSteel
То есть Тоесть в данном случае скопируются и вложенные ТЗ....
#11 by Лефмихалыч
а там логика та же - ссылка, она ссылка и есть. Присваивание одной ссылки другой не должно дублить объект, иначе будет ад и израиль и ни какие сборщики мусора не спасут
#12 by Лефмихалыч
не верю
#13 by NcSteel
Я бы не чертыхался, если бы с деревом значений было бы так же. Но тут же явное противоречие )))
#14 by NcSteel
В данном случае в первом дереве не появится колонка.
#15 by Ненавижу 1С
брехло?
#16 by NcSteel
Скопировать (Copy) Синтаксис: Скопировать Возвращаемое значение: Тип: ДеревоЗначений. Описание: Создает полную копию исходного дерева значений. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#17 by Ненавижу 1С
и в ТЗ не появится так,т ты пойми разницу!
#18 by NcSteel
Появится. Суть в том что в дереве каждый вложенный уровень это ТЗ. И при копировании дерева , так же копируются вложенные ТЗ. Но Дерево не всегда удобно, когда надо произвольные колонки использовать на разных уровнях вложенности.
#19 by Лефмихалыч
>в дереве каждый вложенный уровень это ТЗ это утверждение по меньшей мере спорно, шопестец
#20 by NcSteel
В общем видна не доработка, да ТЗ не простой тип, а коллекция. Видимо при копировании ТЗ выполняется подобный алгоритм: Для Каждого СтрокаТЗ Из ИсходнаяТЗ Цикл Тогда как в Дереве скурпулезно копируется и содержимое структуры дерева.
#21 by NcSteel
Я утрировал, но суть в том , что это "КОЛЛЕКЦИЯ"
#22 by Chai Nic
Вот так с гарантией создает полную копию. Со всеми вложенными объектами. КопияПолная=ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ИсходнаяТаблица))
#23 by NcSteel
Мастер... )
#24 by NcSteel
Жаль я не ИЗ, так бы добавил в книгу знаний.
#25 by Лефмихалыч
если эксперимент дает неожиданные результаты, значит надо было чище мыть пробирки. Вот такой код:
#26 by NcSteel
Ты не понял о чем я. Жаль.
#27 by Лефмихалыч
могу пару гарантийных случаев подкинуть, надо?
#28 by NcSteel
Давай.
#29 by Лефмихалыч
любой объект прикладного объекта
#30 by Лефмихалыч
ну, то есть, например Справочники.Номенклаура.СоздатьЭлемент, если его ту-сюда через строкувнутр прогнать, восстановится в Неопределено
#31 by Лефмихалыч
COMОбъекты еще
#32 by NcSteel
Да, не восстанавливает. В моем случае таких объектов не будет, так что прокатит. Можно конечно через XML серелизовать.
#35 by Chai Nic
Ну, об объектах базы данных речи не идет, разумеется.
#36 by Torquader
Ребята! А что вы хотите, у вас есть объект, в полях которого записаны ссылки на другие объекты. Когда вы просите систему скопировать объект, то она создаёт новый объект, а все поля заполняет через присваивание. А у вас же при присваивании объект не копируется.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С

Back to top