Макеты созданные в окне конструктора схемы компоновки в разделе макеты позволяют

Обновлено: 14.05.2024

Всем привет, всех с наступившим Новым 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% решения вашей типовой задачи - будь то отчет или "поток" печатных форм.

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

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

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

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

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

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

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

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

Чтобы не форматировать каждый новый отчет по новому, можно сделать своего рода шаблоны оформления. Для этого используется общий объект конфигурации Макеты. Создадим новый макет с типом Макет оформления компоновки данных:

Вопрос 04.59 экзамена 1С:Профессионал по платформе. Для определения схемы источника данных в системе компоновки данных используется:

  1. Конструктор запроса
  2. Конструктор запроса с обработкой результата
  3. Конструктор схемы компоновки данных
  4. Конструктор настроек компоновки данных
  1. Один
  2. Количество источников ограничено
  3. Количество источников не ограниченно

Вопрос 04.61 экзамена 1С:Профессионал по платформе. Данные для источников в системе компоновки данных могут браться из:

  1. памяти компьютера
  2. внешних источников
  3. базы данных
  4. Верны ответы 1 и 2
  5. Верны все ответы

Вопрос 04.62 экзамена 1С:Профессионал по платформе. Запрос для системы компоновки данных необходимо определять:

  1. полностью заранее, т.е. статический
  2. только обязательные поля, т.е. динамический
  3. только таблицы, т.е. определяемый

Вопрос 04.63 экзамена 1С:Профессионал по платформе. Конструктор настроек компоновки данных позволяет:

  1. определить новые наборы данных
  2. определить новые настройки для отчета
  3. изменить текущие настройки

Правильный ответ второй, им определяются только новые настройки. При сохранении их прежние настройки затираются.

Вопрос 04.64 экзамена 1С:Профессионал по платформе. Конструктор настроек компоновки данных позволяет настроить вывод информации в виде:

  1. Диаграммы
  2. Списка
  3. Таблицы
  4. Верны все варианты
  1. Только в конфигураторе
  2. Только в режиме 1С:Предприятие
  3. Доступен и в конфигураторе и 1С:Предприятии

Вопрос 04.66 экзамена 1С:Профессионал по платформе. Конструктор макета оформления компоновки данных используется для:

  1. создания и настройки фиксированных макетов в системе компоновки данных
  2. для создания и изменения шаблонов вывода информации
  3. определения настройки выводимой информации

Правильный ответ второй - см. выше создание общего макета. Макет определяет шаблон ("стиль" в терминах MS Office) форматирования отчетов и прочих выходных данных.

Вопрос 04.67 экзамена 1С:Профессионал по платформе. Конструктор макета оформления компоновки данных открывается:

  1. из конструктора макетов при указании типа макета "Макет оформления компоновки данных"
  2. из конструктора настроек компоновки данных
  3. из конструктора схемы компоновки данных
  4. из конструктора запросов

6 комментариев:

Добрый день. В 4-66 неправильный ответ . Верный ответ 2. - для создания и изменения шаблонов вывода информации. ( проверила в официальном платном тесте 1с )

ps : огромное спасибо за сайт и ваш труд!

Не могу понять суть вопроса.

04.62 Запрос для системы компоновки данных необходимо определять:
1. полностью заранее, т.е. статический
2. только обязательные поля, т.е. динамический
3. только таблицы, т.е. определяемый

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

Что такое "обязательные поля"? Что такое "динамический запрос"?

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

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

Варианты:
1) Полностью заранее, статический запрос - значит все используемые таблицы объектов и их поля в нем заранее описаны, и не изменяются (пользователем).
2) только обязательные поля - значит программист должен указать все используемые таблицы и те их поля, которые будет использовать (выводить пользователю). Это "Динамический" в том смысле, что состав полей может меняться динамически в зависимости от внесенных пользователем настроек.
3) описать в запросе только таблицы, не указывая полей. Так СКД не работает, ей нужны поля.
3)

Макеты предназначены для хранения или отображения самых разнообразных данных, используемых как прикладным решением в целом, так и отдельными объектами конфигурации. Создание и редактирование макетов производится соответственно с помощью конструктора макетов. Конструктор макетов вызывается при создании нового макета объекта конфигурации:

  1. для создания макетов объектов конфигурации
  2. для создания общих макетов
  3. при написании текстов модулей
  4. верны утверждения 1, 2
  5. все утверждения верны

Вопрос 04.02 экзамена 1С:Профессионал по платформе. Для открытия окна конструктора макета необходимо.

  1. выполнить пункт "Действия — Добавить", если выбрана ветвь подчиненного объекта "Макеты"
  2. выполнить пункт "Действия — Добавить", если выбрана ветвь "Общие макеты
  3. установить курсор в текст модуля и выбрать пункт "Текст – Конструктор макета"
  4. верно утверждение 1 и 2

Вопрос 04.03 экзамена 1С:Профессионал по платформе. Макет какого типа может быть создан конструктором макетов?

  1. Active document
  2. Табличный документ
  3. XML документ
  4. Таблицу значений
  5. Все ответы правильные
  6. Верны 1, 2 утверждения

Вопрос 04.04 экзамена 1С:Профессионал по платформе. Какие данные может содержать макет, созданный конструктором макетов?

  1. Текстовый документ
  2. Географическую схему
  3. Дерево значений
  4. Все ответы правильные
  5. Верны 1, 2 утверждения

