![]() |
![]() |
АсенСи 20.09.2004 - 09:22 | Колонка таблицы значений принимает значения "Открыть", "Закрыть", "Работа" и др. Мне нужно Отфильтровать строки, оставив только строки, где значение "Открыть" или "Сохранить". |
Златик 1 - 20.09.2004 - 09:34 |
Сч=ТЗ.КоличествоСтрок() Пока Сч>0 Цикл ПолучитьСтрокуПоНомеру(Сч); Если Найти("Открыть,Сохранить",ТЗ.КолонкаN)=0 Тогда ТЗ.УдалитьСтроку(Сч); КонецЕсли Сч=Сч-1; КонецЦикла; |
RSergio 2 - 20.09.2004 - 09:34 | См. "Сортировать()", "НайтиЗначение()", "Выгрузить()" |
DES 3 - 20.09.2004 - 09:34 |
Не моё, а чьё то! //_____________________________________________________________________________ //Назначение: //Возвращает ТЗ отфильтрованную по заданным условиям заданным в таблице условий // // У таблицы условий 2 колонки // 1. "Иден" - содержит имя колонки // 2. "Значение" - содержит значение для фильтра по ТЗ // // Если параметр ПустоеЗначение(_Значение_)=0, // то параметр _Колонка_ есть строка с именем колонки, // а параметр _Значение_ это значение отбора. Функция глФильтрПоТЗ(ТаблДляФильтрации, _Колонка_, _Значение_=0) Экспорт Перем ТаблУсловий; Перем ТаблВозврат; Перем ТаблВозврат1; Перем ТЗИден; //проверяем параметры Если ПустоеЗначение(_Значение_)=0 Тогда ТаблУсловий = СоздатьОбъект("ТаблицаЗначений"); ТаблУсловий.НоваяКолонка("Иден","Строка"); // содержит имя колонки ТаблУсловий.НоваяКолонка("Значение"); // содержит значение для фильтра по ТЗ ТаблУсловий.НоваяСтрока(); ТаблУсловий.Иден = _Колонка_; ТаблУсловий.Значение = _Значение_; КонецЕсли; //переносим данные в другую таблицу (мы же не хотим испортить исходную) ТаблДляФильтрации.Выгрузить(ТаблВозврат); //проходим по условиям фильтрации ТаблУсловий.ВыбратьСтроки(); Пока ТаблУсловий.ПолучитьСтроку() = 1 Цикл ТаблВозврат.Сортировать(ТаблУсловий.Иден,1); //выгружаем колонку по которой фильтруем ТаблВозврат.Выгрузить(ТЗИден,,,ТаблУсловий.Иден); //сворачиваем значния, чтобы получить уникальные значения ТЗИден.Свернуть(ТаблУсловий.Иден,""); //ищем строку с первым значением удовлетворяющим значению фильтра НачСтрока = ""; ТаблВозврат.НайтиЗначение(ТаблУсловий.Значение,НачСтрока,ТаблУсловий.Иден); Если НачСтрока = 0 Тогда //не нашли очищаем таблицу для возврата ТаблВозврат.УдалитьСтроки(); Прервать; КонецЕсли; //НачСтрока = 0 //ищем конечную строку которая подходит для условия фильтра НомСтроки = ""; ТЗИден.НайтиЗначение(ТаблУсловий.Значение,НомСтроки,1); Если НомСтроки = ТЗИден.КоличествоСтрок() Тогда КонСтрока = ТаблВозврат.КоличествоСтрок(); Иначе Значение = ТЗИден.ПолучитьЗначение(НомСтроки+1,1); КонСтрока = ""; ТаблВозврат.НайтиЗначение(Значение,КонСтрока,ТаблУсловий.Иден); КонСтрока = КонСтрока - 1; КонецЕсли; //НомСтроки = ТЗИден.КоличествоСтрок() //выгружаем строки удовлетворяющие условию фильтра ТаблВозврат.Выгрузить(ТаблВозврат1,НачСтрока,КонСтрока); //переписываем найденные строки в рабочую таблицу для дальнейшей обработки ТаблВозврат1.Выгрузить(ТаблВозврат); КонецЦикла; //ТаблУсловий.ПолучитьСтроку() = 1 ВозВрат ТаблВозврат; КонецФункции //ФильтрПоТЗ //_____________________________________________________________________________ |
Гурон 4 - 20.09.2004 - 09:35 | (0) есть у ТЗ такой метод - УдалитьСтроку(). Попробуй его. |