Отбор в таблице значений

 

Существует несколько способов сделать отбор в таблице значений.

Первый — он же самый простой и, на мой взгляд неправильный — это просто пройти по таблице значений в цикле и отобрать нужные строки.

Второй — использовать метод таблицы значений «НайтиСтроки». Методу передается структура в которой ключ — это название колонки, а значение — это нужное нам значение отбора. Этот метод неплох, но у него есть два серьезных недостатка. Во-первых, функция вернет массив строк таблицы значений (т.е. возможно потребуются дополнительные действия). А во-вторых, единственный допустимый вид сравнения — это равенство.

И, наконец, третий способ — использование объекта «ПостроительЗапроса».

Код выглядит примерно так:

Как видно из кода, мы создаем построить запросов и загружаем в него таблицу значений, после этого добавляется отбор, запрос выполняется и удовлетворяющие условию отбора строки выгружаются в другую таблицу значений. После этого отбор меняется (его уже не нужно добавлять) и результат выгружается вновь.

Этот способ лишен недостатков, которыми обладают предыдущие способы.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (оценок: 12, средняя оценка: 4,33 из 5)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Комментарии: 8
  1. Вася

    наааайс

  2. Камиль

    Чувак, ты мегакрут

  3. Артур

    То что я искал. Спасибо

  4. Чингиз

    А если понадобится отобрать строки с видом сравнения «Содержит»?

  5. Андрей

    Очень хорошая статья — спасибо автору.
    От себя добавлю только, что поле добавляемой колонки для отбора в таблице значений обязательно должно быть типизировано, иначе в строке тОтбор=Построитель.Отбор.Добавить(«Колонка1») вывалится ошибка «Недопустимое значение параметра (параметр номер ‘1’)»

  6. Сергей

    1. Для того, чтобы сработало
    тОтбор=Построитель.Отбор.Добавить(«Колонка1») ,
    надо перед этой строкой добавить:
    Построитель.ДоступныеПоля[«Колонка1»].Отбор = Истина;
    2. на толстом клиенте при выполнении строки
    ОтборПоУрв.ВидСравнения = ВидСравнения.;
    возникает ошибка
    Ошибка при установке значения атрибута контекста (ВидСравнения)
    {ВнешняяОбработка.ОЖФ.МодульОбъекта(845)}: ОтборПоУрв.ВидСравнения = ВидСравнения.НеРавно;
    по причине:
    Недопустимый тип сравнения
    Ни одно значение из ВидСравнения, кроме не прокатывает

    1. Сергей

      исправления:
      ОтборПоУрв.ВидСравнения = ВидСравнения.{ЛюбоеЗначение};

      Ни одно значение из ВидСравнения, кроме {Равно} не прокатывает

      1. Сергей

        Дополню, что, действительно, для того, чтобы срабатывал отбор с любым видом сравнения, поле, по которому производится отбор, должно быть типизировано.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: