20.10.2022 Дмитрий Гречушкин 15424
Программное формирование отчета в СКД. Исполь...

Содержание:

1.       Наборы данных СКД

2.       Связи наборов данных

3.       Набор данных Объединение   

 

1.      Наборы данных СКД


В системе компоновки данных (далее по тексту СКД) есть возможность использовать в качестве набора данных не только запрос, но и такие источники как объект и объединение (рисунок 1).



Рисунок 1. Наборы данных системы компоновки данных (СКД)

 

Определим какие наборы данных СКД и для чего необходимы:

·         Набор данных запрос - содержит запрос к базе данных на языке запросов с использованием дополнительных синтаксических элементов (расширений). Вариант, который используется в 95%;

·         Набор данных объект - содержит информацию о внешнем наборе данных, например: таблице значений, выборке из результата запроса, наборе записей регистров;

·         Набор данных объединение - объединяет информацию из нескольких наборов данных.


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


Останавливаться на наборе данных запрос и объект не будем. Рассмотрим варианты, когда в одном отчете схемы компоновки данных используется несколько наборов данных и как эти наборы между собой соединяются объединяются. Варианты использования нескольких наборов данных будем рассматривать в контексте следующей задачи: необходимо сформировать отчет СКД по продажам номенклатуры на каждую дату из периода с указанием цены на дату (задача из разряда срез последних на дату). Безусловно задачу можно решить запросом с соединением по максимальной дате из меньших или равных дат, но для изучения примера использования нескольких наборов данных используем СКД.


Решение задачи:

Первым шагом создадим набор данных, получающий данные продаж:

ВЫБРАТЬ
    ПродажиОбороты.Период КАК Дата,
    ПродажиОбороты.Контрагент КАК Контрагент,
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.СтоимостьОборот КАК Стоимость
{ВЫБРАТЬ
    Дата,
    Контрагент.*,
    Номенклатура.*,
    Количество,
    Стоимость}
ИЗ
    РегистрНакопления.Продажи.Обороты({(&НачалоПериода)},
{(&КонецПериода)}, День, ) КАК ПродажиОбороты
{ГДЕ
    ПродажиОбороты.Период,
    ПродажиОбороты.Контрагент.*,
    ПродажиОбороты.Номенклатура.*,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот}


Формирование отчета СКД будет иметь следующий вид (рисунок 2.)



Рисунок 2. Продажи товара за период


Зададим имя сформированному набору данных - ДанныеПродаж

Вторым шагом дополним наш отчет ценами номенклатуры на каждую дату продажи.

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


Во втором наборе данных производим выборку цены номенклатуры из таблицы СрезПоследних регистра сведений ЦеныНоменклатуры с отбором по Дате, Номенклатуре, ТипЦены.


По условия задачи нам необходимо «склеить» эти два набора данных.   


2.      Связи наборов данных


Для соединения двух наборов данных перейдем на закладку «Связи наборов данных» СКД.



Рисунок 3. Закладка «Связи наборов данных» системы компоновки данных

 

Заполним связи наборов данных. В первой строке поле Источник связи, то есть в качестве родительского набора данных, укажем ДанныеПродаж, в поле Приемник связи, то есть в качестве зависимого набора данных, укажем ЦеныНоменклатурыНаДату. 


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


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


Список параметров - алгоритм получения данных из подчиненного набора данных будет оптимизирован. Данные будут получены одним запросом.


Условие связи – поле, в котором можно задать произвольное выражение. Связь будет выполняться только в том случае, если значение выражения будет «Истина».


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


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


Все связи, созданные в схеме компоновки данных, считаются Левыми внешними соединениями, то есть в отчет будут включены записи из обоих наборов данных, удовлетворяющих условию связи, Дата = Дата и Номенклатура = Номенклатура.



Рисунок 4. Схема соединения наборов данных

 

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



Рисунок 5. Итоговый отчет   

 

3.      Набор данных Объединение


Набор данных Объединение применяется в том случае если в отчет необходимо вывести все записи обоих наборов данных. Таким образом если рассматривать набор данных объединение в итоговую выборку попадут все записи первого и второго (n-го) набора записей, объединенные по группам в отчете (аналог в запросе 1С - ПОЛНОЕ СОЕДИНЕНИЕ). Примером объединения нескольких наборов данных может служить задача по формированию отчета СКД о поступление и продаже номенклатуры за период.



Рисунок 6. Отчет о поступлении и продаже номенклатуры за период

 

Заключение использование нескольких наборов данных в СКД дает разработчику мощный инструмент написание сложных отчетов.


Специалист компании «Кодерлайн»

Дмитрий Гречушкин

Наши проекты

Автоматизация складских операций на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетнос...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление корпоративными финансами

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

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

Внедренное типовое решение:
1С:Комплексная автоматизация

- Разработка подсистемы оперативного учета транзакций...

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

Компания IBS
Компания IBS

Отрасль:
Системный интегратор

Внедренное типовое решение:
1С:Управление производственным предприятием

- Интеграция систем – АСУП и «1С:Управление производственным предприятием»...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение