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

13.01.20

Разработка - Работа с интерфейсом

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

 

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

Всем привет, всех с наступившим Новым 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

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

 

макет СКД формирование отчета внешние функции компоновка данных

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62998    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18870    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10241    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    16919    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7453    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14836    921    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11926    162    acces969    31    

124
Отзывы
21. aximo 2100 24.04.22 15:06 Сейчас в теме
кому интересны подобные разработки и описание систем БСП - посетите телеграмм канал моего коллеги
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cерый 26 14.01.20 09:10 Сейчас в теме
Отличная статья! Хотелось бы увидеть Ваши приемы работы с макетами, содержащими объединения нескольких колонок, как правило, добавляются только ограничения на порядок расположения столбцов.
olexi2012; VVi3ard; Жернов Виктор; sogesti; aximo; +5 Ответить
2. Jimbo 10 14.01.20 11:13 Сейчас в теме
Хорошая статья, но ложка дёгтя в бочку мёда :

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

когда уже будут бить розгами по рукам за такое
ivan1703; +1 Ответить
3. vic777tor 14.01.20 12:11 Сейчас в теме
(2)В запросе схемы СКД почти никогда не используют, секцию "УПОРЯДОЧИТЬ" - для этого существует закладка "Сортировка" в настройках.
Единственное, на мой взгляд, исключение - это если требуется чтобы при любых пользовательских настройках сохранялось заданное в тексте запроса упорядочивание по этому полю. Но в таком случае, для этого поля нужно снять возможность использования в сортировке.
Но и в этом случае флаг "Автоупорядочивание" в конструкторе запроса никто не отменял :)
4. TMV 14 15.01.20 09:59 Сейчас в теме
Какой вывод можно сделать сразу (я осторожно напишу) - возможный частичный отказ от внешних печатных форм документов.
А вы пробовали разбивать по страницам такой вывод печ.форм?
Ну и не всегда макет в СКД удается нарисовать в нужном виде из-за странного поведения самой СКД.
6. aximo 2100 15.01.20 10:31 Сейчас в теме
(4) разрыв страницы можно сделать, через параметр типа строка, и уже при обработке в ПриКомпоновке... заменять его на выражение ВывестиГоризонтальныйРазделительСтраниц() - как-то так.
7. TMV 14 15.01.20 16:49 Сейчас в теме
(6) конечно, похожти образом и делаем, но речь-то шла только о макете.
5. TMV 14 15.01.20 10:01 Сейчас в теме
Как вариант - это возможно запустить "поток" печатных форм документа или даже нескольких документов разного вида при условии корректного составления запроса или "правильной внешней" таблицы для передачи в СКД.
В ЗУП3 печать кадровых приказов реализована именно таким образом (через отчеты), но макет там нарисован не через СКД - интересно почему.
12. NoRazum 29 20.01.20 12:31 Сейчас в теме
(5) ЗУП3 это отдельная вселенная. Не надо её мешать с остальным миром 1С.
Алексей_mir2mb; +1 Ответить
8. ElenaNafty 15.01.20 17:11 Сейчас в теме
Добрый день! Спасибо за статью.
Не совсем поняла один момент: как СКД понимает, что в области "ИтогиТаблицы" выводятся именно итоговая сумма по "КоличествоОборот" и "СуммаОборот"?
Сумма собирается засчет того, что в детальных записях нет поля "Номенклатура"?
9. aximo 2100 15.01.20 17:42 Сейчас в теме
(8) почему я не написал Сумма(КоличествоОборот) и Сумма(СуммаОборот) в параметрах макета? видите самую первую картинку - там закладка "ресурсы" - там я указал как они рассчитываются (по всем полям)
10. ElenaNafty 15.01.20 21:13 Сейчас в теме
(9) Нет, вопрос был вот в чем. В параметрах макета и в "ИтогиТаблицы" и в "Строка" указаны параметры "КоличествоОборот" и "СуммаОборот". То есть одинаково. Но в одном случае выводится детальная запись, в другом - сумма.
Я уже в общем-то сама поняла почему. Потому что в первом случае ( в "ИтогиТаблицы") у нас в детальных записях отсутствует "Номенклатура". Соответственно, система суммирует данные ресурсов.
11. aximo 2100 16.01.20 04:02 Сейчас в теме
(10) да, вы сами объяснили
20. serg1983 21 13.04.22 09:11 Сейчас в теме
(11) вот что то итоги не получаются
13. Suslik_Johns 21.01.20 10:52 Сейчас в теме
Спасибо большое за труд! Красивый труд)! это именно то, что я искала!
Осталось разобраться со всем этим!
Алексей_mir2mb; aximo; +2 Ответить
14. gesk 03.08.20 16:22 Сейчас в теме
"Везде снимаем галку "Авто"." - автор, где это везде и что за галка?
Бьюсь уже полдня с этими макетами, "макет группировки", "макет заголовка группировки", шаманство. Ничегошеньки не выводится, ни одной буквочки.
Сделайте, пожалуйста, скриншоты диалоговых окон группировок. Тип группировки "Иерархия", "Только иерархия", "Без иерархии" - что указывать? А в детальных записях что указывать?
В макетах группировок типы макетов какие? Заголовок? Заголовок иерархии? Их там ещё 4 типа.
IVKuzmin; 1274gmar; nlvhome; ivv1970; Crazy_Max; +5 Ответить
15. Жернов Виктор 7 22.04.21 13:59 Сейчас в теме
Спасибо Изложено о непростом механизме просто и понятно.
16. iD1n 13 23.06.21 20:15 Сейчас в теме
Спасибо автору! Раньше думал это темный лес, благодаря этой статье начало светлеть в лесу для меня)
17. Crazy_Max 83 14.09.21 10:13 Сейчас в теме
Постарались изложить максимально подробно, но... но не вышло. Совершенно непонятными остались кучи мелких вопросов.
Да и СКД, похоже, крепко глючит с этими макетами. Попытался для своего отчета накидать внешний вид, согласно данной статье, и получился почти нужный отчет, но СКД выводит какие-то лишние строки, или дублирует шапку таблицы, или еще что-нибудь выкидывает, и как понять поведение системы, остается загадкой.
18. SWG 19.10.21 08:07 Сейчас в теме
В Запросе ЛЕВОЕ СОЕДИНЕНИЕ не проверяется на ЕСТЬNULL
Сертификат "Спец по платформе" - НЕ СДАН!!
Двойка, иди домой
22. Altez50 1 13.09.22 17:04 Сейчас в теме
(18) В каком кейсе бахнет?
19. andrey80nik 6 11.11.21 18:08 Сейчас в теме
а как НЕ отображать "Шапку таблицы" если нет ни одной строки таблицы?
KoC_one; shusharu; +2 Ответить
21. aximo 2100 24.04.22 15:06 Сейчас в теме
кому интересны подобные разработки и описание систем БСП - посетите телеграмм канал моего коллеги
23. psa247 21 16.03.23 19:00 Сейчас в теме
Автор перескочил тему отрисовки своего макета, хотя это была основная цель этой статьи
juliacopper; eenik; LomayaZakat; +3 Ответить
24. juliacopper 16 27.02.24 16:43 Сейчас в теме
статья так себе, если бы автор реализовал такой же макет как Основной!
Оставьте свое сообщение