1С 8.3 Поиск в Таблице значений по нескольким полям - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Поиск в Таблице значений по нескольким полям

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Поиск строк в Таблице значений по нескольким значениям в 1С 8.3:
Процедура Поиск_строк_в_ТЗ_по_нескольким_значениям(ТЗ, ЗначениеПоиска1, ЗначениеПоиска2, ВидПоиска) Экспорт //ЗначениеПоиска3...,

   // Параметры:
   //  ТЗ - таблица значений по полям которой ищем
   //          Пример ТЗ:
   //          Стр["Цвет"] = "Красный";
   //          Стр["Вес"] = 120;
   //
   //  ЗначениеПоискаN - переданные значения для поиска по колонкам (согласно ОписаниеТипов)
   //          Пример значений:
   //          ЗначениеПоиска1="Красный"
   //          ЗначениеПоиска2=120
   //
   //  ВидПоиска - метод поиска: 1-запросом, 2-с помощью структуры

   Если ВидПоиска=1 Тогда //запросом

       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                               |    Врем_ТЗ.Цвет КАК Цвет,
                               |    Врем_ТЗ.Вес КАК Вес
                               |ПОМЕСТИТЬ Врем_ТЗ
                               |ИЗ
                               |    &ТЗ КАК Врем_ТЗ
                               |;
                               |
                               |///////////////////////////////////////////
                               |ВЫБРАТЬ
                               |    Врем_ТЗ.Цвет КАК Цвет,
                               |    Врем_ТЗ.Вес КАК Вес
                               |ИЗ
                               |    Врем_ТЗ КАК Врем_ТЗ
                               |ГДЕ
                               |    Врем_ТЗ.Цвет = &Цвет
                               |    И Врем_ТЗ.Вес = &Вес";

       Запрос.УстановитьПараметр("ТЗ", ТЗ);
       Запрос.УстановитьПараметр("Цвет", ЗначениеПоиска1);
       Запрос.УстановитьПараметр("Вес", ЗначениеПоиска2);

       РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
       Пока Записи.Следующий() Цикл
           // Обход результата запроса по каждой записи в полученной выборке
       КонецЦикла;

   ИначеЕсли ВидПоиска=2 Тогда //с помощью структуры

       ЗначенияПоиска = Новый Структура;
       ЗначенияПоиска.Вставить("Цвет", ЗначениеПоиска1);
       ЗначенияПоиска.Вставить("Вес", ЗначениеПоиска2);
       НайденныеПоля = ТЗ.НайтиСтроки(ЗначенияПоиска);

   КонецЕсли;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 16.07.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому