На закладке объединения псевдонимы конструктора запросов можно

Обновлено: 04.05.2024

Конструктор запроса 1С - это один из инструментов разработки, который позволяет:

  1. составить текст запроса на языке запросов исключительно визуальными средствами;
  2. отредактировать текст имеющегося запроса.

Программный код обычный конструктор не создает.

Конструктор запроса с обработкой результата - это один из инструментов разработки, который позволяет:

  1. сформировать текст нового запроса;
  2. сформировать программный код, содержащий создание объекта встроенного языка "Запрос", текста запроса, получение и обработку результата выполнения запроса (фрагмент программного кода, который исполняет запрос и выводит его результаты в табличный документ или диаграмму - отсюда );
  3. отредактировать текст имеющегося запроса.

Конструктор запросов может использоваться:

  • разработчиком - в конфигураторе (необходимо знание языка запросов);
  • пользователем - в режиме 1С:Предприятие (как обработка "Консоль запросов").

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

Вызов конструктора текста запроса 1С:

  1. контекстным меню (правой кнопкой мыши) в нужном месте программного кода;
  2. с помощью команды "Конструктор запроса. " меню "Текст".


Вызов конструктора запроса 1С


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

Таким образом, разработчик может составить работоспособный запрос, даже не владея синтаксисом языка запросов - необходимые синтаксические конструкции конструктор сгенерирует автоматически. Готовый текст запроса может быть сразу же вставлен в текст модуля или скопирован в буфер обмена.

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

Текст запроса может содержать описание предопределенных данных конфигурации:

  1. значения системных перечислений (из определенного перечня);
  2. предопределенных данных (справочники, перечисления, планы видов характеристик, планов счетов, планов видов расчета);
  3. пустые ссылки;
  4. значения точек маршрута бизнес процессов.

Вкладки конструктора запроса 1С


На этой вкладке указывается источник данных и поля, которые необходимо выводить в отчет (по сути описываются конструкции ВЫБРАТЬ … ИЗ).

В качестве источников данных могут служить:

  • физическая таблица базы данных;
  • виртуальная таблица регистров; ;
  • вложенные запросы и т.д.

В контекстном меню виртуальных таблиц можно задать параметры этих таблиц.

На закладке "Таблицы и поля" конструктора запросов задают:

  1. источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы;
  2. набор полей из таблиц - источников данных запроса;
  3. поля в виде произвольного выражения.

Закладка "Связи" становится доступна сразу после добавления двух таблиц.

На закладке "Связи" конструктора запросов можно определить соединение таблиц-источников данных и связи между ними.

Язык запросов предоставляет широкие возможности по построчному соединению нескольких таблиц.

Соединение таблиц может быть:

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

В случае безусловного соединения, в конструкторе запросов достаточно определить выбираемые таблицы, не указывая, по каким полям они будут связаны (то есть не заполняя закладку Связи).

На практике чаще встречаются задачи соединения по определенному полю двух таблиц.

В конструкторе запросов тип условного соединения регулируется флажком "Все" - где он стоит, из той таблицы и выбираются все записи.

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

Флажок

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

Вкладка

На данной вкладке система позволяет группировать и суммировать нужные поля результата таблицы. Описывается использование конструкций СГРУППИРОВАТЬ ПО, СУММА, МИНИМУМ, СРЕДНЕЕ, МАКСИМУМ, КОЛИЧЕСТВО, КОЛИЧЕСТВО РАЗЛИЧНЫХ.

При описании группировки в тексте запроса все поля должны делиться:

  • на те, по которым производится группировка;
  • на агрегатные функции (рассчитываемые поля);
  • на поля вложенных таблиц.

Вложенные таблицы не попадают ни в группируемые, ни в агрегируемые поля.

Количество записей в результате запроса можно узнать с помощью агрегатной функции КОЛИЧЕСТВО(*).

Вкладка

Отвечает за все условия, накладываемые на получаемые данные, т.е. за всё, что идёт в тексте запроса после конструкции ГДЕ.

Вкладка

Вкладка "Дополнительно" включает важные параметры.

