Особенности использования набора данных «Объединение» в 1С

  • Продолжаем цикл статей по СКД. В этой статье вы узнаете об особенностях использования набора данных «Объединение», рассмотрим в чем заключается разница набора данных «Запрос» и «Объединение» внутри одного запроса разных наборов данных.

 

 

 

Создание набора данных «Запрос» в СКД

Итак, все начинается с создания запроса в консоли «Системы компоновки данных». Это будет один набор данных «Запрос», в котором объединяются данные «Товарные запасы» и «Остатки» (выбираем все поля) (рис.1)

 

создание запроса в консоли СКД

рис.1

 

и запрос виртуальной таблицы «Продажи – Обороты» (выбираем поле «Сумма – Оборот» и переименовываем в «Сумму – Продажи») (рис.2).

 

запрос виртуальной таблицы «Продажи – Обороты» в СКД

рис.2

 

Среди выбранных полей совпало только поле «Товар».

Далее определяем ресурсы – все числовые поля.

Выполнение настроек в СКД

Выполняем следующие настройки:

— группировка по полю «Товар»;

— выбранные поля: «Товар», «Количество Остаток», «Сумма Продажи»;

— три параметра: «Начало периода», «Конец периода» и «Период»  (рис.3).

 

настройка в СКД 1С

рис.3

 

В данном случае нужно тщательно подойти к параметру «Период».

 

Настройка параметра «Период»

 

Здесь используется виртуальная таблица «Остатки», в которой остатки выводятся на начало секунды. Для того, чтобы получить остатки не на начало секунды «Конец периода», а на начало следующей секунды значения параметра «Конец периода», в запросе, где выбираются данные из таблицы «Товарные запасы – Остатки», на вкладке «Компоновка данных» нужно прописать свой параметр «Дата остатков», включить для него ограничение доступности, а также вписать для него следующее выражение: добавитьКДате(&КонецПериода.«Секунда».1),  что расшифровывается, как добавить к дате параметр «Конец периода» 1 секунда (рис.4).

 

Настройка параметра «Период» в скд 1 этап

рис.4

 

Затем устанавливаем в значении параметра «Конец периода» нужную дату (рис.5).

 

Настройка параметра «Период» в скд 2 этап

рис.5

 

Получаем результат: поскольку параметр «Конец периода» вычислен, компоновщик макета при компоновке результата устанавливает значение параметра «Дата остатков» – это следующая секунда. Если не будет установлено значение параметра «Конец периода», в этом случае компоновщик макета генерирует в параметре «Дата остатков» пустую дату.

Выполненный запрос «Объединение» работает отлично до тех пор, пока не установить отбор в одном из полей. Поле «Склад» в данном случае присутствует только в таблице «Товарные запасы – Остатки», а в продажах склада нет. Если установить отбор на него и скомпоновать отчет, то продаж по нему не отобразится совсем (рис.6).

 

Настройка параметра «Период» в скд 3 этап

рис.6

 

Дело в том, что если внимательно посмотреть на макет, который генерирует компоновщик макета, то в объединении запросов отбор по полю «Склад» установился, как в параметре виртуальной таблицы «Остатки» (рис.7),

 

Настройка параметра «Период» в скд 4 этап

рис.7

 

так и в секции «Где», там выбираются данные из виртуальной таблицы «Продажи – Обороты» (рис.8).

 

Настройка параметра «Период» в скд 5 этап

рис.8

 

Так работает система компоновки данных (СКД) на сегодняшний день.

 

Как с помощью одного набора данных «Запрос» можно решить задачу объединения

 

Далее можно решить следующую задачу: вывести «Остатки товарных запасов» и «Продажи» одновременно, чтобы еще работал отбор по полю «Склад».

Для этого, результат выполнения первого запроса помещаем во временную таблицу. Можно назвать ее «Все вместе». И следующим запросом пакета выбираем все данные из нее (рис.9).

 

решение задачи объединения в запросе в СКД 1 С

рис.9

 

Вот такое простое преобразование запроса. Теперь можно скомпоновать результат с настройками, которыми установлен отбор по полю «Склад» (рис.10).

 

решение задачи объединения в запросе в СКД 1С 2 этап

рис.10

 

Здесь также установлен отбор в параметрах виртуальной таблицы. А вот в том месте, где выбираются данные из виртуальной таблицы «Продажи – Обороты», отбора в секции «Где» уже нет. И получаем ожидаемый результат (рис.11).

 

решение задачи объединения в запросе в СКД 1С 3 этап

рис.11

 

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

В итоге, с помощью одного набора данных «Запрос» нам удалось решить задачу объединения.

Создание набора данных «Объединение» в СКД

А теперь рассмотрим как же работает набор данных «Объединение».

Для этого создадим набор данных «Объединение» и вложим в него уже готовый набор данных «Запрос», который недавно был разработан. Затем можно скопировать его же и вложить во второй раз.

Так у нас сформировалось два набора данных «Запрос» – это «Набор данных 1» и «Набор данных 2».

В набор данных «Объединение» есть возможность добавить набор данных «Объект», чтобы объединять разнородные виды отбора данных, но в настоящей задаче этого не требуется (рис.12).

 

Создание набора данных «Объединение» в СКД 1 этап

рис.12

 

В запросе «Набор данных 1» оставим только «Товарные запасы», а «Продажи» удалим (рис.13).

 

Создание набора данных «Объединение» в СКД 2 этап

рис.13

 

Из запроса «Набор данных 2» удалим «Товарные остатки» и оставим только «Обороты» (рис.14).

 

Создание набора данных «Объединение» в СКД 3 этап

рис.14

 

Посмотрим на результат (рис.15).

 

Создание набора данных «Объединение» в СКД итог

рис.15

 

Если для группировки по полю «Товар» установить отбор по полю «Склад», то получится  тот же результат, который был в самом начале. Отбор по полю «Склад» сформировался, как в наборе данных, где были выбраны «Остатки», так и в наборе данных, где выбраны «Продажи» (рис.16).

 

«Объединение» в СКД 1С

рис.16

 

Можно рассмотреть макет, который сгенерировал компоновщик макета:

— набор данных: «Запрос»,

— в запросе выбираются «Товарные запасы – Остатки»,

— в параметрах виртуальной таблицы установлен отбор.

 

Следующий набор данных: «Объединение»:

— тот же набор данных: «Запрос»,

— в запросе выбираются «Продажи – Обороты»,

— здесь в секции «Где» нет никакого отбора.

 

Данные выбираются также без отбора. Если внимательно посмотреть на набор данных «Объединение»,  то у него есть свойство «name» и свойство «filter». В этом свойстве устанавливается отбор на весь набор данных «Объединение», отбор по складу (рис.17).

 

свойства набора данных "Объединение"в СКД 1С

рис.17

Особенность набора данных «Объединение»

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

 

Следует отметить, что набор данных «Объединение» не рекомендуется использовать в  случае, если присутствуют различные наборы данных, в одном из которых есть одни поля, во втором – другие поля, при этом, задача заключается в том, чтобы все это объединить, а также предполагается накладывать отбор на одно из тех полей, которого нет в другом наборе данных.

 

Подведем итог: набор данных «Объединение» позволяет объединить в себе, как наборы данных «Запрос», так и наборы данных «Запрос» и «Объект» вместе.

Поделиться:

Telegram
VK
WhatsApp

Оцените статью

5

5

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

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