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

Содержание:

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

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

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

 

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


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



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

 

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

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

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

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


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


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


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

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

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


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



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


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

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

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


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


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


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


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



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

 

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


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


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


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


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


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


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


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



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

 

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



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

 

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


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



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

 

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


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

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

Наши проекты

ОАО «Интер РАО – Электрогенерация»
ОАО «Интер РАО – Электрогенерация»

Отрасль:
Электрогенерация

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

Для работы 2500 пользователей в 9 часовых поясах организована территориально-...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

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

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

Объемно-календарное планирование производства Автоматизация бизнес-проце...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

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

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

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

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

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

СТС-Медиа
СТС-Медиа

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

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

- Бухгалтерский учет;
- Налоговый учет;
- МСФО (GAAP/управленческий учет);
- ...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

Отрасль:
Образование

Внедренное типовое решение:
1С:Колледж ПРОФ

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

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

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

- Регламентированный учет;
- Кадровый учет;...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

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

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

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

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

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

Внедренное типовое решение:
1С:Зарплата и управление персоналом

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

ООО "РУКАРД-АУРА"
ООО "РУКАРД-АУРА"

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

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

- Налоговый учет;...

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

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

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

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

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

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

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

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