1С: Запросы. Условия отбора

Запросы. Условия отбора

Оглавление (нажмите, чтобы раскрыть)

Поиск пустых ссылок

Пример поиска пустых ссылок в запросе 1С
//Поиск приходных накладных
//у которых не заполнен реквизит "Склад"

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   ПриходнаяНакладная.Ссылка
    |ИЗ
    |   Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
    |ГДЕ
    |   ПриходнаяНакладная.Склад = 
    |       Значение(Справочник.Склады.ПустаяСсылка)";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Ссылка);
КонецЦикла;

Простые условия

Пример простых условий в запросе 1С
//выбираем записи не являющиеся группой и
//содержащие в названии слово "шланг"
//аналог where
Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   .Наименование
    |ИЗ
    |   Справочник.Номенклатура
    |ГДЕ
    |   ЭтоГруппа = ЛОЖЬ
    |   И Наименование ПОДОБНО ""%шланг%""";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
КонецЦикла;

Список значений в отборе

Пример использования списка значений в отборе
//Выбираем записи из регистра ОстаткиМатериалов
//по складам Основной и Резервный

Склады = Новый Массив(2);
Склады[0] = Справочники.Склады.Основной;
Склады[1] = Справочники.Склады.Резервный;

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ *
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов КАК ОстаткиМатериалов
    |ГДЕ
    |   ОстаткиМатериалов.Склад В(&Склады)";

Запрос.УстановитьПараметр("Склады", Склады);

Выборка = Запрос.Выполнить().Выбрать();

Условие отбора с датой

Пример использования условия отбора с датой в запросе
//выбираем остатки материалов
//на 01.08.2019

//вариант с параметром
Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Материал.Наименование КАК Наименование,
    |   КоличествоОстаток КАК Количество
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов.Остатки(
    |       &НаДату
    |)";

Запрос.УстановитьПараметр("НаДату", '20190801');

//вариант со значением в запросе
Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Материал.Наименование КАК Наименование,
    |   КоличествоОстаток КАК Количество
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов.Остатки(
    |       ДАТАВРЕМЯ(2019,08,01)
    |)";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование + ": " +
        Выборка.Количество);
КонецЦикла;

Условие отбора с объектами

Пример использования условия отбора с объектами в запросе
//выбираем остатки материалов по складу "Основной"
//вариант с параметром

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Материал.Наименование КАК Наименование,
    |   КоличествоОстаток КАК Количество
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов.Остатки     
    |ГДЕ
    |   Склад = &Склад";

Запрос.УстановитьПараметр("Склад",
    Справочники.Склады.Основной);

//вариант со значением в запросе
Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Материал.Наименование КАК Наименование,
    |   КоличествоОстаток КАК Количество
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов.Остатки     
    |ГДЕ
    |   Склад = Значение(Справочник.Склады.Основной)";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование + ": " +
        Выборка.Количество);
КонецЦикла;

Условие отбора с параметрами

Пример использования условия отбора с параметрами в запросе
//выбираем записи не являющиеся группой и
//содержащие в названии слово "шланг"

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   .Наименование
    |ИЗ
    |   Справочник.Номенклатура
    |ГДЕ
    |   ЭтоГруппа = &ЭтоГруппа
    |   И Наименование ПОДОБНО &ЧастьНаименования";

Запрос.УстановитьПараметр("ЭтоГруппа", ЛОЖЬ);
Запрос.УстановитьПараметр("ЧастьНаименования", "%шланг%");
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
КонецЦикла;

Условие отбора с типом

Пример использования условия отбора с типом в запросе
//Выбираем записи из регистра ОстаткиМатериалов
//занесенные докуметами "ПриходнаяНакладная"

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ *
    |ИЗ
    |   РегистрНакопления.ОстаткиМатериалов
    |ГДЕ
    |   Регистратор ССЫЛКА Документ.ПриходнаяНакладная";

Выборка = Запрос.Выполнить().Выбрать();
Ключи: |