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

Содержание:

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

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

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

 

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


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



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

 

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

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

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

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


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


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


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

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

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


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



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


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

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

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


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


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


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


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



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

 

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


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


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


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


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


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


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


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



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

 

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



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

 

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


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



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

 

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


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

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

Наши проекты

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

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

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

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

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

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

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

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

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

ООО «ПраксисКом»
ООО «ПраксисКом»

Отрасль:
Аутсорсинг бухгалтерских услуг

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

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

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

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

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

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

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

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

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

Производственные операции
Автоматизация бизнес-процессов...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

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

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

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

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

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

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

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

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

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

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