Конструктор запросов 1С — обучение на примерах

Урок 2. Создание условий в запросе 1с при помощи конструктора запросов.

Содержание статьи:

Таблицы и поля; Условия; Связи; Объединения / Псевдонимы; Группировка; Виртуальные таблицы.

Задача: выбрать запросом все проведенные документы Реализация товаров и услуг с суммами документа за указанный период.

Новые вкладки: Условия.

Новые механизмы: краткое описание редактора произвольных выражений.

Повторение предыдущей темы

Для начала поработаем с таблицами и полями, необходимыми для запроса:

  • Создадим новый запрос;
  • Запустим конструктор запросов;
  • Выберем таблицу РеализацияТоваровУслуг из ветки Документы;
  • Из таблицы выберем поля Ссылка и СуммаДокумента.

Запрос 1с по документам

Теоретическая часть урока №2

Перейдем на вкладку Условия. Данная вкладка предназначена для установки условий на выбранные таблицы базы данных. Это необходимо для того, чтобы отбирать только нужные в данном случае данные, а не все подряд.

Вкладка условия конструктора запрсов 1с 8

Рассмотрим разделы вкладки Условия:

  • Поля. В данном разделе отображены поля таблиц, выбранных на вкладке Таблицы и поля. Все эти поля можно использовать для построения условий;
  • Условия. Данный раздел предназначен для построения условий, для этого используются поля таблиц из предыдущего раздела, параметры переданные в запрос, функции языка запросов 1с, значения примитивных типов, пустые ссылки и т.д.. Раздел условий представляет из себя таблицу, включающую в себя несколько колонок:
    • Номер. Порядковый номер условия, задается автоматически;
    • Произвольное. Флаг при помощи которого можно перейти в ручной режим редактирования условия;
    • Условие. Собственно само условие на языке запросов, представляет из себя выражение, которое всегда должно возвращать одно из двух значений: Истина или Ложь;

Для того чтобы наложить условие на какое либо поле таблицы, его необходимо переместить из раздела Поля одним из трех способов:

  • Дважды щелкнуть по нему левой кнопкой мыши;
  • Перетащить его мышкой;
  • Добавить поле вручную используя кнопку Добавить расположенную над таблицей условий (остальные кнопки подробно разбирать не будем, так как их назначение очевидно).

Добавление поля условия вручную

Выбранное поле базы данных является левой частью условия. Правой частью может быть параметр (или параметры) переданные в запрос, значения примитивных типов (строка, число дата, булево) и т. д., между левой и правой частью условия устанавливается один из операторов сравнения (равно, не равно, в списке и т.д). Также условие может содержать только левую часть (если выбранное поле имеет тип Булево, например Проведен). Бывают условия которые не подпадают под данное описание, но здесь их разбирать не будем.

Составные части условия в запросе 1с

После того как вы задали левую часть условия, необходимо указать имя параметра для правой части (если вы перетащили поле из раздела Поля, то имя параметра будет задано автоматически, но его можно сменить), а также выбрать один из операторов сравнения из списка (или оставить Равно, который задается по умолчанию).

Если вы указываете оператор сравнения Между, то вам необходимо указать два параметра в правой части. Один из них обозначает начало интервала, второй его окончание. Например, оператор Между используется в случае, если вам необходимо выбрать документы за определенный период, тогда первый параметр будет началом периода, второй его окончанием.

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

Произвольное условие в запросе 1с

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

Редактор произвольных выражений для построения условий

Редактор произвольных выражений состоит из трех разделов:,

  • Выражение (синяя рамка) — в данном разделе пишется условие, он является главным, тогда как другие два нужны для удобства его редактирования;
  • Поле (зеленая рамка) — в этом разделе находятся все доступные поля для построения условия, их можно перетащить в раздел выражение;
  • Функции языка запросов (фиолетовая рамка) — в этом разделе можно выбрать операторы и функции языка запросов, которые доступны для составления выражений, их также можно перетащить в раздел выражений;

Редактор произвольных выражений также используется для создания полей запроса, чтобы его открыть можно либо дважды щелкнуть по полю левой кнопкой мыши, либо выделить и нажать кнопку Изменить текущий элемент.

Практическая часть урока №2

В разделе «Повторение предыдущей темы» мы создали основную часть запроса по реализациям. Теперь при помощи вкладки Условия отберем из них только проведенные документы за период.

  • Перейдем на вкладку Условия;
  • В разделе Поля, раскроем ветку РеализацияТоваровУслуг при помощи кнопки «+»;
  • Найдем реквизит Дата и перетащим его в раздел условия, у нас создастся условие «РеализацияТоваровУслуг.Дата = &Дата», но так как нам нужны документы не за конкретную дату, а за период, придется его немного доработать;
  • Выберем оператор сравнения Между и укажем параметры начала и окончания периода, например НачалоПериода и ОкончаниеПериода;

Создание условия по периоду в конструкторе запроса

  • Из раздела Поля перетащим реквизит Проведен, так как его тип — Булево, нам не обязательно нужна правая часть запроса и оператор сравнения;
  • Поставим в строке с условием флаг Произвольное и сотрем лишнюю часть условия «= &Проведен»;

В итоге у нас получится запрос со следующим текстом:

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

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

Если у вас в запросе используются параметры, не забывайте передавать их туда при помощи метода УстановитьПараметр(<ИмяПараметра> , <ЗначениеПараметра>).

Также прочтите статьи о языке запросов 1с 8:

<< Пред. страница   |   След.Страница >>

5 комментариев

  1. хм…. запросы, «в итоге у нас получится запрос со следующим текстом» … я вот попыталась поучится по вашим текстам, всё как бы понятно, но вот как потом полученные запросы использовать?

Добавить комментарий

Ваш адрес email не будет опубликован.