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

Урок 4. Объединение запросов 1с при помощи конструктора

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

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

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

Новые вкладки: Объединения/Псевдонимы.

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

Конструктор запросов 1с позволяет создавать объединения запросов. При их помощи можно последовательно выводить в результат данные, полученные из нескольких запросов, не используя при этом связи. Единственной условие для объединения — одинаковый набор полей в каждом отдельном запросе.

В конструкторе перейдем на вкладку Объединения/Псевдонимы. Она предназначена для создания объединений запросов и для задания псевдонимов для полей запроса. Псевдонимы полей нужны, если вас не устраивают стандартные имена полей базы данных. Если поле запроса состоит только из поля таблицы базы данных, то псевдоним для него не обязателен. Если же при создании поля вы использовали функции языка запросов, то псевдоним для такого поля обязателен. Для таких полей конструктор запросов создает стандартные псевдонимы Поле1…ПолеN, эти псевдонимы можно заменить на те, которые удобны для вас.

Вкладка Объединения-Псевдонимы конструктора запросов

Рассмотрим разделы вкладки Объединения /Псевдонимы:

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

Переключение между запросами 1с

  • В таблице Запросы две колонки:
    • Имя. Задается автоматически в формате Запрос 1 … Запрос N;
    • Без дубликатов. Устанавливается в случае, если необходимо исключить повторяющиеся строки при объединении с предыдущим запросом. Стоит отметить, что данный флаг будет действовать только на объединение запроса в котором он установлен с предыдущим запросом.

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

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

Разберем решение задачи, приведенной в начале урока. Напомню условия:

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

  1. Создадим новый запрос;
  2. Запустим конструктор запросов;
  3. Выберем таблицу ПоступлениеТоваровУслуг из ветки Документы;
  4. Из таблицы ПоступлениеТоваровУслуг выберем поле Ссылка;
  5. Перейдем на вкладку Условия;
  6. В разделе Поля, раскроем ветку ПоступлениеТоваровУслуг при помощи кнопки «+»;
  7. Найдем реквизит Дата и перетащим его в раздел условия, выберем оператор сравнения Между и укажем параметры начала и окончания периода, например НачалоПериода и ОкончаниеПериода;
  8. Перейдем на вкладку Объединения / Псевдонимы.
  9. Добавим новый запрос, флаг Без дубликатов поднимать не нужно, так как мы используем разные типы документов;
  10. Конструктор запросов 1с автоматически перейдет на вкладку Таблицы и поля. В правой части окна будет видно, что активен второй запрос объединения;

  11. Повторим пункты 1 — 7, для таблицы ВозвратТоваровПоставщику;
  12. Снова перейдем на вкладку Объединения / Псевдонимы. В таблице псевдонимов видно, что поля Ссылка обоих таблиц стоят в одной строке, а значит ссылки на оба документа будут находится в результате запроса в одной колонке;
  13. Сменим имя колонки с Ссылка на Документ (зададим псевдоним поля). Для этого дважды щелкнем левой кнопкой мыши по имени поля. После чего можно задать свое имя, впишем туда Документ;
    Псевдоним поля в запросе 1с
  14. Запрос готов, нажимаем кнопку «ОК» в нижней части окна конструктора.

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

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

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

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

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

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

Страницы:   1  2  3  4  5  6

2 комментария

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

Ваш e-mail не будет опубликован.