Группировка "Выборка записей":

  • Первые — параметр, возвращающий в запрос только N записей (оператор ПЕРВЫЕ ); позволяет вывести в отчет первые N записей, которые будут отобраны с учетом правил упорядочивания, настроенных в конструкторе запросов;
  • Без повторяющихся — обеспечивает уникальность полученных записей (оператор РАЗЛИЧНЫЕ) и позволяет исключить из результирующей таблицы запроса одинаковые строки (данная операция распространяется только на детальные записи );
  • Разрешенные — позволяет выбирать только те записи, которые позволяет выбрать система с учетом настройки RLS (конструкция РАЗРЕШЕННЫЕ).

Группировка "Тип запроса":

  • определяет тип запроса:
    1. Выборка данных;
    2. Создание временной таблицы;
    3. Уничтожение временной таблицы.

Флаг "Блокировать получаемые данные для последующего изменения":

  1. позволяет включить возможность установки блокировки данных, которая обеспечивает сохранность данных от момента их чтения до изменения (актуально только для "Автоматического режима блокировок", конструкция ДЛЯ ИЗМЕНЕНИЯ); позволяет заблокировать данные указанных таблиц-источников на чтение (в рамках транзакции).
  2. в режиме автоматических транзакционных блокировок) происходят блокировки:
    • в варианте файл-сервер - на уровне таблиц базы данных;
    • в варианте клиент-сервер - на уровне записей таблиц базы данных.
  3. Если список "Таблицы для изменения" - пуст, то будут блокироваться данные всех таблиц, задействованных в запросе, иначе - только таблиц, указанных в списке.

Вкладка

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

На этой закладке устанавливается возможность объединения разных таблиц и псевдонимы (конструкция КАК).

В левой части указываются таблицы, если установить флаги напротив таблицы, будут использоваться конструкции ОБЪЕДИНИТЬ, иначе — ОБЪЕДИНИТЬ ВСЕ (отличия двух способов тут ).

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

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

  1. На закладке "Объединения/Псевдонимы" конструктора запросов можно:
    • Задать список запросов (в результирующую выборку попадут записи всех указанных запросов).
    • Задать имена полей результирующей таблицы.
  2. При создании запросов, участвующих в объединении , с помощью конструктора запросов, он сам добавит в каждый запрос необходимое количество недостающих полей со значением NULL. Настроить соответствие добавленных конструктором полей и полей результата запроса можно на закладке "Объединения/Псевдонимы".
  3. Настройки, сделанные в разделе "Объединения/Псевдонимы" конструктора запросов, отразятся на информации, отображаемой в других разделах конструктора, следующим образом:
    • Если заданы псевдонимы полей результирующей таблицы, то новые названия появляются на закладке "Порядок" в списке полей.
    • При объединении запросов на ряде закладок (в том числе "Таблицы и поля") появляется возможность переключения между объединяемыми запросами.
  4. При объединении двух запросов на закладке "Объединения/Псевдонимы" конструктора запросов условие связи между запросами задать нельзя: в случае объединения связь всегда безусловна.

Используя конструктор запроса, повлиять на порядок записей в результирующей таблице запроса можно:

  1. на закладке "Порядок";
  2. на закладке "Объединения/Псевдонимы".

Таблица, полученная в результате запроса, может быть отсортирована по алфавиту по нужному полю:

  1. по полю, присутствующему в запросе;
  2. по любому полю таблицы-источника (кроме случаев объединенных запросов).

Помимо указания порядка для конкретного поля, можно воспользоваться опцией "Автоупорядочивание", которая отсортирует список по основному представлению объекта.

Вкладка

Указывается порядок сортировки значений (УПОРЯДОЧИТЬ ПО) — по убыванию (УБЫВ) или возрастанию (ВОЗР).

Флаг "Автоупорядочивание" (в запросе — АВТОУПОРЯДОЧИВАНИЕ):

  • если установлен, то система будет сортировать данные (по умолчанию система 1С 8.3 выводит данные в «хаотичном» порядке).

Если на закладке "Порядок" конструктора запросов не заданы настройки, то установка флага "Автозаполнение" обусловит следующее:

  1. записи в результирующей таблице запроса будут упорядочены по полям сортировки по умолчанию для таблиц-источников данных;
  2. если заданы настройки на станицах "Группировка" или "Итоги", то порядок записей в результирующей таблице запроса будет определяться этими настройками.

