1. Главная страница » Компьютеры

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

Автор: | 16.12.2019

В данной статье рассмотрено предложение ИЗ, его место и роль в языке запросов 1С:Предприятия 8.

Предложение ИЗ присутствует почти в каждом запросе 1С:Предприятия 8, так как в большинстве случаев именно в нем указываются таблицы-источники данных для запроса. Кроме того, предложение ИЗ позволяет выполнить соединение нескольких таблиц, а также указать параметры при получении виртуальной таблицы.

Ниже рассмотрены следующие темы:

Место предложения ИЗ в структуре запроса

Структуру запроса 1С:Предприятия 8 можно представить в виде следующей схемы:

Из приведенной схемы можно сделать следующие выводы:

  • В запросе может не быть предложения ИЗ (если поля в списке выборки полностью квалифицированы, т.е. включают имя таблицы).
  • Источников в запросе может быть несколько (в этом случае, они обычно соединяются по определенному условию)
  • В качестве источника может быть обычная таблица-источник, виртуальная таблица с параметрами, а также вложенный запрос
  • Для источника можно назначить псевдоним с помощью ключевого слова КАК ( Внимание: если источником является вложенный запрос, то псевдоним обязателен).

Таблицы-источники

Все таблицы-источники можно поделить на три класса:

  • Таблицы, связанные со ссылочными объектами конфигурации (справочники, планы, документы и журналы документов)
  • Таблицы, связанные с регистрами (сведений, накопления, бухгалтерии, расчета)
  • Таблицы, связанные с остальными объектами конфигурации (константы, последовательности, критерии отбора)
Читайте также:  Dell ноутбук для дизайнера

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

1. Таблицы-источники, связанные со ссылочными объектами конфигурации:

2. Таблицы-источники, связанные с регистрами:

3. Таблицы-источники, связанные с другими объектами конфигурации:

Примеры запросов с предложением ИЗ

Выборка данных из различных таблиц-источников

Выборка элементов справочника:

ВЫБРАТЬ *, Представление ИЗ Справочник.Номенклатура

Выборка документов определенного вида:

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

Выборка проведенных документов, входящих в журнал СкладскиеДокументы:

ВЫБРАТЬ Ссылка, Номер, Дата
ИЗ ЖурналДокументов.СкладскиеДокументы
ГДЕ Проведен = Истина

Выборка активных записей регистра накопления:

ВЫБРАТЬ Номенклатура, ПодразделениеКомпании, СуммаПродажи
ИЗ РегистрНакопления.ПродажиКомпании
ГДЕ Активность = Истина

Выборка данных из табличной части документа:

//обращение к табличной части документа
ВЫБРАТЬ Номенклатура, Количество
ИЗ Документ.АвансовыйОтчет.Товары

При обращении к табличной части документа как источнику данных обычные реквизиты документа доступны через поле табличной части Ссылка, например:

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

Виртуальные таблицы

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

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

//обращение к виртуальной таблице регистра накопления (вызов без параметров)
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты

//выборка оборотов за период
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты(&Нач, &Кон,,)

//выборка оборотов по конкретному товару
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты(. Номенклатура = &ВыбТовар)

//остатки товаров на определенную дату
ВЫБРАТЬ * ИЗ РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&ВыбДата,)

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

Псевдонимы источников

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

ВЫБРАТЬ Продажи.Номенклатура,
Продажи.ПодразделениеКомпании,
Продажи.СуммаПродажи
ИЗ РегистрНакопления.ПродажиКомпании КАК Продажи
ГДЕ Активность = Истина

Вложенный запрос как источник

В системе 1С:Предприятие 8 можно указать в качестве источника другой запрос, т.е. запрос может выбирать данные из вложенного запроса. Для вложенного запроса обязательно указывается псевдоним источника, как показано в следующем примере:

ВЫБРАТЬ
Товары.Номенклатура КАК Товар,
Товары.Номенклатура.Артикул
ИЗ
(
ВЫБРАТЬ Номенклатура ИЗ Документ.ВнутреннийЗаказ.Товары
ОБЪЕДИНИТЬ
ВЫБРАТЬ Номенклатура ИЗ Документ.ЗаказПокупателя.Товары
) КАК Товары

Соединение таблиц

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

Рассмотрим сначала, что произойдет, если в предложении ИЗ будет несколько источников. В этом случае будет сформировано "декартово произведение" двух множеств. Каждой записи одной таблицы будут сопоставлены все записи из другой. Например,

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

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

Такая таблица обычно не используется для практических целей. Как правило, обращение производится к нескольким взаимосвязанным таблицам. Это производится с помощью соединений, которые бывают внутренними, левыми внешними, правыми внешними и полными внешними.

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

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

Результат этого запроса будет следующий:

Замечание. В данном примере того же эффекта можно добиться, если просто обращаться к имени поля через точку, что называется разыменованием ссылочных полей . При этом соединение таблиц производится неявно. Возможность разыменования полей в 1С:Предприятии 8 допускает обращение к свойствам объектов через несколько точек, например, «Номенклатура.Поставщик.Страна». Это позволяет значительно упростить написание запросов.

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

Замечание. При соединениях чаще всего применяется условие на "равно", но в языке запросов есть возможность использовать все операции сравнения и логические операции И, ИЛИ, НЕ.

Левое внешнее соединение

Конструкция ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить еще и записи из первого источника (указанного слева от слова СОЕДИНЕНИЕ), для которых не найдено соответствующих условию записей из второго источника.

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

Обратите внимание, что NULL-значения не являются нулем или пустой строкой. Это специальные маркеры, обозначающие неуказанные (отсутствующие) значения или значения, не имеющие смысла.

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

ВЫБРАТЬ Спр.Наименование КАК Валюта, Рег.Курс
ИЗ Справочник.Валюты КАК Спр
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Рег
ПО Спр.Ссылка = Рег.Валюта

Результат запроса показан в следующей таблице:

Для валюты "AUD" (Австралийский доллар) в таблице среза последних записей регистра сведений "КурсыВалют" не было найдено соответствующей записи, поэтому в поле "Курс" содержится значение NULL.

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

Конструкция ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить еще и записи из второго источника (указанного справа от слова СОЕДИНЕНИЕ), для которых не найдено соответствующих условию записей из первого источника.

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

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

ВЫБРАТЬ Спр.Наименование КАК Валюта, Рег.Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних() КАК Рег
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Спр
ПО Спр.Ссылка = Рег.Валюта

Полное внешнее соединение

Конструкция ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обоих источников, для которых не найдено соответствий.

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

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

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

Каждый тип мы рассмотрим на абстрактном примере. Имеется 2 таблицы, в первой храним описательную информацию о номенклатуре, во второй о ее остатках:

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

Левое соединение

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

Для стула не нашлось сопоставлений из таблицы остатков, поэтому поля заполнились значениями NULL, которые обязательно нужно обработать функцией ЕСТЬNULL, см. Функции языка запросов 1С 8.

Левое соединение работает примерно как цикл в цикле — берется первая запись из левой таблицы и пробегаются все записи из правой на предмет удовлетворения условию связи. Затем берется вторая запись из левой таблицы и т.д. Если вдруг условию связи удовлетворяют несколько записей из правой таблицы, то в результирующую таблицу будет добавлено несколько строк (по количеству удачных связей).Как видим, полученная таблица не информативна, данные не отражают реальную суть, поэтому лучше связать эти таблицы по двум полям: Товар и Цвет, только на этот раз обработаем NULLы:

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

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

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

Используя внутреннее соединение мы говорим системе, что в результате хотим видеть только те записи, которые удовлетворяют условию связи как из правой таблицы, так и из левой. Таким образом, количество результирующих записей будет меньше или равно количеству записей самой "короткой таблицы", участвующей в соединении. Применим внутреннее соединение к полям Товар и Цвет наших таблиц:

Полное соединение

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

Задач на эту тему может быть много, давайте попробуем решить одну из них. Наша организация является дилером 2 мебельных фабрик: "Заря" и "Рассвет". Ассортимент со стоимостью каждой из фабрик хранится в разных таблицах. Необходимо составить единый прайс лист, причем брать в него продукцию по минимальной цене:

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

Это не совсем то, что нам нужно, давайте соединим поле товар в одно и обработаем NULLы:

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

Если цена не определена (NULL), то ее необходимо инициализировать каким либо значением, иначе операция сравнения на больше/меньше вывалится с ошибкой. инициализируем цену нереально большой суммой, чтобы она "проиграла" в операции сравнения, ведь по условию задачи мы подбираем наименьшую цену.

Язык запросов 1С — одно из основных отличий между версиями 7.7 и 8. Одним из важнейших пунктов в изучении 1С-программирования является язык запросов. В 1С 8.3 запросы — самый мощный и эффективный инструмент получения данных. Язык запросов позволяет в удобном виде получать информацию из базы данных.

Сам синтаксис очень сильно напоминает классический T-SQL, за исключением того, что в 1С с помощью языка запросов можно только получать данные, используя конструкцию Выбрать(select). Язык поддерживает и более сложные конструкции, например, вложенные запросы (запрос в запросе). Запросы в 1С 8 можно составлять как на кириллице, так и на латинице.

В статье я постараюсь рассказать про основные ключевые слова в языке запросов 1С:

  • выбрать
  • разрешенные
  • различные
  • выразить
  • первые
  • для изменения
  • значение
  • тип значения (и оператор ССЫЛКА)
  • выбор
  • сгруппировать по
  • имеющие
  • ЕСТЬNULL
  • Есть NULL
  • соединения — правые, левые, внутренние, полные.

А так же небольшие хитрости языка 1С, применяя которые вы сможете оптимально построить текст запроса.

Для отладки запросов в системе 1С 8.2 предусмотрен специальный инструмент — консоль запросов. Увидеть описание и скачать его можно по ссылке — консоль запросов 1C.

Основные конструкции языка запросов

Рассмотрим самые важные и интересные операторы языка запросов 1С.

ВЫБРАТЬ (SELECT)

В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ. В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляции производятся в объектной технике. Предназначение его — только чтение данных.

ВЫБРАТЬ
ТекущийСправочник.Наименование
ИЗ
Справочник.Номенклатура КАК ТекущийСправочник

Запрос вернёт таблицу с наименованиями номенклатуры.

Рядом с конструкцией ВЫБРАТЬ можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ, РАЗРЕШЕННЫЕ, РАЗЛИЧНЫЕ, ПЕРВЫЕ

ДЛЯ ИЗМЕНЕНИЯ — блокирует записи таблицы на время транзакции (не актуально для управляемых блокировок). Подробнее в статье ДЛЯ ИЗМЕНЕНИЯ в запросах 1С.

РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя.

РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк.

ПЕРВЫЕ n — в языке 1С 8.3 запрос отберет только n первых записей.

ВЫБОР (CASE)

Очень часто данная конструкция недооценивается программистами. Пример её использования:

КОГДА ТекущийСправочник.Услуга ТОГДА

КОНЕЦ КАК ВидНоменклатуры

Справочник.Номенклатура КАК ТекущийСправочник

Пример возвратит в поле «ВидНоменклатуры» текстовое значение — «Товар» или «Услуга».

ГДЕ (WHERE)

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

ВЫБРАТЬ
Справочник.Наименование
ИЗ
ТекущийСправочник.Номенклатура КАК ТекущийСправочник
ГДЕ ТекущийСправочник.Услуга = ИСТИНА

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

По сути, мы отбираем строки, у которых выражение после ключевого слова равно «Истина».

В выражениях можно использовать прямые условия:

С помощью оператора «ЗНАЧЕНИЕ()» в условиях использовать обращение к предопределенным элементам и перечислениям в запросе 1С:

ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Товар)

Значения времени могут указываться следующим образом:

ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01):

Чаще всего условия указываются в виде параметров, передаваемых в запрос:

Получите 267 видеоуроков по 1С бесплатно:

ГДЕ НоменклатурнаяГруппа= &НоменклатурнаяГруппа

Условие можно наложить на тип реквизита, если он составного типа:

ГДЕ РегистрНакопления.Регистратор ССЫЛКА Документ.ПоступленияТоваров

Если необходимо ограничивать отбор из списка значений или массива, можно поступить следующим образом:

ГДЕ РегистрНакопления.Регистратор В (&СписокДокументовДляОтбора)

Условие может быть и сложное, состоящее из нескольких условий:

ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01) И НоменклатурнаяГруппа= &НоменклатурнаяГруппа И НЕ Услуга

СГРУППИРОВАТЬ ПО (GROUP BY)

Конструкция языка запросов 1С 8.2, используемая для группировки результата.

ВЫБРАТЬ
ПоступлениеТоваровУслугTовары.Товар,
СУММА(ПоступлениеТоваровУслугTовары.Количество) КАК Количество,
СУММА(ПоступлениеТоваровУслугTовары.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугTовары

СГРУППИРОВАТЬ ПО
ПоступлениеТоваровУслугTовары.Товар

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

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

ИМЕЮЩИЕ (HAVING)

Конструкция, о которой часто забывают, но она очень важна и полезна. Она позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ.

Пример использования ИМЕЮЩИЕ в запросе 1С:

ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Товар,
СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

СГРУППИРОВАТЬ ПО
ПоступлениеТоваровУслугТовары.товар

Так мы отберем количество товаров, которых поступило более 5 штук.

ЗНАЧЕНИЕ()

В запросе 1C ЗНАЧЕНИЕ () можно использовать для указания предопределенных значений, таких как значения перечисления, пустую ссылку или значение предопределенного элемента (справочника, плана счетов, ПВХ и т.д).

ГДЕ Банк = Значение(Справочник.Банки.ПустаяСсылка)

ГДЕ ВидНоменклатуры = Значение(Справочник.ВидыНоменклатуры.Товар)

ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Услуга)

ТИП в запросе

Тип данных можно проверить следующим образом: с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логического оператора ССЫЛКА.

ГДЕ ТИПЗНАЧЕНИЯ(Проект.Ссылка) <> ТИП(Справочник.Проект)

ГДЕ Проект.Ссылка ССЫЛКА Справочник.Проект

ВЫРАЗИТЬ()

Оператор Выразить в запросах 1С служит для преобразования типов данных.

Синтаксис: ВЫРАЗИТЬ( КАК )

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

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

ВЫБРАТЬ
КонтактнаяИнформация.Объект,
ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

СГРУППИРОВАТЬ ПО
ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)),
КонтактнаяИнформация.Объект

ЕСТЬNULL (ISNULL)

Достаточно полезная функция языка запросов 1С, которая проверяет значение в записи, и если оно равно NULL, то позволяет заменить на своё значение. Чаще всего используется при получении виртуальных таблиц остатков и оборотов, чтобы скрыть NULL и поставить понятный 0 (ноль).

Такая функция языка запросов 1С ЕСТЬNULL при отсутствии значения вернет ноль, что позволит избежать ошибки.

СОЕДИНЕНИЕ (JOIN)

Соединения бывают 4 типов: ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ.

ЛЕВОЕ и ПРАВОЕ СОЕДИНЕНИЕ

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

Пример левого соединения в запросе 1С:

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

Вернет всю таблицу Контрагентов и заполнит поле «Банк» лишь в тех местах, где будет соблюдаться условие «Контрагенты.Наименование = Банки.Наименование». Если условие не соблюдается, в поле Банк будет установлено NULL.

ПРАВОЕ СОЕДИНЕНИЕ в языке 1С 8.3 абсолютно аналогично ЛЕВОМУ соединению, за исключением одного отличия: в ПРАВОМ СОЕДИНЕНИИ «главная» таблица — вторая, а не первая.

ПОЛНОЕ СОЕДИНЕНИЕ

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

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

ПОЛНОЕ СОЕДИНЕНИЕ
Справочник.Банки КАК Банки

ПО
Клиенты.Наименование = Банки.Наименование

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

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

ВНУТРЕННЕЕ СОЕДИНЕНИЕ отличается от полного тем, что выводит только те записи, которые смогли соединить по заданному условию.

ВЫБРАТЬ
Клиенты.Ссылка КАК Клиенты,
Банки.Ссылка КАК Банк

ИЗ
Справочник.Контрагенты КАК Клиенты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Справочник.Банки КАК Банки

ПО
Клиенты.Наименование = Банки.Наименование

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

Заключение

Это лишь небольшая часть синтаксиса из языка запросов 1С 8, в дальнейшем я попробую рассмотреть более подробно некоторые моменты, показать способы оптимизации запросов и многое другое!

Рубрикатор статей сайта по запросам

Видеокурс по 1С

Если вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые виде):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *