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

Содержание:

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

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

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

 

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


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



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

 

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

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

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

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


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


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


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

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

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


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



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


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

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

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


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


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


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


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



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

 

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


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


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


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


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


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


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


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



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

 

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



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

 

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


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



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

 

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


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

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

Наши проекты

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

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

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

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

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» в новую систему «1С:ERP 2.4». ...

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

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

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление заказов покупателей
Логистика адресного склада
Управление...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

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

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную систему управления финансовой и закупочной деятельностью (АС ФЗД) ...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

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

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

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

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

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конфигурацию «Koderline: Управление проектами строительства скважин»...

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

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

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

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

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

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

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

Реализовали разработку уникального модуля «Интернет-магазины» на базе программного продукта «1С:Управление холдингом» согласно технического ...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

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

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

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

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

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

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

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

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

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

- Работа с файлами;
- Делопроизводство;
- Процессы движения документов;
- Учет и контроль исполнения поручений;
- Учет рабо...

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

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

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение документов
• Учет рабочего времени
Закупки (снабжение) и...

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

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

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

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