Вопрос 04.05 экзамена 1С:Профессионал по платформе. При работе с конструктором макета необходимо выполнять загрузку из файла при работе с типами макета:

  1. Табличный документ, Текстовый документ, HTML-документ
  2. Текстовый документ, Двоичные данные, Active document, Географическая схема
  3. Двоичные данные, Active document, Географическая схема
  4. HTML-документ, Двоичные данные, Active document, Географическая схема

Правильный ответ третий. Поле загрузки файла доступно из конструктора макетов при выборе указанных типов данных:

Наиболее сложным в применении макетов является заполнение колонки “Макет” на вкладке “Макеты” в конструкторе СКД.


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

Эксперименты я проводил над отчетом следующего вида.


Макет поля

Этот макет применяется к конкретной ячейке, в отличие от макетов группировки и заголовка группировки, которые применяются к целой строке.
Его можно накладывать на поля группировки и на поля ресурсов



Макет заголовка группировки

Данный вид макета, как уже было сказано выше, применяется ко всей строке заголовка.



Если его назначить для самой верхней группировки, то он применится для всей шапки таблицы отчета. Как видно на рисунке, заголовки остальных группировок, а также заголовки ресурсов при этом скрываются. Поэтому приходится эти заголовки дорисовывать вручную. Иногда это и требуется, например для объединения ячеек в шапке




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



Однако если назначить строке макета высоту 1, то можно скрыть заголовки группировок текущего и следующего уровней. На рисунке ниже скрыты заголовки Должность и Сотрудник


Также заслуживает внимания использование типа макета Подвал, например для вывода подписантов.



Использование типов Общий итог, насколько я понял ни на что не влияют. Мне не удалось создать настройку с этими типами, чтобы она применилась



Макет группировки

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

Если применить этот макет к самой верхней группировке с типом Заголовок, то под каждой группировкой повторяется шапка таблицы. Применять такой макет имеет смысл в тех случаях, например, когда нужно вставить разрывы страницы перед каждой группировкой



Если применить данную схему для группировки нижнего уровня, то получается вот что



Или, если дорисовать столбцы, то получится так


Если возникает задача изменить подвал с итогами, то нужно использовать этот макет с типом Общий итог подвал или Общий итог заголовок. Насколько я понял, эти два типа макета делают одно и то же



Макет ресурсов

Макет используется только для ТАБЛИЦЫ. Он применяется на пересечении группировок, указанных в настройках




Ограничения использования макетов

  1. Во многих случаях при использовании макетов теряется возможность настройки отчета пользователем. Он не сможет изменять порядок ресурсов и группировок, отключать ресурсы и группировки, т.к. при этом отчет принимает непонятный вид. Данный недостаток не распространяется только на макет поля.
  2. Нет возможности оформить с помощью макета ТОЛЬКО заголовок нужного ресурса (или группы ресурсов). Например, если нужно выровнять заголовки ресурсов по центру. Придется оформлять всю шапку таблицы полностью и получить ограничение из п.1
  3. Нет возможности оформить ТОЛЬКО заголовок итогов. Например, несколько раз требовалось заменить слово “Итого” на слово “Всего”. В этом случае придется отрисовывать всю строку итогов и получить ограничение из п.1 или придумывать что-нибудь другое.

Файлы

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



В

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

Система компоновки данных

Устройство системы компоновки данных

  • создание отчета без программирования;
  • использование автоматически генерируемых форм просмотра и настройки отчета;
  • разбиение исполнения отчета на этапы;
  • исполнение отдельных этапов построения отчета на различных компьютерах;
  • независимое использование отдельных частей системы компоновки данных;
  • программное управление процессом выполнения отчета.

Основные элементы системы компоновки данных представлены на следующей схеме:

Система компоновки данных

Схема компоновки данных

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

  • текст запроса с инструкциями системы компоновки данных;
  • описание нескольких наборов данных;
  • подробное описание доступных полей;
  • описание связей между несколькими наборами данных;
  • описание параметров получения данных;
  • описание макетов полей и группировок;
  • и др.

Настройки компоновки данных

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

  • отбор;
  • упорядочивание;
  • условное оформление;
  • структуру отчета (составные части будущего отчета);
  • параметры получения данных;
  • параметры вывода данных;
  • и др.

Макет компоновки данных

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

Элемент результата компоновки данных

Результат компоновки данных представляется набором элементов результата компоновки данных. Как самостоятельная логическая сущность результат компоновки данных не существует, существуют только его элементы. Элементы результата компоновки данных можно вывести в табличный документ для представления их пользователю, или в другие виды документов. Также имеется возможность программного вывода элементов результата компоновки в объекты вида Дерево значений или Таблица значений.

Работа с системой компоновки данных в конфигурации

Система компоновки данных интегрирована в объект конфигурации Отчет. Это позволяет создавать отчеты без программирования.

У объекта конфигурации Отчет реализовано свойство «Основная схема компоновки данных»:

Система компоновки данных

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

Система компоновки данных

После нажатия кнопки «Готово» будет открыт конструктор схемы компоновки данных.

Конструктор схемы компоновки данных позволяет описать исходные данные, которые будет использовать отчет: наборы данных, связи между наборами данных, вычисляемые поля, ресурсы и т. д.

Система компоновки данных

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

Система компоновки данных

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

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

Система компоновки данных

При необходимости пользователь может открыть форму настроек отчета и отредактировать их, изменить структуру отчета и т. д. аналогично тому, как это делает разработчик в режиме конфигуратора.

Консоль системы компоновки данных

Внешний отчет «Консоль системы компоновки данных» предназначен для специалистов, желающих подробнее узнать об устройстве системы компоновки данных. Консоль позволяет выполнять отдельные шаги компоновки данных с просмотром промежуточных результатов в виде XML. Подробнее…

Читайте также: