Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопрос по индексированной таблице (число прочтений - 3107 )
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Вопрос по индексированной таблице
26. Января 2011 :: 11:12
Печать  
Подскажите пожалуйста:

ИТЗ = пдМашины.Данные.ИндексированнаяТаблица;
ИТЗ.НоваяКолонка( "Частник" );

//заполним колонку 1 или 0

ИТЗ.Сортировать( "МаксВес, Частник" );
ИТЗ.УдалитьКолонку( "Частник" );

Тут выдается ошибка "Нельзя удалять колонку, которая учавствует в индексах!"

Если перед последней строкой вставить ИТЗ.УдалитьИндекс( "Частник" );

то выдается ошибка Индекс не найден. Я конечно обойдусь тем, что просто эту колонку скрою и не буду удалять, но есть простой рабочий способ удаления подобных колонок и может я просто не понял эту логику?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по индексированной таблице
Ответ #1 - 26. Января 2011 :: 11:47
Печать  
В ИТЗ при сортировке данные никак не перестраиваются, а происходит просто:
Цитата:
Изменение сортировки в основном индексе.

Т.е. если ты хочешь иметь сортировку по колонке "Частник", то она должна существовать, ибо индекс отдельно от данных существовать не может.
  
Наверх
 
IP записан
 
gonza
YaBB Newbies
*
Отсутствует


Хе-Хе!

Сообщений: 5
Местоположение: Минск
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Вопрос по индексированной таблице
Ответ #2 - 26. Января 2011 :: 11:50
Печать  
попробуй вставить
Код
Выбрать все
ИТЗ.УдалитьИндекс( "МаксВес,Частник" ); 

  

Жизнь весела, &&когда пьешь не спеша - но много!
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по индексированной таблице
Ответ #3 - 26. Января 2011 :: 11:51
Печать  
gonza писал(а) 26. Января 2011 :: 11:50:
попробуй вставить
Код
Выбрать все
ИТЗ.УдалитьИндекс( "МаксВес,Частник" ); 


еще раз выдержка из документации про метод "сортировать":
Цитата:
Изменение сортировки в основном индексе.

Никакого нового индекса не создается.
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Вопрос по индексированной таблице
Ответ #4 - 26. Января 2011 :: 12:29
Печать  
Спасибо за помощь, а если я выполню ИТЗ.УдалитьИндекс( "МаксВес,Частник" ); - то у меня слетит текущая сортировка или вообще ничего страшного не произойдет? Или лучше сначала сделать сортировку без участия колонки Частник?

p.s. сначала пересортировал ИТЗ по другим полям, после чего удалил колонку и ошибка пропала.
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Вопрос по индексированной таблице
Ответ #5 - 21. Марта 2011 :: 08:24
Печать  
Уважаемые специалисты, посоветуйте пожалуйста, как быть:

после сортировки индексированной таблицы, если требуется перебрать все ее строки, то работает метод                  

ИТЗ.ВыбратьСтроки();
Пока ИТЗ.ПолучитьСтроку() = 1 Цикл

но если потребовалось к примеру перебрать ИТЗ через прямое обращение по номеру строки:
Для ИИ = 1 По ИТЗ.КоличествоСтрок() Цикл
     ИТЗ.НомерСтроки = ИИ;

происходит обращение к таблице как будто она не сортирована. Есть ли способы перебрать ИТЗ в отсортированном порядке, используя НомерСтроки?


  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вопрос по индексированной таблице
Ответ #6 - 21. Марта 2011 :: 08:30
Печать  
Номер строки в ИТЗ не меняется при сортировке.. можешь использовать доп.колонку и заполнять её спец методом:

ЗаполнитьКолонкуПоАлгоритму

описалово:
http://www.1cpp.ru/bugs/show_bug.cgi?id=3813
  
Наверх
 
IP записан
 
ildary
Full Member
***
Отсутствует



Сообщений: 163
Зарегистрирован: 24. Марта 2008
Re: Вопрос по индексированной таблице
Ответ #7 - 21. Марта 2011 :: 08:43
Печать  
Гран мерси за науку!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать