|
v7: Небольшая головоломка с ИТЗ
| ☑ |
0
Zhuravlik
15.05.13
✎
11:03
|
Добрый день. Есть индексированная таблица ИТЗ, сгруппированная по заранее неизвестному количеству группировок. Получается, что на каждом уровне группировки строка ИТЗ имеет таблицу тзПотомки, и не имеет на последнем.
А вот как узнать на каком уровне группировки в ИТЗ находится текущая тзПотомки?
|
|
1
Ёпрст
15.05.13
✎
11:12
|
поставить счетчик при обходе вестимо
|
|
2
Zhuravlik
15.05.13
✎
11:28
|
(1) Это понятно, но не догоню как. Не стал пока с ним морочиться, пробовал через методы самой ИТЗ это узнать, и кажется решил...
Индексы от 1 до N - сохраняются для всех вложенных таблицах как Инд1 для тзПотомки1, Инд2 для тзПотомки2...
|
|
3
Ёпрст
15.05.13
✎
11:31
|
проще по ИмяИндекса(Индекс) посмотреть
|
|
4
Ёпрст
15.05.13
✎
11:31
|
делов то
|
|
5
Zhuravlik
15.05.13
✎
11:36
|
(3) Так я так и сделал) Только смотрю ВыражениеИндекса().
(4) Просто не пользовался этим методом, и не до конца был понятен метод Сгруппировать() у ИТЗ. Я думал так: если вложенные таблицы копируют структуру родителя, то и индексы тоже. А оказалось, что нет:
ИТЗ.ВыбратьСтроки();
Пока ИТЗ.ПолучитьСтроку() = 1 Цикл
Сообщить("1: " + ИТЗ.ВыражениеИндекса(2));
тз2 = ИТЗ.тзПотомки;
Сообщить("2: " + тз2.ВыражениеИндекса(2));
тз2.ВыбратьСтроки();
Пока тз2.ПолучитьСтроку() = 1 Цикл
тз3 = тз2.тзПотомки;
Сообщить("3: " + тз3.ВыражениеИндекса(2));
Прервать;
КонецЦикла;
Прервать;
КонецЦикла;
|
|
6
Ёпрст
15.05.13
✎
11:42
|
только ИТЗ лучше(проще) обходить в рекурсивной функции
|
|
7
Zhuravlik
15.05.13
✎
11:45
|
(6) Да, так и делаю, (5) - просто показал как тестил, вдруг неправильно?
Спасибо)
|
|