Имя: Пароль:
1C
1C 7.7
v7: Как можно сохранить в строке (колонка ТЗ) таблицы значений другую таблицузначени
0 alivpo
 
19.09.11
17:08
Как можно сохранить в строке (колонка ТЗ) таблицы значений другую таблицу значений?
1 Ёпрст
 
гуру
19.09.11
17:11
ТЗ.НоваяСтрока()
ТЗ.ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.ТЗ.НоваяКолонка("Вася");
ТЗ.ТЗ.НоваяСтрока();
ТЗ.ТЗ.Вася="лошпед";
2 Armin
 
19.09.11
17:12
ТаблицаЗначений.ПодтаблицаЗначений = СоздатьОбъект("ТаблицаЗначений");
ВыгружаемаяТаблицаЗначений.Выгрузить(ТаблицаЗначений.ПодтаблицаЗначений);
3 alivpo
 
19.09.11
17:22
А почему не проходит?
ТабЗначПервая.ПодтаблицаЗначений =ТабЗначВторая;
4 andrewks
 
19.09.11
17:24
(3) потому что
5 Эльниньо
 
19.09.11
17:26
Я понимаю конечно, что между "=" и "Выгрузить" разница в 8 букв.
6 Песец
 
19.09.11
17:29
(3) ТабЗначПервая.ПодтаблицаЗначений присваивается ссылка на ТабЗначВторая.
7 Chai Nic
 
19.09.11
17:29
Дело в том, что переменная объектного типа - это ССЫЛКА на объект, а не сам объект.
8 Vladal
 
19.09.11
17:29
Сделай так:

ТЗ.НоваяКолонка("ВложеннаяТЗ");

или так:

ТЗ.НоваяКолонка("ВложеннаяТЗ", "ТаблицаЗначений");

и потом так:

ТЗ.НоваяСтрока();
ТЗ.ВложеннаяТЗ = КакаяТоДругаяТЗ;

И будет тебе счастье. Я так давненько и частенько в 7.7 делаю.

Пример - список баз.
Колонка 1 - путь базы (строка)
Колонка 2 - список пользователей (тз)

Список пользователей - тз
Колонка 1 - Идентификатор (имя)
Колонка 2 - Список обработок пользователя (список значений)

всё как в анекдоте про многоярусный лайнер с бассейном, кортом, сауной и попыткой взлететь
9 Песец
 
19.09.11
17:31
(6+) а тебе надо создать копию.
10 alivpo
 
19.09.11
17:33
Спасибо, попробую
11 Эльниньо
 
19.09.11
17:42
Кто создавал ТЗ охрененейшей размерностью?
Я - максимум n = 5.
12 Chai Nic
 
19.09.11
17:51
(11) Ну можно и дерево рекурсивно создать.. до исчерпания стека. :)
А самое прикольное - что всё это великолепие можно одной командой сохранять/загружать (ЗначениеВФайл/ЗначениеИзФайла). Удобно аж жуть для переброски данных из одной базы в другую, без заморочек с xml и dbase.
13 Vladal
 
19.09.11
18:17
(11) Моя охрененная пипис.. (зачеркнуто) тз максимум достигала 3 размерностей

1 уромень - 2 мерная, один из реквизитов записи ТЗ, которая - 2 мерная и один из тех реквизитов тоже 2-мерная ТЗ, а второй список значений.

Это сколько? 3? или 4?

(12) А так и делается. Одной обработкой создал ЭТО великолепие и ЭТО выгрузил в файл. Потом в любой базе готовую структуру читаешь и парсишь. Изврат еще тот.
14 Cthulhu
 
19.09.11
20:42
медленно но надежно ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр.
по Выгрузить вложенные не копируются, а со ссылками кладутся - можно нечаянно очень удивиться, поменяв вложенную ТЗ в таблице-источнике.
15 Фокусник
 
19.09.11
21:02
(12) это до тех пор, пока размер файла относительно маленький :)
16 Cthulhu
 
19.09.11
21:23
(12): у "ЗначениеВФайл" есть очень неприятная особенность.
начиная с некоторого размера (сохраняемых данных) время сохранения начинает расти нелинейно (экспоненциально). Особенно неприятно при сохранении больших ТЗ. Сохраняешь маленькую - красота, среднюю - класс, большую рабочую - ой, пять минут, и чуть больше - опа, час-два, ещё чуть больше - пипец, пять часов молотит на белом экране, зарраза.
17 Chai Nic
 
20.09.11
15:45
(16) Для больших объемов данных есть метод индексированной таблицы ВФайл (1с++) , делающий по сути то же самое (только сохраняет в другом формате).
18 Рэйв
 
20.09.11
15:56
(3)ТабЗначПервая.ПодтаблицаЗначений =ТабЗначВторая.Скопировать();
19 ЧеловекДуши
 
20.09.11
16:00
(8)ТЗ.НоваяКолонка("ВложеннаяТЗ", "ТаблицаЗначений");

Самая бессмысленная строчка.
Можно было записать её так

ТЗ.НоваяКолонка("ВложеннаяТЗ");

Все ровно 1С строку "ТаблицаЗначений" воспримет, как неопределенный тип, т.е. там может быть любой тип.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший