1С: Запросы. Условия отбора
Описание
Примеры использования условий отбора в запросе 1С. Отборы по дате, по объектам, по параметрам и др.
Оглавление (нажмите, чтобы раскрыть)
Поиск пустых ссылок
Пример поиска пустых ссылок в запросе 1С//Поиск приходных накладных //у которых не заполнен реквизит "Склад" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Ссылка |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Склад = | Значение(Справочник.Склады.ПустаяСсылка)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла;
Простые условия
Пример простых условий в запросе 1С//выбираем записи не являющиеся группой и //содержащие в названии слово "шланг" //аналог where Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | .Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | ЭтоГруппа = ЛОЖЬ | И Наименование ПОДОБНО ""%шланг%"""; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование); КонецЦикла;
Список значений в отборе
Пример использования списка значений в отборе//Выбираем записи из регистра ОстаткиМатериалов //по складам Основной и Резервный Склады = Новый Массив(2); Склады[0] = Справочники.Склады.Основной; Склады[1] = Справочники.Склады.Резервный; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ * |ИЗ | РегистрНакопления.ОстаткиМатериалов КАК ОстаткиМатериалов |ГДЕ | ОстаткиМатериалов.Склад В(&Склады)"; Запрос.УстановитьПараметр("Склады", Склады); Выборка = Запрос.Выполнить().Выбрать();
Условие отбора с датой
Пример использования условия отбора с датой в запросе//выбираем остатки материалов //на 01.08.2019 //вариант с параметром Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Материал.Наименование КАК Наименование, | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки( | &НаДату |)"; Запрос.УстановитьПараметр("НаДату", '20190801'); //вариант со значением в запросе Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Материал.Наименование КАК Наименование, | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки( | ДАТАВРЕМЯ(2019,08,01) |)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование + ": " + Выборка.Количество); КонецЦикла;
Условие отбора с объектами
Пример использования условия отбора с объектами в запросе//выбираем остатки материалов по складу "Основной" //вариант с параметром Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Материал.Наименование КАК Наименование, | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки |ГДЕ | Склад = &Склад"; Запрос.УстановитьПараметр("Склад", Справочники.Склады.Основной); //вариант со значением в запросе Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Материал.Наименование КАК Наименование, | КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки |ГДЕ | Склад = Значение(Справочник.Склады.Основной)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование + ": " + Выборка.Количество); КонецЦикла;
Условие отбора с параметрами
Пример использования условия отбора с параметрами в запросе//выбираем записи не являющиеся группой и //содержащие в названии слово "шланг" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | .Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | ЭтоГруппа = &ЭтоГруппа | И Наименование ПОДОБНО &ЧастьНаименования"; Запрос.УстановитьПараметр("ЭтоГруппа", ЛОЖЬ); Запрос.УстановитьПараметр("ЧастьНаименования", "%шланг%"); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование); КонецЦикла;
Условие отбора с типом
Пример использования условия отбора с типом в запросе//Выбираем записи из регистра ОстаткиМатериалов //занесенные докуметами "ПриходнаяНакладная" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ * |ИЗ | РегистрНакопления.ОстаткиМатериалов |ГДЕ | Регистратор ССЫЛКА Документ.ПриходнаяНакладная"; Выборка = Запрос.Выполнить().Выбрать();