рубрики: СКД | Дата: 24 февраля, 2017
В системе компоновки данных можно использовать несколько наборов данных. И вполне логично, что эти наборы данных должны как то связываться между собой. По аналогии с языком запросов 1С наборы данных могут либо соединяться либо объединяться. В этой статье поговорим про соединение наборов данных в СКД.
На первый взгляд бывает непонятно зачем нужно делать несколько наборов данных и потом соединять их, если можно просто сделать соединение таблиц внутри одного набора данных. Для этого есть как минимум одна причина — в случае использования внешнего набора данных. Как известно, когда мы пишем запрос для набора данных СКД, мы не можем передать в него например таблицу значений в качестве временной таблицы. Хотя для обычного запроса это делается достаточно просто. В случае же использования СКД мы вынуждены передавать в нее таблицу значений в качестве внешнего источника данных. Отсюда и вытекает необходимость делать соединение наборов данных. Сразу отмечу, что наборы данных могут соединятся только при помощи ЛЕВОГО СОЕДИНЕНИЯ. Поэтому в отличие от Соединения таблиц в конструкторе запросов здесь вы не увидите флажков, которые отвечают за тип соединения таблиц.
А теперь придумаем ситуацию на примере которой сможем рассмотреть соединение наборов данных в СКД. Пусть, у нас есть справочник Товары, которые мы можем получать от разных поставщиков, и мы хотим сформировать отчет c ценами на товары в разрезе поставщиков, чтобы выбрать поставщика с наиболее выгодной ценой. А цены мы будем брать актуальные на текущий момент, к примеру через веб сервисы с сайтов поставщиков.
Соответственно для товаров у нас будет набор данных, полученный при помощи запроса, а для цен будет набор данных полученный из внешнего источника.
А теперь перейдем на закладку Связи наборов данных и выполним настройку как показано на рисунке.
На закладке Настройки для начала сделаем элементарный вывод детальных записей
Пусть у нас в справочнике Товары содержатся следующие записи
Товар |
---|
Ручка |
Карандаш |
А из внешних данных мы получили следующие цены поставщиков
Товар | Поставщик | Цена |
---|---|---|
Лампа | ООО «Леспром» | 700 |
Лампа | ПАО «Канцтовары» | 560 |
Ручка | ПАО «Канцтовары» | 145 |
Карандаш | ООО «Леспром» | 15 |
Карандаш | ПАО «Канцтовары» | 31 |
Запускаем отчет на выполнение и видим следующую картину
Товар | Поставщик | Цена |
---|---|---|
Ручка | ПАО «Канцтовары» | 145 |
Карандаш | ООО «Леспром» | 15 |
Карандаш | ПАО «Канцтовары» | 31 |
То есть видим, что наборы данных были связаны между собой по всем правилам ЛЕВОГО СОЕДИНЕНИЯ
На закладке Связи наборов данных есть возможность указать некоторые дополнительные параметры в соответствующих полях. Но используются они достаточно редко. Подробнее можно почитать в технической документации и на дисках ИТС.
Давно искала подобное, спасибо очень интересно!