Что такое ПОЛНОЕ СОЕДИНЕНИЕ в запросе 1C, как оно работает?

Любое «СОЕДИНЕНИЕ» наборов данных, в том числе и «ПОЛНОЕ», дает команду объединить определенным образом два набора данных между собой по некоторому условию (обычно это условие равенства каких-то ресурсов в этих наборах). В случае полного соединения в результирующем наборе будут не только строки, по которым условие выполнено, но и строки, по которым оно не выполнено. При этом строки, по которым условие не выполнено, присоединившись, будут содержать NULL «чужого набора», а строки, по которым условие выполнено, объединят свои ресурсы, размножаясь по принципу «каждый к каждому». Звучит не очень понятно, но на примере будет видно лучше.

К примеру, у нас есть 2 таблицы: «Т.1» и «Т.2» и мы хотим выполнить полное соединение этих таблиц по условию, что ресурс 2 таблицы 1 равен ресурсу 4 таблицы 2.

Как видно из рисунка, ресурс 2 равен ресурсу 4 в обведенных красным цветом строках.

В результате выполнения полного соединения, видим размножение строк: все строки таблицы 1 соединились с каждой из строк таблицы 2 (размножились), в которых условие выполнилось (строки обведены красным цветом). Плюс добавились все строки из обеих таблиц, по которым условие не выполнилось – по ним поля второй таблицы остаются, соответственно, не заполненными.
Посмотрите на исходные таблицы: строки «2 – b» и «3 – c» таблицы «Т.1» есть в результате запроса (у этих строк не заполнены поля, принадлежащие данным второй таблицы), и строка «второй – 22» таблицы «Т.2» тоже есть в результате запроса (у нее не заполнены поля, принадлежащие данным первой таблицы)



необходимо зарегистрироваться для просмотра ссылки