В случае установки флага "Автоупорядочивание" на закладке "Порядок" конструктора запросов записи в результирующей таблице запроса (если эта таблица уже упорядочена по полю, хранящему ссылку на иерархический справочник) будут упорядочены по значению основного представления для этого поля. Т.е. если справочник отсортирован по ссылке (= наименованию), но основное его представление - код, то после включения автоупорядочивания сортировка изменится на сортировку по коду.

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

В ней указывается:

  1. Поле, по которому группируем, и тип его итогов:
    • Элементы - итоги только по конечным элементам;
    • Элементы и иерархия - итоги по папкам и по конечным элементам;
    • Только иерахия - итоги только по папкам.
  2. Флаг "Общие итоги" - суммирование всех полученных запросом строк;
  3. Итоговое поле - по которому собственно и считаем итоги.

Таким образом, при использовании секции "ИТОГИ . ПО" количество записей в результате запроса увеличится (по сравнению с их количеством без секции "ИТОГИ . ПО").

Результатом запроса с итогами будет дерево значений:

Вкладка

На этой вкладке можно создавать новые пакеты запросов, а также использовать её для навигации.

В тексте запроса пакеты разделяются символом «;» (точка с запятой).

Особенности использования конструктора запросов 1С

  1. При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений, из первоначального текста будут удалены только комментарии.
  2. Для создания в конструкторе запросов вложенного запроса необходимо:
    1. открыть закладку "Таблицы и поля";
    2. в командной панели над деревом "Таблицы" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню.

    Создание вложенного запроса 1С

    1. открыть закладку "Таблицы и поля";
    2. в командной панели над деревом " Поля " нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню.

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

    При использовании в качестве источника данных для запроса внешнего источника (данные которого передаются через параметр) в качестве такого источника может использоваться:

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

    Конструктор запросов работает как в режиме Предприятие (как обработка Консоль запросов), так и в Конфигураторе. Использование в режиме Предприятие позволяет квалифицированным пользователям самостоятельно получать выборки данных, для которых нет типовых отчетов.

    1. Сформировать текст нового запроса
    2. Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса и получение результата выполнения запроса
    3. Отредактировать текст имеющегося запроса
    4. Верны ответы 1 и 3
    5. Все вышеперечисленное

    Вопрос 04.42 экзамена 1С:Профессионал по платформе. Использование конструктора запроса с обработкой результата позволяет:

    1. Сформировать текст нового запроса
    2. Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса, получение и обработку результата выполнения запроса
    3. Отредактировать текст имеющегося запроса
    4. Все вышеперечисленное
    5. Верны ответы 1 и 3

    Вопрос 04.43 экзамена 1С:Профессионал по платформе. При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений:

    1. Весь первоначальный текст остается без изменений
    2. Из первоначального текста будут удалены только комментарии
    3. В первоначальном тексте комментарии останутся, а будут удалены только конструкции языка запросов построителя отчетов
    4. Из первоначального текста будут удалены и комментарии, и конструкции языка запросов построителя отчетов
    1. С помощью пункта главного меню "Текст - Конструктор запроса…"
    2. С помощью кнопки "Конструкторы - Конструктор запросов" на закладке "Макеты" из окна редактирования объекта
    3. С помощью пункта всплывающего контекстного меню "Конструктор запроса…", появляющегося при нажатии в тексте модуля правой клавиши мыши
    4. Верно все вышеперечисленное
    5. Верны ответы 1 и 3
    1. Разработчиками, так как необходимо знание языка запросов
    2. Квалифицированными пользователями без использования конфигуратора
    3. Верно все вышеперечисленное
    4. Нет верного ответа


    Вопрос 04.46 экзамена 1С:Профессионал по платформе. На закладке "Таблицы и поля" конструктора запросов задают:

    1. Источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы
    2. Набор полей из таблиц - источников данных запроса
    3. Поля в виде произвольного выражения
    4. Верны ответы 1 и 2
    5. Верно все вышеперечисленное

    Вопрос 04.47 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вложенного запроса необходимо:

    1. Открыть закладку "Таблицы и поля". В командной панели над деревом "База данных" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
    2. Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
    3. Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
    4. В конструкторе запросов создать вложенный запрос нельзя

    Вопрос 04.48 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вычисляемого поля необходимо:

    1. Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Изменить текущий элемент". В открывшемся окне добавить новое поле
    2. Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
    3. Открыть закладку "Объединения/Псевдонимы". В командной панели над списком полей нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
    4. Создать вычисляемое поле, можно только изменив текст запроса "вручную"

    Вопрос 04.49 экзамена 1С:Профессионал по платформе. Для создания в запросе строк, сгруппированных с помощью агрегатных функций, на закладке "Группировка" конструктора запросов обязательно должны быть заполнены:

    1. Только список групповых полей. Указание суммируемых полей не обязательно
    2. Только список суммируемых полей, при этом остальные поля автоматически попадут в секцию СГРУППИРОВАТЬ ПО в тексте запроса
    3. Обязательным является указание как групповых, так и суммируемых полей

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

    Запросы в 1С обеспечивают табличный способ доступа к данным. Язык запросов заточен под удобное чтение и преобразование больших массивов информации; изменять данные с его помощью нельзя. Язык запросов - это отдельный язык, не являющийся частью встроенного языка 1С:Предприятие; он достаточно сходен с SQL.
    Запрос всегда начинается с ключевого слова ВЫБРАТЬ; собственно кроме него в запросе может и не быть других ключевых слов, если секция ВЫБРАТЬ полностью описывает источник и результат запроса, например:

    • группировка
    • объединения разных таблиц-источников
    • условия, ограничивающие выборку
    • порядок представления результата
    • расчет итогов по каким-либо полям

    Запросы можно набирать просто вручную, но намного удобнее использовать специальный инструмент - конструктор запросов:

    Вопрос 07.04 экзамена 1С:Профессионал по платформе. Для повышения скорости выполнения запроса необходимо:

    1. Задавать параметры большинства реальных таблиц
    2. Задавать параметры большинства виртуальных таблиц
    3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор, заданный конструкцией языка запросов "ГДЕ"
    4. Верны ответы 1 и 2

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

    Вопрос 07.15 экзамена 1С:Профессионал по платформе. Можно ли, используя конструктор запроса, повлиять на порядок записей в результирующей таблице запроса?

    1. Нельзя
    2. Это можно сделать на закладке "Порядок"
    3. Это можно сделать на закладке "Объединения/Псевдонимы"
    4. Верны ответы 2 и 3

    Правильный ответ четвертый. Закладка Порядок для этого предназначена очевидно; поля тут можно двигать стрелками, либо включить Автоупорядочивание (по основному представлению объекта):

    1. Все поля должны делиться на те, по которым производится группировка, и на агрегатные функции (рассчитываемые поля)
    2. Все поля должны делиться на те, по которым производится группировка, на агрегатные функции (рассчитываемые поля) и на поля вложенных таблиц
    3. Чем выше определяется группировка, тем выше должно определяться поле в запросе
    4. Перечисленные ограничения не действуют

    Вопрос 07.35 экзамена 1С:Профессионал по платформе. Левое внешнее соединение означает, что в результат соединения войдут:

    1. Все данные из таблицы №2 и они будут дополнены данными из таблицы №1, для которых выполняется условие соединения
    2. Данные из обеих таблиц, для которых выполняется условие соединения, но поля, которые берутся из таблицы №1, будут идти первыми (слева)
    3. Все данные из таблицы №1 и они будут дополнены данными из таблицы №2, для которых выполняется условие соединения

    Правильный ответ первый. Из левой таблицы будет выбрано все, из правой - только совпадающее по ключу с левой.

    Вопрос 07.36 экзамена 1С:Профессионал по платформе. С помощью какой агрегатной функции можно узнать количество записей в результате запроса?

    1. КОЛИЧЕСТВО()
    2. КОЛИЧЕСТВО(*)
    3. КОЛИЧЕСТВО(Различные …)
    4. СУММА

    Правильный ответ второй - функция КОЛИЧЕСТВО, и в ней нужно специфицировать, по каким полям считать количество (в примере по всем).

    При левом соединении таблиц Номенклатура и ЕдиницыИзмерения в выборку попадут все записи из справочника Номенклатура и только те записи из справочника ЕдиницыИзмерения, которые соответствуют условиям соединения. Если записи из справочника Номенклатура не соответствует ни одна запись из справочника ЕдиницыИзмерения, поле окажется пустым - в него будет записано значение Null.

    Воспользуемся Конструктором запроса для того, чтобы построить запрос по двум таблицам. На рис. 7.21 вы можете видеть вкладку конструктора Таблицы и поля.

    Конструктор запроса, вкладка Таблицы и поля

    В область Таблицы добавлены таблицы справочников Номенклатура и ЕдиницыИзмерения, в область Поля добавлены поля Номенклатура.Наименование и ЕдиницыИзмерения.Наименование.

    Если на вкладке Таблицы и поля задается выборка более чем из одной таблицы, в окне появляется дополнительная вкладка - Связи. На ней задаются связи между таблицами. Перейдем на эту вкладку, рис. 7.22.

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

    По умолчанию здесь установлен выбор всех элементов справочника Номенклатура и подбор соответствующих им полей из справочника ЕдиницыИзмерения по следующему условию:

    То есть - условие предполагает выполнение равенства реквизита ЕдиницаИзмерения справочника Номенклатура с элементом справочника ЕдиницыИзмерения.

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

    Сделаем еще некоторые настройки в Конструкторе запроса. В частности, перейдем на вкладку Объединения/Псевдонимы, рис. 7.23.

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

    Здесь, в поле Имя поля задаются имена полей результатов запроса . Так как поля разных справочников имеют одинаковые имена ( Наименование ), здесь мы видим имя Наименование для справочника Номенклатура и Наименование1 для справочника ЕдиницыИзмерения. Для удобства работы изменим эти имена, соответственно, на Номенклатура и ЕдиницаИзмерения, рис. 7.24.

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

    Теперь настройки Конструктора окончены, нажмем ОК и выполним полученный запрос , рис. 7.25.

    Результат выполнения запроса

    Мы получили следующий текст запроса :

    Команда ЛЕВОЕ СОЕДИНЕНИЕ задает способ соединения таблиц.

    Этот запрос можно интерпретировать так: выбрать все элементы из справочника Номенклатура и "присоединить" к ним элементы справочника ЕдиницыИзмерения, соответствующие условию.

    Правое внешнее соединение

    Правое соединение в точности противоположно левому. Из первой таблицы выбираются только те строки, которым находятся соответствия во второй таблице. А из второй выбираются все строки. Вместо "недостающих" строк первой таблицы подставляется значение Null.

    Для того, чтобы модифицировать текст запроса , превратив его из "левого" в "правый", достаточно заменить ЛЕВОЕ СОЕДИНЕНИЕ на ПРАВОЕ СОЕДИНЕНИЕ . Причем, это мы сделаем вручную, рис. 7.26.

    Результат выполнения запроса

    Вот какой текст запроса у нас получился:

    Как видите, таблица ЕдиницыИзмерения представлена здесь в полном объеме, а вот из таблицы Номенклатура выбраны лишь те позиции, которым назначена единица измерения.

    Если попытаться добиться такого же эффекта с помощью Конструктора запроса, то он, вместо того, чтобы использовать команду ПРАВОЕ СОЕДИНЕНИЕ , использует ЛЕВОЕ СОЕДИНЕНИЕ , но при этом изменяет запрос .

    На рис. 7.27 вы можете видеть вкладку Связи Конструктора запросов. Здесь мы сняли галочку из поля Все таблицы Номенклатура и установили ее в поле Все для таблицы ЕдиницыИзмерения.

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

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

    Выборка осуществляется уже из таблицы ЕдиницыИзмерения, ее элементам сопоставляются элементы таблицы Номенклатура, для которых выполняется условие соединения. Эффект от такого запроса точно такой же, рис. 7.28, как и от вышеописанного запроса с командой ПРАВОЕ СОЕДИНЕНИЕ , которую мы вводили вручную.

    При левом соединении таблиц Номенклатура и ЕдиницыИзмерения в выборку попадут все записи из справочника Номенклатура и только те записи из справочника ЕдиницыИзмерения, которые соответствуют условиям соединения. Если записи из справочника Номенклатура не соответствует ни одна запись из справочника ЕдиницыИзмерения, поле окажется пустым - в него будет записано значение Null.

    Воспользуемся Конструктором запроса для того, чтобы построить запрос по двум таблицам. На рис. 7.21 вы можете видеть вкладку конструктора Таблицы и поля.

    Конструктор запроса, вкладка Таблицы и поля

    В область Таблицы добавлены таблицы справочников Номенклатура и ЕдиницыИзмерения, в область Поля добавлены поля Номенклатура.Наименование и ЕдиницыИзмерения.Наименование.

    Если на вкладке Таблицы и поля задается выборка более чем из одной таблицы, в окне появляется дополнительная вкладка - Связи. На ней задаются связи между таблицами. Перейдем на эту вкладку, рис. 7.22.

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

    По умолчанию здесь установлен выбор всех элементов справочника Номенклатура и подбор соответствующих им полей из справочника ЕдиницыИзмерения по следующему условию:

    То есть - условие предполагает выполнение равенства реквизита ЕдиницаИзмерения справочника Номенклатура с элементом справочника ЕдиницыИзмерения.

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

    Сделаем еще некоторые настройки в Конструкторе запроса. В частности, перейдем на вкладку Объединения/Псевдонимы, рис. 7.23.

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

    Здесь, в поле Имя поля задаются имена полей результатов запроса . Так как поля разных справочников имеют одинаковые имена ( Наименование ), здесь мы видим имя Наименование для справочника Номенклатура и Наименование1 для справочника ЕдиницыИзмерения. Для удобства работы изменим эти имена, соответственно, на Номенклатура и ЕдиницаИзмерения, рис. 7.24.

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

    Теперь настройки Конструктора окончены, нажмем ОК и выполним полученный запрос , рис. 7.25.

    Результат выполнения запроса

    Мы получили следующий текст запроса :

    Команда ЛЕВОЕ СОЕДИНЕНИЕ задает способ соединения таблиц.

    Этот запрос можно интерпретировать так: выбрать все элементы из справочника Номенклатура и "присоединить" к ним элементы справочника ЕдиницыИзмерения, соответствующие условию.

    Правое внешнее соединение

    Правое соединение в точности противоположно левому. Из первой таблицы выбираются только те строки, которым находятся соответствия во второй таблице. А из второй выбираются все строки. Вместо "недостающих" строк первой таблицы подставляется значение Null.

    Для того, чтобы модифицировать текст запроса , превратив его из "левого" в "правый", достаточно заменить ЛЕВОЕ СОЕДИНЕНИЕ на ПРАВОЕ СОЕДИНЕНИЕ . Причем, это мы сделаем вручную, рис. 7.26.

    Результат выполнения запроса

    Вот какой текст запроса у нас получился:

    Как видите, таблица ЕдиницыИзмерения представлена здесь в полном объеме, а вот из таблицы Номенклатура выбраны лишь те позиции, которым назначена единица измерения.

    Если попытаться добиться такого же эффекта с помощью Конструктора запроса, то он, вместо того, чтобы использовать команду ПРАВОЕ СОЕДИНЕНИЕ , использует ЛЕВОЕ СОЕДИНЕНИЕ , но при этом изменяет запрос .

    На рис. 7.27 вы можете видеть вкладку Связи Конструктора запросов. Здесь мы сняли галочку из поля Все таблицы Номенклатура и установили ее в поле Все для таблицы ЕдиницыИзмерения.

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

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

    Выборка осуществляется уже из таблицы ЕдиницыИзмерения, ее элементам сопоставляются элементы таблицы Номенклатура, для которых выполняется условие соединения. Эффект от такого запроса точно такой же, рис. 7.28, как и от вышеописанного запроса с командой ПРАВОЕ СОЕДИНЕНИЕ , которую мы вводили вручную.

    Читайте также: