#0
by twilight5023
Собственно вопрос возник у меня в ходе решения другой задачи, но смысл остается тем же. Допустим имеется таблица значений (ТЗ1), состоящая из двух колонок "Описание списка", "Список элементов". Элементами второй колонки, как нетрудно догадаться из названия являются списки значений. Необходимо скопировать в другую таблицу (ТЗ2) значений все строки первой, плюс в получившейся таблице изменить кое-какие элементы в списках и описания. Как правильно это сделать? И в каких случаях элементы передаются ссылками, а в каких значениями? Ниже я сделал собственные выводы, хочется чтобы вы подтвердили или опровергли их... 1. Присвоение. ТЗ2 = ТЗ1. Ну здесь понятно, при таком присвоении в ТЗ2 оказывается ссылка на первую таблицу. Соответсвенно при редактировании описаний и списков в ТЗ2 аналогичные изменения получаются и в исходной таблице. Т.к. это просто ссылка. 2. Выгрузка / Загрузка. ТЗ1.Выгрузить(ТЗ2) или же ТЗ2.Загрузить(ТЗ1). Здесь поля описания передаются как значения, т.е. если отредактировать в первой строке ТЗ2 поле описания, то в ТЗ1 оно не изменится. А вот списки значений, содержащиеся во втором поле передаются по ссылке. Соответствено, если мы спозиционируемся на первой строке ТЗ2, полученной выгрузкой / загрузкой и добавим элемент к списку значений, то он добавится и к "списку значений, хранящемся в первой таблице", т.к. списки передались ссылками. 3. Копирование. Вот тут я задумался... можно конечно выгрузить ТЗ1 в ТЗ2, как в варианте 2, затем для каждой строки создавать новый объект список значений, выгружать в него список на который ссылается соответствующее поле первой таблицы, а потом делать присвоение ко второй. Это как один вариант... второй вариант, до которого я дошел, это использование такого кода: стр = ЗначениеВСтрокуВнутр(ТЗ1); Тогда значения, в том числе и списки значений передаются действительно значениями. Но насколько это корректно? Как правильнее получить копию таблицы значений элементами, которой являются списки значений?
#2
by Стрелок
ИМХО сам себя запутал. во всех случая будет значение а никакие не ссылки. попробуй перед тем как умозаключениями заниматься.....
#3
by FreeFin
Не смог прочесть ник...с пяти раз... А в таблицах... можно "параллельно" по-строкам пробежать в одном цикле и проставить ЧтоТамНуна.
#4
by twilight5023
Попробовал... даже обработку специально написал тестовую. Я сначала привык пробовать, а потом вопросы задавать...
#5
by Стрелок
и чего? ты хочешь сказать что если я напишу ТЗ1=ТЗ2 а потом то и в ТЗ1 добавится строка? плохо ты тестил... неправильно....
#7
by twilight5023
+4 Поясни, что ты имеешь ввиду под "во всех случая будет значение". Смотри, выгружаем ТЗ1 в ТЗ2. Позиционируемся в ТЗ2 на первую строку. Берем ТЗ2.СписокЭлементов.ДобавитьЗначение("что-то там") ... потом лезем в ТЗ1.СписокЭлементов ... смотрим, и размер списка изменился на 1. Последний элемент добавился и в него.
#9
by Стрелок
ты неверено написал обработку тестовую там есть отнкости обращения к вложенным спискам и ТЗ. нужно при каждом перепозиционировании на следующую строку основной ТЗ пересоздавать обхект, в который ты потом передаёшь ссылку на вложенную ТЗ. иначе у тебя всё время одна и та же ТЗ вложеная
#12
by Стрелок
в обоих? а сами списки где? и что значит "ссылки"? растолкуй... сколько работаю с вложенными списками и ТЗ а такого чуда не видел... может чего не знаю и всё проще?
#13
by twilight5023
Вот обработка... , там все наглядно можно посмотреть. Кто хочет - может скачать, попробовать, она небольшая.
#15
by Стрелок
ну ты хитрован... списки то на форме и ты не заполняешь их вложенными а просто ссылаешься на них..... это совсем не то что я имел в виду и подумал... пойду покушаю надо предупреждать что списки у тебя на форме как и ТЗ
#16
by Стрелок
И чего? всё верно - до пересоздания объекта ссылка существует, но это бессмысленно для нескольких строк в ТЗ.
#17
by twilight5023
Я не говорил что заполняю их вложенными... изначально вопрос звучал так, есть уже заполненная ТЗ, не важно где и как она заполняется. Мне нужно ее полностью скопировать во вторую, чтобы можно было работать со списками и со всеми колонками и при этом умудриться не затереть содержимое исходной ТЗ, из-за того что где-то есть ссылки.
#18
by twilight5023
Здесь я хотел сказать что при изменении значения во второй таблице оно поменяется и в первой... простой пример: 2All: Я не любитель поспорить, просто хочу понять...
#20
by twilight5023
Как правильнее скопировать таблицу, содержащую ссылки на списки значений (вместе со списками естественно). Так можно? Или лучше создавать новый список, выгружать в него элементы из исходного (который в ТЗ1) и присваивать значение ТЗ2.СписокЭлементов = ВновьСозданныйСписок?
#21
by Terv
вот так будет копироваться, а не передоваться по ссылке Процедура НачальноеЗаполнение ...... КонецПроцедуры
#24
by Terv
похоже, только разница в том что сразу при заполнении 1й ТЗ, списки не передаются а копируется, а дальше делай с ТЗ что хочешь
#27
by twilight5023
Ап... комментарии приветствуются. Ну и по-поводу , на ваш взгляд, как лучше копировать? Целесообразно ли для этих целей использовать ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- Список значений - Таблица значений - Временная таблица
- v7: Таблица в режиме ввода данных v7
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: V7 Слетает галочка "Устройство включено" в настройках сканера
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
- v7: невыгрузка договора из v8 в v7
В этой группе 1С
- Запись реквизита
- 1С может работать совместно с внешним DBF? или только монопольно?
- v8: Есть ли способ узнать соответствие SQL таблиц объектам метаданных?
- Отключение контроля уникальности
- Уменьшение базы 1С
- Движение денежных средств по статьям затрат в торговле
- Где у константы запрет на редактирование.
- Есть готовая обработка переноса справочников из УПП в такую же УПП ?
- Запись данных из 1С в mysql
- v7: УСН книга доходов и расходов
- ROM-Mail.dll
- v8: Перемещение товаров (УТ 10.2)
- Когда плательщик и покупатель - разные!
- Отражение в учете передачи на ответ хранение поставщиком
- V8= Новый COMObject("V8.ComConnector"); Класс не зарегистрирован
- автоматизация столовой
- Как вычислить номер текущей строки в ТЗ
- Сохранение таблиц значений в табличной части документа
- отпуск по беременности и родам?
- Как оформить поступление денег на л/сч из бюджета