Имя: Пароль:
1C
1C 7.7
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) - просто показал как тестил, вдруг неправильно?
Спасибо)