Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как работать с индексированными таблицами? (число прочтений - 2050 )
Stalker
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 09. Сентября 2008
Как работать с индексированными таблицами?
02. Декабря 2009 :: 06:55
Печать  
Здраствуйте! Подскажите пожалуйста где взять примеры по работе с индексированными таблицами и вообще как сними работать. Есть какое нибудь описание последовательности работы или что нибудь подобное.
На сайте нашел http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#unload ; , но это описание функций, а хотелось бы еще и наких нибудь инструкций по работе.
Если есть у кого какая нибудь информация по этму поводу поделитесь пожалуйста, очень нужно.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Как работать с индексированными таблицами?
Ответ #1 - 02. Декабря 2009 :: 07:31
Печать  
Работаешь примерно так же, как и с обычной Таблицей значений. Только получаешь доступ к дополнительному функционалу. Лучше опиши, зачем тебе это "очень нужно". Может более конкретный ответ услышишь.
  
Наверх
ICQ  
IP записан
 
Stalker
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 09. Сентября 2008
Re: Как работать с индексированными таблицами?
Ответ #2 - 02. Декабря 2009 :: 08:49
Печать  
Подскажите пожалуйста по конкретному примеру.

     _ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
     _ТЗ.Загрузить(Таблица);
     
     _ТЗ.ВыбратьСтроки();
     Пока _ТЗ.ПолучитьСтроку() = 1 Цикл
           
             Если Найти(_ТЗ.Наименование,СокрЛП(ЗначениеОтбора)) = 0 Тогда
           //      нужно удалить строку      
           КонецЕсли;      
           
     КонецЦикла;      
Нужно удалить строки в _ТЗ, которые подпадают под условие Найти() = 0.
Пробовал (пишет "Нельзя удалять основной индекс!"), но это пример для простой ТаблицыЗначение, а как быть с ИндексированнойТаблицей?

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
~начало:
...Если <условие> Тогда
......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
......Если ТабЗнач.НомерСтроки<>0 Тогда
........ Перейти ~начало;
......КонецЕсли;
...КонецЕсли;
КонецЦикла;
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как работать с индексированными таблицами?
Ответ #3 - 02. Декабря 2009 :: 09:26
Печать  
Если наименование должно СТРОГО НЕ соответствовать твоему "СокрЛП(ЗначениеОтбора)", то вот так:
Код
Выбрать все
_ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
_ТЗ.Загрузить(Таблица);

_ТЗ.ДобавитьИндекс("Наименование","Наименование");
Ключ=СокрЛП(ЗначениеОтбора);
_ТЗ.УстановитьФильтр(Ключ, Ключ, "Наименование",0,1);
_ТЗ.УдалитьСтроки("Наименование")
 



Если же тебе нужно удалять строки по ВХОЖДЕНИЮ твоего "СокрЛП(ЗначениеОтбора)", то придется также перебором определять строки для удаления, а потом удалить. Я бы сделал так:
Код
Выбрать все
_ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
_ТЗ.Загрузить(Таблица);
_ТЗ.НоваКолонка("флНадоУдалить");

_ТЗ.ВыбратьСтроки();
     Пока _ТЗ.ПолучитьСтроку() = 1 Цикл
		 Если Найти(_ТЗ.Наименование,СокрЛП(ЗначениеОтбора)) = 0 Тогда
		     _ТЗ.флНадоУдалить=1;
		 КонецЕсли;
     КонецЦикла;

//удаляем
_ТЗ.ДобавитьИндекс("флНадоУдалить","флНадоУдалить");
_ТЗ.УстановитьФильтр(1, 1, "флНадоУдалить");
_ТЗ.УдалитьСтроки("флНадоУдалить");
_ТЗ.УдалитьКолонку("флНадоУдалить");
 

  
Наверх
 
IP записан
 
Stalker
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 6
Зарегистрирован: 09. Сентября 2008
Re: Как работать с индексированными таблицами?
Ответ #4 - 02. Декабря 2009 :: 09:58
Печать  
Спасибо большое!!!
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Как работать с индексированными таблицами?
Ответ #5 - 03. Декабря 2009 :: 07:09
Печать  
JohnyDeath писал(а) 02. Декабря 2009 :: 09:26:
...
_ТЗ.УдалитьКолонку("флНадоУдалить");

А оно нормально переварит удаление Индексной колонки, а то вроде были раньше траблы, что сначала надо было индекс удалять
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать