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

Обновлено: 18.04.2024

Конструктор запросов в 1С 8.3 и 8.2 — мощнейший инструмент разработки. Он позволяет составить текст запроса при помощи специальной визуальной среды. Таким образом, чтобы создать запрос 1с не обязательно знать встроенный язык запросов, достаточно ориентироваться в не сложном и интуитивно понятном интерфейсе конструктора.

Конструктор запросов представляет из себя набор вкладок, каждая из которых отвечает за свою часть запроса. Так заполняя вкладку Таблицы и поля мы выбираем таблицы из которых запрос 1с будет получать данные и поля этих таблиц необходимые для решения конкретной задачи. Заполняя в кладку Условия мы накладываем условия на выбранные таблицы, для того чтобы выбрать из них только нужные нам данные и так далее.

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

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

Рассмотрим на небольших примерах с возрастающей сложностью все основные вкладки конструктора запросов. Такой подход позволит начинающему программисту 1с более эффективно изучить конструктор и все его возможности. Для примеров будем использовать конфигурацию Бухгалтерия 3.0.

Урок №1. Конструктор запросов — простейший пример использования.

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

Новые вкладки: Таблицы и поля.

Новые механизмы: просмотр и редактирование текста запроса при помощи кнопки «Запрос».

Для начала создания запроса создадим новый запрос и вызовем конструктор (как это делается написано несколькими абзацами выше). После этого откроется окно конструктора на вкладке Таблицы и поля.

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

Вкладка Таблицы и поля состоит из трех разделов:

База данных. В данном разделе представлены все таблицы базы данных, которые можно использовать для построения запроса;

Таблицы. В данный раздел выбираются таблицы необходимые для данного запроса. Для тогда чтобы переместить их из раздела база данных нужно:

  • Либо дважды щелкнуть по таблице;
  • Либо воспользоваться кнопками «>» или «>>».

Над разделом Таблицы присутствует ряд кнопок. Про большинство из них будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.

  • Создать вложенный запрос (красная линия). Предназначена для создания нового вложенного запроса;
  • Создать описание временной таблицы (желтая линия). Позволяет задать имя временной таблицы, которая расположена вне данного запроса, также можно использовать для передачи в запрос таблицы значений;
  • Изменить текущий элемент (зеленая линия). Позволяет перейти в выделенный вложенный запрос, временную таблицу или описание временной таблицы;
  • Удалить текущий элемент (голубая линия). Удаляет выделенную таблицу из выбранных таблиц;
  • Заменить таблицу (синяя линия). Открывает диалог замены выделенной таблицы. Полезно, если вы неверно выбрали виртуальную таблицу регистра, так как происходит позиционирование на текущей выбранной таблице в списке.
  • Параметры виртуальной таблицы (фиолетовая линия). Открывает параметры виртуальной таблицы регистра.

Поля. В данный раздел выбираются поля таблиц из предыдущего раздела. Эти поля будут колонками таблицы или выборки полученной в результате выполнения запроса. Нужны они прежде всего, для того чтобы получить из выбранных таблиц только нужную в конкретном случае информацию. Для того чтобы переместить их из раздела Таблицы необходимо:

  • Либо дважды щелкнуть по полю;
  • Либо воспользоваться кнопками «>» или «>>»;
  • Также можно добавить новое поле самостоятельно, используя произвольное выражение из полей выбранных таблиц и функций языка запросов.

Над разделом Поля присутствует ряд кнопок. Про создание полей при помощи произвольных выражений будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.

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

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

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

Приступим к созданию запроса по номенклатуре:

  • Создадим новый запрос и откроем конструктор методом указанным в начале урока;
  • В разделе База данных, откроем ветку Справочники и найдем там справочник Номенклатура;
  • Выделим его и при помощи кнопки «>» перенесем в раздел Таблицы;
  • В разделе Таблицы раскроем справочник номенклатура при помощи значка «+»;
  • В раскрывшемся списке полей найдем поле Ссылка и перенесем его в раздел Поля при помощи кнопки «>»
  • Запрос по номенклатуре готов, нажимаем кнопку «ОК» в нижней части окна конструктора.

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

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

Структура кода запроса в 1С легко изучить. Начнем от простого запроса к более сложным вариантам.

Выбрать

Любой запрос имеет команду ВЫБРАТЬ, после которой могут идти дополнительные параметры выборки, которые позднее рассмотрим отдельно:
ПЕРВЫЕ
РАЗЛИЧНЫЕ
РАЗРЕШЕННЫЕ

Далее идет список полей выборки.

Простейший запрос в 1С может иметь такой вид:

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

Усложняем запрос: добавим еще поля, разделив их запятой
ВЫБРАТЬ 1, 2, "3"

Этот запрос также вернет 1 строку, но уже с 3 колонками, две из которых содержат числа, а 3 строковое.

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

Поэтому в языке запросов существует специальный оператор именования КАК , который идет после поля,

Предыдущий запрос можно представить в таком виде:
ВЫБРАТЬ 1 КАК Один, 2 КАК Два, "3" КАК ЦифраТриСтрокой

Имена полей задаются по правилам именования переменных: не могут начинаться со строки, содержать пробелы, не должны повторятся в одной выборке, а также отсутствовать (они поставятся автоматически).
Возможно опускать слово КАК, но лучше такой вариант не использовать, так как конструктор запросов это исправит:
ВЫБРАТЬ ссылка ссылка ИЗ Справочник.ФизическиеЛица

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

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

Пример простого запроса к реальной таблице справочника:

ВЫБРАТЬ ссылка ИЗ Справочник.Контрагенты

В таких запросах мы можем указать конкретные поля, которые нам нужны или указать *.

ВЫБРАТЬ * ИЗ Справочник.Контрагенты

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

Вложенные таблицы

Также возможно обращение к вложенной таблице:

ВЫБРАТЬ * ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация

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

ВЫБРАТЬ КИ.Ссылка ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ //так иногда будет короче

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

ВЫБРАТЬ Ссылка.Наименование ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация

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

ВЫБРАТЬ Ссылка, ОсновнойДоговор.Наименование КАК НазваниеДоговора ИЗ Справочник.Контрагенты

В данном случае поле ОсновнойДоговор может быть пустым, тогда обращение к его наименованию не вызовет ошибку, но значение будет NULL, поэтому рекомендуется использовать ЕстьNULL.

Дополнительно

Вернемся к запросу

ВЫБРАТЬ КИ.Ссылка ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ

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

Чтобы избежать этого можно воспользоваться служебным словом РАЗЛИЧНЫЕ: система устранит все дубли автоматически.

ВЫБРАТЬ РАЗЛИЧНЫЕ КИ.Ссылка ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ

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

ВЫБРАТЬ ПЕРВЫЕ 100 КИ.Ссылка ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ

Последнее, что следует упомянуть при изучении основ выборки запросов 1С:
Команду «ПОМЕСТИТЬ », позволяющую помещать выборку в таблицу для многократного последующего использования.
Источник может также выборкой из запроса, указанной в скобках:

ВЫБРАТЬ * ИЗ (ВЫБРАТЬ * ИЗ Справочник.Контрагенты) КАК ВложеннаяТаблица

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

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

Регистр команд, имен и полей запроса не имеет значение: Выбрать и ВыБРатЬ равносильны.

Реклама — это искусство делать из полуправды целую ложь.

— Эдгар Шоафф

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


Всего 4 вида соединений

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

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

Условием соединения может быть и простое условие «ИСТИНА», которое соединит таблицы с значительным увеличением количества строк (каждая строка соединится с каждой строкой второй таблицы).

Различные виды объединений используются для своих своих задач и целей:

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

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

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

В управлении торговлей для решения такой задачи соединение не так уж важно, достаточного было бы обратится к регистру «Продажи», а вот в «Бухгалтерии предприятия» соединение будет более верным решением: ведь мы не знаем заранее какой счет учета используется для продажи, могут быть созданные пользователем субсчета (это даст более короткое решение, но все зависит от ситуации — не обязательно же оно должно быть универсальным).

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

Требование к таким таблицам:

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

Как задать соединение в конструкторе запроса:


Шаг 1: выберите необходимые таблицы, которые возможно соединить

  • Это производится на вкладке таблицы конструктора запроса.
  • Далее можно сразу выбрать нужные поля.


Шаг 2: Переходим на вкладку «Связи»

  • Для простых таблиц, где явно определяются связи, система их объединит самостоятельно
  • В данном случае левое соединение
  • Чтобы получить внутреннее: снимаются оба флажка «Все» — тогда в таблицу попадут только контрагенты у которых есть контактные лица
  • Чтобы получить полное: устанавливаются оба флажка
  • Если требуется соединение по двум условиям добавляется еще одна строка связи.

Вид соединения задается соответствующим словом перед «СОЕДИНЕНИЕ», остальной синтаксис идентичен. Правое не рассматриваем, так как конструктор запроса автоматически поменяет таблицы местами и сделает левое соединение.

Пример текста запроса «Внутреннее соединение»:

ВЫБРАТЬ
Контрагенты . Ссылка ,
КонтактныеЛица . Ссылка КАК КонтактноеЛицо
ИЗ
Справочник . Контрагенты КАК Контрагенты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник . КонтактныеЛица КАК КонтактныеЛица
ПО Контрагенты . ОсновноеКонтактноеЛицо = КонтактныеЛица . Ссылка
И ( Контрагенты . ЮрФизЛицо = ЗНАЧЕНИЕ ( Перечисление . ЮрФизЛицо . ЮрЛицо )

Пример левого соединения

ВЫБРАТЬ
Контрагенты . Ссылка ,
КонтактныеЛица . Ссылка КАК КонтактноеЛицо
ИЗ
Справочник . Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник . КонтактныеЛица КАК КонтактныеЛица
ПО Контрагенты . ОсновноеКонтактноеЛицо = КонтактныеЛица . Ссылка
И ( Контрагенты . ЮрФизЛицо = ЗНАЧЕНИЕ ( Перечисление . ЮрФизЛицо . ЮрЛицо )

Пример «полного соединения»

ВЫБРАТЬ
Контрагенты . Ссылка ,
КонтактныеЛица . Ссылка КАК КонтактноеЛицо
ИЗ
Справочник . Контрагенты КАК Контрагенты
ПОЛНОЕ СОЕДИНЕНИЕ Справочник . КонтактныеЛица КАК КонтактныеЛица
ПО Контрагенты . ОсновноеКонтактноеЛицо = КонтактныеЛица . Ссылка
И ( Контрагенты . ЮрФизЛицо = ЗНАЧЕНИЕ ( Перечисление . ЮрФизЛицо . ЮрЛицо )

На что следует обратить внимание:

  • Как уже было сказано на пустые значения при левом или полном соединении.
  • С осторожностью используйте полные соединения и срезы последних из регистров, это может сильно замедлить выборку.
  • При использовании конструктора обращайте внимание на соединяемые таблицы иногда он может подставить в левую таблицу не ожидаемое вами, если это упустить вначале придется затем исправлять руками или через правое (одна секунда внимания сбережет время в дальнейшем).
  • Если вы выберете 2 таблицы, но не укажите связи, то получится неявное полное соединение (таблицы будут через «запятую»). Пример:

ВЫБРАТЬ
Контрагенты . Ссылка ,
КонтактныеЛица . Ссылка КАК КонтактноеЛицо
ИЗ
Справочник . Контрагенты КАК Контрагенты ,
Справочник . КонтактныеЛица КАК КонтактныеЛица

Реклама — это искусство делать из полуправды целую ложь.

— Эдгар Шоафф

Соединение таблиц в запросе 1с может быть нескольких видов: ВНУТРЕННЕЕ, ЛЕВОЕ ,ПРАВОЕ, ПОЛНОЕ СОЕДИНЕНИЕ за котором указывается ПО.

Виды соединений таблиц

соединение таблиц в запросе 1с

соединение таблиц в запросе 1с

Таким образом, при описании связи таблиц к тексту запроса конструктор добавляет
ключевые слова ВНУТРЕННЕЕ / ЛЕВОЕ / ПРАВОЕ / ПОЛНОЕ СОЕДИНЕНИЕ… ПО.

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

Рассмотрим различные виды связей на примере 2-х регистров:

  1. Регистра сведений Цены;
  2. Регистра накопления Остатки Номенклатуры.

Регистр сведений Цены имеет следующие Измерения и Ресурсы:

соединение таблиц в запросе 1с

Регистр накопления ОстаткиНоменклатуры имеет следующие Измерения и Ресурсы:

соединение таблиц в запросе 1с

Заполним регистры следующим образом:

Регистр накопления ОстакиНоменклатуры содержит данные.

связи в запросе

Регистр сведений Цены выглядит так.

связи в запросе

Безусловное(декартово произведение)

Таблицы и поля в конструкторе запросов настроим как на рисунке ниже. Связи отсутствуют.

соединение таблиц в запросе 1с

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

соединение таблиц в запросе 1с

Внутреннее соединение таблиц в запросе 1с

Таблицы и поля полностью соответствуют предыдущему заданию. Добавиться связи на вкладке связи

связи в 1с

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

внутреннее соединение

Левое соединение таблиц в запросе 1с

Таблицы и поля полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

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

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

ЛЕВОЕ СОЕДИНЕНИЕ в запросе 1с

Правое соединение таблиц в запросе

Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

ПРАВОЕ СОЕДИНЕНИЕ таблиц в запросе 1с

Замечание: При установки галочки в конструкторе запроса соединение остается левым но меняется порядок полей. Также можно вручную заменить слово ЛЕВОЕ на ПРАВОЕ в тексте запроса.

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

ПРАВОЕ Соединение в запросах 1с

Полное соединение таблиц в запросе 1с

Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

Полное соединение таблиц в запросе 1с

Код запроса измениться вместо ПРАВОЕ соединение будет ПОЛНОЕ.

Полное соединение таблиц в запросе 1с

Соединение таблиц в запросе используется при работе с двумя и более таблицами. Имеется 5 видов соединений. Нами рассмотрен пример использования всех возможных видов соединений.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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