v8: Как получить строки, отобранные отбором (новый способ)| Есть Форма. В ней - ТабличноеПоле в которой таблица из миллиона записей. 
Пользователь ставит фильтр по каким то значениям и в таблице остается 500 записей. 
Как теперь обойти все выбранные записи по данному отбору? 
 |  | Автор статьи: Dimma Последняя редакция №1 от 27.08.08 URL: http://kb.mista.ru/article.php?id=701 |  |  
  Ключевые слова: отбор,табличное поле
 
  В продолжении темы, поднятой Гением1С Книга знаний: Как получить  строки, отобранные отбором, есть способ перебрать строки в Отборе ТабличногоПоля, как это делают сами разработчики 1С. Данный способ взят из обработки УдалениеПомеченныхОбъектов.epf на ИТС.
 
 Пояснять ничего не буду, вроде и так все понятно. Способ от Гения покороче, но имхо менее прозрачный.
 
 
 // Процедура вызывается при нажатии кнопки "Установить Флажки" командной панели "Удаляемые Объекты"
 //
 Процедура КоманднаяПанельУдаляемыхОбъектовУстановитьФлажки(Кнопка)
     ТекОтбор = ЭлементыФормы.УдаляемыеОбъекты.ОтборСтрок.Метаданные;
     Для каждого СтрокаУдаляемогоОбъекта Из УдаляемыеОбъекты Цикл
         Если вВходитВОтбор(СтрокаУдаляемогоОбъекта.Метаданные,ТекОтбор) Тогда
             СтрокаУдаляемогоОбъекта.Удалять = Истина;
         КонецЕсли;
     КонецЦикла;
 КонецПроцедуры
 
 
 // Функция проверяет попадает ли значение в отбор
 // Параметры:
 //  ТекЗначение   - Значение любого типа, которое нужно проверить
 //    ТекОтбор      - Отбор, в котором происходит проверка
 // Возвращаемое значение:
 //    Булево        - Истина, если попадает
 //
 Функция вВходитВОтбор(ТекЗначение, ТекОтбор) Экспорт
     ЗначениеОтбора = ТекОтбор.Значение;
     ВходитВОтбор = Ложь;
     Если ТекОтбор.Использование = Ложь Тогда
         ВходитВОтбор = Истина;
     ИначеЕсли ТекОтбор.ВидСравнения = ВидСравнения.Равно Тогда
         Если ЗначениеОтбора = ТекЗначение Тогда
             ВходитВОтбор = Истина;
         КонецЕсли;
     ИначеЕсли ТекОтбор.ВидСравнения = ВидСравнения.НеРавно Тогда
         Если ЗначениеОтбора <> ТекЗначение Тогда
             ВходитВОтбор = Истина;
         КонецЕсли;
     ИначеЕсли ТекОтбор.ВидСравнения = ВидСравнения.Содержит Тогда
         Если Найти(ТекЗначение,ЗначениеОтбора) <> 0 Тогда
             ВходитВОтбор = Истина;
         КонецЕсли;
     ИначеЕсли ТекОтбор.ВидСравнения = ВидСравнения.ВСписке Тогда
         Если ЗначениеОтбора.НайтиПоЗначению(ТекЗначение) <> Неопределено Тогда
             ВходитВОтбор = Истина;
         КонецЕсли;
     ИначеЕсли ТекОтбор.ВидСравнения = ВидСравнения.НеВСписке Тогда
         Если ЗначениеОтбора.НайтиПоЗначению(ТекЗначение) = Неопределено Тогда
             ВходитВОтбор = Истина;
         КонецЕсли;
     КонецЕсли;
     Возврат ВходитВОтбор;
 КонецФункции // ВходитВРтбор()
   |