Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ИТЗ. Странное поведение метода Сортировать() (число прочтений - 2207 )
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
ИТЗ. Странное поведение метода Сортировать()
25. Октября 2010 :: 18:08
Печать  
Наткнулся на еще одну "особенность" индексированной таблицы и пока не знаю как эту особенность обойти.
А именно, если я использую метод ИТЗ.Сортировать(), то при последущей группировке таблицы (итз.Группировать) происходят непонятные вещи. Первый уровень группировки отображается так как требуется, но вложеные уровни остаются так, как было до использования метода Сортировать(), а в итоге вложение не относится к выбранной группироке.
Если закомментировать Сортировать(), то отображается все как и должно быть.
То же самое относится к процедуре ПоказатьИТЗ()...
Если раскомментировать строки 18,22 то в таблицу-владельца я все равно выхожу по последный строке, хотя визуальное отображение выхода -- в первой строке
Есть ли у кого какие-то соображения по этому поводу?

Пример в файле.
В выборе строки двойной щелчек открывает таблицу-потомка

  

________.ert ( 19 KB | Загрузки )
Наверх
 
IP записан
 
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
Re: ИТЗ. Странное поведение метода Сортировать()
Ответ #1 - 25. Октября 2010 :: 18:41
Печать  
Решил проблему пока вот таким вот некрасивым способом:

Код
Выбрать все
	итз.Сортировать("группировка1");
	итз2=итз.Копия(0,0);
	итз.ВыбратьСтроки();
	Пока итз.ПолучитьСтроку()=1 Цикл
		итз2.НоваяСтрока();
		Для i=1 По итз.КоличествоКолонок() Цикл
			итз2.Установить(,i,итз.Получить(,i));
		КонецЦикла;
	КонецЦикла; 



при этом если использовать только метод Копия (без всего остального), то
итз2=итз.Копия(1,1);
дает результать тот же, что и был
итз2=итз.Копия(0,1);
дает результат, как будто бы не выполнялся метод Сортировать()

Может кто подскажет более разумное решение?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ. Странное поведение метода Сортировать()
Ответ #2 - 26. Октября 2010 :: 05:23
Печать  
Индекс и есть критерий сортировки. Если хочешь правильную сортировку, создавай правильный индекс (читай про префиксы в имени колонке-индекса). А группировка - это те же индексы.
  
Наверх
 
IP записан
 
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
Re: ИТЗ. Странное поведение метода Сортировать()
Ответ #3 - 26. Октября 2010 :: 11:30
Печать  
JohnyDeath писал(а) 26. Октября 2010 :: 05:23:
Индекс и есть критерий сортировки. Если хочешь правильную сортировку, создавай правильный индекс (читай про префиксы в имени колонке-индекса). А группировка - это те же индексы.


отдельно c группировкой все хорошо. отдельно с сортировкой тоже хорошо.
Плохо со связкой сортировать+группировать
Это наглядно видно в примере, который я выложил.
И дело там не в префиксах. Если таблицу тупо перегнать из одной в другую, то все ложится так как нужно...
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: ИТЗ. Странное поведение метода Сортировать()
Ответ #4 - 27. Октября 2010 :: 01:02
Печать  
kentavr27 писал(а) 26. Октября 2010 :: 11:30:
JohnyDeath писал(а) 26. Октября 2010 :: 05:23:
Индекс и есть критерий сортировки. Если хочешь правильную сортировку, создавай правильный индекс (читай про префиксы в имени колонке-индекса). А группировка - это те же индексы.


отдельно c группировкой все хорошо. отдельно с сортировкой тоже хорошо.
Плохо со связкой сортировать+группировать
Это наглядно видно в примере, который я выложил.
И дело там не в префиксах. Если таблицу тупо перегнать из одной в другую, то все ложится так как нужно...

Однако не понял.
Сортировка и группировка - это установка активного индекса.
Т.е. активным является тот индекс, который был выставлен последним, а сортировкой или группировкой - не важно.
Так что, если тебе нужно использовать и то и то - придумай соответствующий индекс, объединяющий эти две операции.

И почитай внимательнее в справке параметры вызова метода ВыбратьСтроки() индексированной таблицы...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать