Back to top

Параметры запроса и операторы сравнения

Опубликовано e-1c@mail.ru - пн, 04/24/2017 - 09:58

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

Параметры выделяются в тексте запроса символом &.

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

Использование в качестве источника передаваемой в запрос таблицы значений мы рассмотрим в отдельной статье. В остальных случаях синтаксис использования параметров в запросе 1С выглядит так:

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

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

Задавая условия в запросах 1С, мы сравниваем одно значение с другим(и). В платформе 1С:Предприятие предусмотрены следующие виды сравнений:

  • Равно — обозначается знаком = ;
  • Не равно — обозначается знаком <> ;
  • Больше — обозначается знаком > ;
  • Больше или равно — обозначается знаком >= ;
  • Меньше — обозначается знаком < ;
  • Меньше или равно — обозначается знаком <= ;
  • Между — используется, когда нужно одновременно применить условия Больше или равно и Меньше или равно, то есть задаются две границы значений.

Запрос.Текст="ВЫБРАТЬ
    |   КурсыВалютСрезПервых.Период,
    |   КурсыВалютСрезПервых.Валюта,
    |   КурсыВалютСрезПервых.Курс,
    |ИЗ
    |   РегистрСведений.КурсыВалют.СрезПервых (, Курс МЕЖДУ 30 И 40) КАК КурсыВалютСрезПервых"

ПОДОБНО — проверяет соответствие строки некоему шаблону. Шаблон может содержать следующие специальные символы:

  • % — любое количество произвольных символов;
  • _ — один произвольный символ;
  • [abc] — любой из символов, перечисленных в квадратных скобках (можно указывать диапазоны, например [0-9]);
  • [^abc] — любой из символов, кроме перечисленных в квадратных скобках.

Если в шаблон необходимо включить один из символов, перечисленных выше, то перед ним должен идти спецсимвол. Этим спецсимволом может быть любой символ, главное чтобы он не применяется в шаблоне по прямому назначению и не был одним из символов, перечисленных выше. При этом после условия пишется слово СПЕЦСИМВОЛ и в кавычках приводится сам спецсимвол.

 Запрос.Текст="ВЫБРАТЬ
    |   КурсыВалютСрезПервых.Период,
    |   КурсыВалютСрезПервых.Валюта,
    |   КурсыВалютСрезПервых.Курс,
    |ИЗ
    |   РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
    |ГДЕ
    | КурсыВалютСрезПервых.Валюта ПОДОБНО ""%\_"" СПЕЦСИМВОЛ ""\"""

Такой запрос показал бы курсы валют, названия которых заканчивается на знак подчеркивания.

В и В ИЕРАРХИИ — проверяет наличие элемента в некотором списке. Если используется оператор В, то проверяется только сам список, а если В ИЕРАРХИИ, то еще и элементы, подчиненные элементам списка.
В качестве списка может использоваться массив, список значений, таблица значений. Оператор В дополнительно может работать с результатом вложенного запроса при условии, что в нем выбирается только одно поле.
Синтаксис для сравнения с массивом, списком значений или таблицей значений, которые передаются в запрос в виде параметра:

    Запрос.Текст="ВЫБРАТЬ
    |   КурсыВалютСрезПервых.Период,
    |   КурсыВалютСрезПервых.Валюта,
    |   КурсыВалютСрезПервых.Курс,
    |ИЗ
    |   РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
    |ГДЕ
    | КурсыВалютСрезПервых.Валюта В (&amp;ПереченьВалют) "
 
    //Синтаксис для сравнения с результатом вложенного запроса:
 
    Запрос.Текст="ВЫБРАТЬ
    |   КурсыВалютСрезПервых.Период,
    |   КурсыВалютСрезПервых.Валюта,
    |   КурсыВалютСрезПервых.Курс,
    |ИЗ
    |   РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
    |ГДЕ
    |   КурсыВалютСрезПервых.Валюта В (ВЫБРАТЬ
    |                                    Валюты.Ссылка,
    |                                    ИЗ
    |                                    Справочник.Валюты КАК Валюты) "
 
//    ССЫЛКА — проверяет принадлежность элемента к определенному объекту конфигурации. Применяется, когда проверяемое поле имеет составной тип данных.
 
    Запрос.Текст="ВЫБРАТЬ
    |   ОстаткиТоваров.Номенклатура
    |ИЗ
    |   РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
    |ГДЕ
    |   ОстаткиТоваров.Регистратор ССЫЛКА Документ.ПоступлениеТоваров "