Соединяем таблицы вместе и отбираем записи

a01_05Язык запросов является существенным отличием версии 7.7 от 8-ой программного продукта компании 1С. Именно язык запросов – важная составляющая изучения параметров программирования в 1С. Благодаря языку запросов программа версии 8 стала более функциональной, теперь гораздо проще получать данные в автоматизированном решении.

 

Алгоритм соединения данных таблиц

Как происходит соединение данных из двух таблиц нагляднее показать на конкретном примере. Здесь начинают действовать такие понятия как: ЛЕВОЕ СОЕДИНЕНИЕ, ПРАВОЕ СОЕДИНЕНИЕ, ПОЛНОЕ СОЕДИНЕНИЕ и ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Действительно, соединения данных в программировании бывают 4-х типов.

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

Таблица 1. «Номенклатура» (левая таблица).

Товар Материал
Диван Кож/зам
Стол Пластик
Стол Дерево
Кресло Кожа
Табурет Пластик/металл
Табурет Дерево/металл

Таблица 2. «Остатки номенклатуры» (правая таблица).

Товар Материал Кол-во
Диван Кож/зам 1
Стол Дерево 15
Табурет Дерево/металл 46

 

Варианты стандартных соединений в языке запросов для 1С
Левое соединение

Нам нужно получить единую таблицу, содержащую данные таблицы «Номенклатура» и таблицы «Остатки номенклатуры», которые удовлетворяют требованию связки: Поле «Товар», Условие «Равно». Получаем следующий результат:

Товар Материал/Номенклатура Материал/Остатки Кол-во
Диван Кож/зам Кож/зам 1
Стол Пластик Дерево 15
Стол Дерево Дерево 15
Кресло Кожа NULL NULL
Табурет Пластик/металл Дерево/металл 46
Табурет Дерево/металл Дерево/металл 46

01

Значением NULL заполняются ячейки, для которых нет показателей при сопоставлении данных двух таблиц. Исходя из языка запросов, NULL работает по функции ЕСТЬ NULL.

02

После обработки функции ЕСТЬ NULL, результатом становится следующая таблица:

Товар Материал Кол-во
Диван Кож/зам 1
Стол Пластик 0
Стол Дерево 15
Кресло Кожа 0
Табурет Пластик/металл 0
Табурет Дерево/металл 46

ЛЕВОЕ СОЕДИНЕНИЕ и ПРАВОЕ СОЕДИНЕНИЕ работают аналогично с той лишь разницей, что первая запись будет браться из таблицы, исходя из наименования соединения. По своей сути это цикл в цикле. Сначала берётся первая запись из левой/правой таблицы (для левого/правого соединений соответственно) и происходит поиск на предмет наличия связи для этой записи из данных другой таблицы. И так далее…

ВНУТРЕННЕЕ и ПОЛНОЕ варианты СОЕДИНЕНИЙ

Язык запросов в 1С 8-ой версии позволяет получить только результативные записи, для этого используется функционал внутреннего соединения, в результате чего имеем следующие данные:

Товар Материал Кол-во
Диван Кож/зам 1
Стол Дерево 15
Табурет Дерево/металл 46

03

А полное соединение позволит получить все записи, причём, те записи, которые будут удовлетворять условиям взаимосвязи, будут специально связаны, остальные же также будут в выдаче результата запроса, но со значениями NULL. Таким образом, можно сказать, что ПОЛНОЕ СОЕДИНЕНИЕ – это функционал левого и правого соединений, сведённый воедино.

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