Каталог решений - СКД. Шаг 3. Используем макеты для оформления отчета

СКД. Шаг 3. Используем макеты для оформления отчета

СКД. Шаг 3. Используем макеты для оформления отчета

В наличии

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

Категория:

Описание

 

Введение. Описание задачи

Всем привет, всех с наступившим Новым 2020 годом! В данной статье я предлагаю вам разобрать такой интересный функционал как использование собственных макетов в системе СКД.  Отмечу, что за свою достаточно продолжительную практику (порядка 15 лет), я, наверное, всего пару-тройку раз встречал в чужих отчетах (не в типовых) использование данной возможности.

Сообщество приветствует чистоту и оптимизацию исполняемого кода обработок или отчетов, но могу точно сказать по своему опыту,  что в сотнях отчетах, прошедших через меня – я не встречал ни одного, который бы хотелось отности к категории "идеальный, по всем правилам", с которого бы хотелось взять пример. 99 % отчетов сделаны «на отвяжись» по принципу — работает, данные показывает, не важно сколько он там строится по времени. Но и многие пользователи даже не могут объяснить, как получается та или иная цифра в отчетах (особенно производственных). Хотя, система компоновки данных, по-моему мнению, — это даже пользовательский функционал в какой-то степени. Какие-либо «улучшения» отчета с использованием всех возможностей СКД – это что-то из ряда вон выходящее.

Ну да ладно. Давайте рассмотрим использование собственного макета в отчете на СКД. Надеюсь, что этот функционал будет полезен вам для использования в ваших разработках. Постараюсь описать как можно подробнее и проще — "на пальцах". Итак, начнем с подготовки самого отчета в СКД.

 

Подготовка отчета в СКД

Воспользуемся типовой конфигурацией Розница 2.2 на платформе предприятия 8.3.15.1700. Подготовим простой отчет для определения количества и суммы продаж по организации/кассе в разрезе дней за выбранный период.

Для этого напишем запрос по регистру накопления "Продажи" (обороты) в макете компоновки данных. Поскольку, в этом регистре нет данных о КассеККМ, с которой была совершена продажа, то мы левым соединением с регистратором получаем кассу продажи из документа. С условием, что документ-регистратор является отчетом розничных продаж. Так же я добавлю несколько вспомогательных полей, которые потребуются в отчете на основе собственного макета.

В общем виде набор данных запрос выглядит вот так:

 

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

СГРУППИРОВАТЬ ПО
	ПродажиОбороты.Магазин,
	ПродажиОбороты.Номенклатура,
	ПродажиОбороты.Период,
	ОтчетОРозничныхПродажах.КассаККМ,
	ПродажиОбороты.Склад,
	ОтчетОРозничныхПродажах.Дата,
	ОтчетОРозничныхПродажах.Номер

УПОРЯДОЧИТЬ ПО
	ДатаОтчета,
	НомерОтчета,
	КассаККМ,
	ПродажиОбороты.Номенклатура.Наименование

 

На закладке "Ресурсы" определим какие из полей являются ресурсами и выберем выражение расчета этого поля по другим колонкам.

Рис.1. Определяем ресурсы отчета.

 

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

Рис.2. Создаем параметр "Период" в отчете на основе дат начала и окончания.

 

Затем, в "Настройках" выбираем доступные поля и ресурсы для отображения отчета.

Рис.3. Создаем саму таблицу отчета с выбранными полями.

 

В пользовательских настройках отчета включаем созданный нами параметр "Период":

Рис.4. Включаем в пользовательские настройки параметр "Период".

 

Все, самое основное выполнено — этого достаточно, чтобы отчет выводил информацию. Отчет выглядит вот так:

Рис.5. Сформированный отчет в СКД в "базовом варианте".

 

Обычно, на этом все и заканчивается. Но, я продолжу и перехожу к работе с собственными макетами в следующем разделе.

 

Реализация собственного макета оформления. Подготовка настроек

Начну с того, что создам копированием новый вариант настройки отчета. Пусть он называется "Основной1". В общем виде эта настройка выглядит вот так:

Рис.6. Настройка отчета для собственного макета.

 

Распишу каждую строку данной настройки:

Период — этот параметр отвечает за день, на который будут создаваться отчеты по кассам. Далее, к этому параметру я "прикручу" дополнительные реквизиты и буду использовать его как "шаблон".

Касса, НомерОтчета, Магазин, ДатаОтчета (СводныйЗаголовок) — в разрезе этой группы параметров (своего рода "фильтр") я буду отбирать данные продаж номенклатуры.

Далее, идут строки (в скобках я присваиваю персональное имя (правой кнопкой — "Установить имя…") каждой строке — ШапкаМ, СтрокаТаблицы, ИтогиТаблицы):

ДетальныеЗаписи (ШапкаМ)

ДетальныеЗаписи (СтрокаОтчета)

ДетальныеЗаписи (ИтогиТаблицы)

ДетальныеЗаписи — это "набор реквизитов", который будет использоваться в этом "блоке".

 

Наборы реквизитов для группировок такие:

Для (СводныйЗаголовок) — Касса, НомерОтчета, Магазин, ДатаОтчета,

для  (ШапкаМ) — реквизиты отсутствуют,

для (СтрокаОтчета) — Номенклатура, КоличествоОборот, СтоимостьОборот,

для (ИтогиТаблицы) — КоличествоОборот, СтоимостьОборот.

 

Везде снимаем галку "Авто".

 

Реализация собственного макета оформления. Рисуем новый макет

Переходим на закладку "Макеты" и начнем создавать требуемый макет. В итоговом виде, он выглядит вот так:

Рис.7. Настройка отчета для собственного макета.

 

Опишу процесс создания этого макета.

Процесс создания печатной формы макета СКД не отличается от процесса создания печатных форм документов. Также есть параметры, шаблоны и текст. В данном примере, я использую параметры в таблице продаж, шаблоны — в шапке отчета.

Все, макет нарисован. Он выглядит так как нам нужно.

Следующим шагом, в окне Макет — Область я создаю записи о ранее созданных группировках, попутно указывая значения их параметров. Это выглядит вот так:

Рис.8. Добавлена группировка "СводныйЗаголовок" и заполнены параметры макета для этой группировки.

 

Рис.9. В группировке "ИтогиТаблицы" используем параметры "КоличествоОборот" и "СтоимостьОборот".

 

Рис.10. "СтрокаОтчета" — основная группировка отчета — Номенклатура, СтоимостьОборот, КоличествоОборот.

 

СводныйЗаголовок, ИтогиТаблицы, СтрокаОтчета являются "Макетами группировки". ШапкаМ — это "Макет заголовка группировки", Период — это "Параметр".

Далее, к каждому макету привязываем область (см. рис.10). Область можно "накликать", удерживая кнопку "Ctrl".

К параметру "Период" я привязал целый шаблон.

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

 

Тестирование задачи

Теперь, предлагаю протестировать задачу. В нашем СКД отчете "вшито" две настройки "Основная" и "Основная1" с использованием собственных макетов.

Проверим работоспособной каждой из них:

Запускаем предприятие, выбираем период и формируем отчет в настройке "Основная1" (с макетом), такая картина:

 

Рис.11. Отчет СКД с использованием макета.

 

В разрезе периода 01.08.2019 — 04.08.2019 (с общей выручкой), в разрезе касс (по выручке) и что наторговали и за сколько в разрезе каждой кассы.

Перевыбираем вариант настройки "Основная" и получаем уже эти же данные, но в другой компоновке, но без использования макета. Получилось вот так:

 

Рис.12. Отчет СКД без использования макетов. Период использует шаблон.

 

Данные совпали, все работает. Переходим к разделу "Выводы".

 

 

Выводы

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

Еще раз хочу отметить, что функционал использования макетов я очень редко встречал в отчетах СКД других программистов. Обычно — это "основная" компоновка, а как она собирается — по каким данным — этого уже никто не помнит. Как смешно не звучит, но это реалии.

 

Рис.13. Выбор варианта настройки отчета.

 

Какой вывод можно сделать сразу (я осторожно напишу)  — возможный частичный отказ от внешних печатных форм документов. Функционал макетов СКД позволяет создать печатную форму или группу печатных форм для документов конфигурации. Как вариант — это возможно запустить "поток" печатных форм документа или даже нескольких документов разного вида при условии корректного составления запроса или "правильной внешней" таблицы для передачи в СКД.

Отмечу, что макеты "накликиваются" без написания кода. Отсюда делаю еще один вывод — написанный запрос (переданная таблица) в СКД — это уже 90% решения вашей типовой задачи — будь то отчет или "поток" печатных форм.

За исключением запроса (язык запросов) — в примере нет программирования.

Еще один плюс — это возможно "засунуть" в параметр шаблон-конструкцию, как сделано на примере параметра "период", где я использую шаблон <Дата: [ПЕРИОД] (выручка : [Выручка], руб.)> из макета.

 

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

Было бы приятно, чтобы вы поддержали данную статью, в свою очередь постараюсь написать еще что-нибудь полезное и интересное для вас. Пусть эта статья будет для вас своего рода "шпаргалкой" для запоминания этого алгоритма, как и для меня в частности.

Спасибо, что дочитали статью до конца. Всем привет!

 

Предыдущие материалы

Так же, прошу посмотреть мои предыдущие статьи по использованию системы компоновки данных:

Лайфхак работы с СКД. Собираем отчет

СКД. Лайфхак №2. Собираем отчет еще удобнее

Обсудим планы обмена. Способы регистрации объектов к обмену

1С + IIS + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let’s encrypt

Методика независимой системы "Подписки на события"

 

has been added to your cart:
Оформление заказа