1С 8.3 Поиск в Таблице значений по нескольким полям
Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Перейти в раздел примеры кода 1С 8.3:
Поиск строк в Таблице значений по нескольким значениям в 1С 8.3:
Процедура Поиск_строк_в_ТЗ_по_нескольким_значениям(ТЗ, ЗначениеПоиска1, ЗначениеПоиска2, ВидПоиска) Экспорт //ЗначениеПоиска3...,
// Параметры:
// ТЗ - таблица значений по полям которой ищем
// Пример ТЗ:
// Стр["Цвет"] = "Красный";
// Стр["Вес"] = 120;
//
// ЗначениеПоискаN - переданные значения для поиска по колонкам (согласно ОписаниеТипов)
// Пример значений:
// ЗначениеПоиска1="Красный"
// ЗначениеПоиска2=120
//
// ВидПоиска - метод поиска: 1-запросом, 2-с помощью структуры
Если ВидПоиска=1 Тогда //запросом
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Врем_ТЗ.Цвет КАК Цвет,
| Врем_ТЗ.Вес КАК Вес
|ПОМЕСТИТЬ Врем_ТЗ
|ИЗ
| &ТЗ КАК Врем_ТЗ
|;
|
|///////////////////////////////////////////
|ВЫБРАТЬ
| Врем_ТЗ.Цвет КАК Цвет,
| Врем_ТЗ.Вес КАК Вес
|ИЗ
| Врем_ТЗ КАК Врем_ТЗ
|ГДЕ
| Врем_ТЗ.Цвет = &Цвет
| И Врем_ТЗ.Вес = &Вес";
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Запрос.УстановитьПараметр("Цвет", ЗначениеПоиска1);
Запрос.УстановитьПараметр("Вес", ЗначениеПоиска2);
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
ИначеЕсли ВидПоиска=2 Тогда //с помощью структуры
ЗначенияПоиска = Новый Структура;
ЗначенияПоиска.Вставить("Цвет", ЗначениеПоиска1);
ЗначенияПоиска.Вставить("Вес", ЗначениеПоиска2);
НайденныеПоля = ТЗ.НайтиСтроки(ЗначенияПоиска);
КонецЕсли;
КонецПроцедуры
// Параметры:
// ТЗ - таблица значений по полям которой ищем
// Пример ТЗ:
// Стр["Цвет"] = "Красный";
// Стр["Вес"] = 120;
//
// ЗначениеПоискаN - переданные значения для поиска по колонкам (согласно ОписаниеТипов)
// Пример значений:
// ЗначениеПоиска1="Красный"
// ЗначениеПоиска2=120
//
// ВидПоиска - метод поиска: 1-запросом, 2-с помощью структуры
Если ВидПоиска=1 Тогда //запросом
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Врем_ТЗ.Цвет КАК Цвет,
| Врем_ТЗ.Вес КАК Вес
|ПОМЕСТИТЬ Врем_ТЗ
|ИЗ
| &ТЗ КАК Врем_ТЗ
|;
|
|///////////////////////////////////////////
|ВЫБРАТЬ
| Врем_ТЗ.Цвет КАК Цвет,
| Врем_ТЗ.Вес КАК Вес
|ИЗ
| Врем_ТЗ КАК Врем_ТЗ
|ГДЕ
| Врем_ТЗ.Цвет = &Цвет
| И Врем_ТЗ.Вес = &Вес";
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Запрос.УстановитьПараметр("Цвет", ЗначениеПоиска1);
Запрос.УстановитьПараметр("Вес", ЗначениеПоиска2);
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
ИначеЕсли ВидПоиска=2 Тогда //с помощью структуры
ЗначенияПоиска = Новый Структура;
ЗначенияПоиска.Вставить("Цвет", ЗначениеПоиска1);
ЗначенияПоиска.Вставить("Вес", ЗначениеПоиска2);
НайденныеПоля = ТЗ.НайтиСтроки(ЗначенияПоиска);
КонецЕсли;
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник