[code]//-------------------------------------------- Процедура ЗаполнитьДЛяВывода(Знач Тз_ТекСтр, Знач Тз_ТекГр, ДляВывода) Перем ТекГр,УнНомер_Табл, Найденая, СтарСсылка; ТекГр = ИНТЗ.Получить(Тз_ТекСтр, "Номер_Гр"); СсылкаНа_УнНомер = ИНТЗ.Получить(Тз_ТекСтр, "СсылкаНа_УнНомер"); СтарСсылка = СсылкаНа_УнНомер; Пока (ТекГр = Тз_ТекГр) и (СтарСсылка=СсылкаНа_УнНомер) Цикл ДляВывода = ДляВывода+1; ИНТЗ.Установить(Тз_ТекСтр, "ДляВывода", ДляВывода); УнНомер_Табл = ИНТЗ.Получить(Тз_ТекСтр, "УнНомер_Табл"); Уровень_Разворот = ИНТЗ.Получить(Тз_ТекСтр, "Уровень_Разворот"); Если Уровень_Разворот > 0 Тогда //Найдем вложенную Найденая = ИНТЗ.НайтиСтроку("инСсылкаНа_УнНомер", УнНомер_Табл, 0,0); Если Найденая=0 Тогда //не нашли //Ничего неделаем Иначе // нашли вложенную ЗаполнитьДЛяВывода(Найденая, Тз_ТекГр+1, ДляВывода); КонецЕсли; КонецЕсли; Тз_ТекСтр=Тз_ТекСтр+1; // перейдем к следующей строке Если Тз_ТекСтр > ИНТЗКоличествоСтрок Тогда Возврат; КонецЕсли; ТекГр = ИНТЗ.Получить(Тз_ТекСтр, "Номер_Гр"); СсылкаНа_УнНомер = ИНТЗ.Получить(Тз_ТекСтр, "СсылкаНа_УнНомер"); КонецЦикла;
КонецПроцедуры // ЗаполнитьДЛяВывода
//-------------------------------------------- Процедура СортироватьСГруппировками(СортКолонка) ИНТЗ.УдалитьКолонку("ДляВывода");
Если (СортКолонка = "") или (СортКолонка = "ПечТекстСтроки") Тогда кстСтроки,УнНомер_Табл", 1); Иначе //Если здесь использовать ИНТЗ.Сортировать() то неверное поведение при создании новых индексов тКолонка+",ПечТекстСтроки,УнНомер_Табл", 1); КонецЕсли;
Состояние("Выгрузка ИТ в тз Сортировка...");
// хочется избавиться от ЭТОГО ВремИНТЗ=СоздатьОбъект("ИндексированнаяТаблица"); ИНТЗ.Выгрузить(ВремИНТЗ,"Сортировка"); ИНТЗ=0; ИНТЗ = ВремИНТЗ; ВремИНТЗ=0; //--------------
ИНТЗ.НоваяКолонка("ДляВывода");
Состояние("ЗаполнитьДЛяВывода ИТ...");
ИНТЗ.ДобавитьИндекс("инСсылкаНа_УнНомер","*СсылкаНа_УнНомер",0);
ИНТЗКоличествоСтрок = ИНТЗ.КоличествоСтрок(); ЗаполнитьДЛяВывода(1,1,0); ИНТЗ.ДобавитьИндекс("ДляВывода","ДляВывода",1);
Состояние("Выгрузка ИТ в тз ДляВывода...");
// хочется избавиться от ЭТОГО ВремИНТЗ=СоздатьОбъект("ИндексированнаяТаблица"); ИНТЗ.Выгрузить(ВремИНТЗ,"ДляВывода"); ИНТЗ=0; ИНТЗ = ВремИНТЗ; ВремИНТЗ=0; //--------------
Состояние("ДобавитьИндекс инУнНомер_Табл в ИТ...");
ИНТЗ.ДобавитьИндекс("инУнНомер_Табл","*УнНомер_Табл",1); ИНТЗ.ДобавитьИндекс("инНомер_Гр","Номер_Гр",0);
КонецПроцедуры // СортироватьСГруппировками() [/code]
при добавлении нового индекса не учитывается метод сортировка ИНТЗ.ДобавитьИндекс("инСсылкаНа_УнНомер","*СсылкаНа_УнНомер",0);
осюда невозможность использовать НомерСтроки и правильный поиск по : Найденая = ИНТЗ.НайтиСтроку("инСсылкаНа_УнНомер", УнНомер_Табл, 0,0); метод сортировать основного индекса не перестраивает строки и метод НайтиСтроку использует ИТЗ до сортировки!
|