Макеты СКД

Программирование - Практика программирования

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

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

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

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

Макет поля

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

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

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

Настройки

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

Настройки


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

Настройки

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

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

Настройки

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


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

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

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

Настройки

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

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


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

Настройки

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

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

Настройки


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

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

Файлы

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


В 

Скачать файлы

Наименование Файл Версия Размер
Примеры к статье
.erf 157,16Kb
24.07.17
15
.erf 157,16Kb 15 Скачать

См. также

Комментарии
1. Sergey Andreev (starik-2005) 1161 25.07.17 21:56 Сейчас в теме
+
Но не стоит этим злоупотреблять. Практически все, что показано на картинках, может быть сделано с помощью условного оформления (например, замена "Итого" на "Всего").
demkonst; user728724; zqzq; +3 Ответить
2. Monkey Coder (yurii_host) 1260 25.07.17 22:03 Сейчас в теме
(1) про не стоит злоупотреблять - полностью поддерживаю.
А сможете скинуть пример, как заменить "Итого" на "Всего" с помощью условного оформления?)
TreeDogNight; +1 Ответить
7. Павел Одинцов (Darklight) 27.07.17 10:19 Сейчас в теме
(1) Согласен, данную статью очень неплохо было бы дополнить сравнением с применением механизма условного оформления для решения тех же оформительных задач.Так как он тоже очень гибкий и гораздо более предпочтительный в использовании.
3. Надежда (user_2010) 179 26.07.17 08:35 Сейчас в теме
Тема интересная. Но! Как вставить разрыв страницы? Как реализовать вывод заголовка таблицы на каждом листе?
4. hopter _ (hopter) 34 26.07.17 09:32 Сейчас в теме
(3) а никто не обещал, что с макетами в скд можно совсем без кода обойтись :)
5. Надежда (user_2010) 179 26.07.17 16:26 Сейчас в теме
ну так - как это сделать?
(4)
6. hopter _ (hopter) 34 27.07.17 00:38 Сейчас в теме
8. Павел Одинцов (Darklight) 27.07.17 10:22 Сейчас в теме
(4) Большое упущение автора статьи, что он не упомянул об этом в ней в описании этой фичи - многим придётся шариться по сайту, чтобы найти нужное решение. А кто-то будет думать, что всё и так заработает - одной настройкой макетов.
"1С она такая 1С" :-(
12. Сергей Швенк (Shvenk) 29.07.17 07:44 Сейчас в теме
(3) как вариант: в запросе делаем поле "номер страницы",в структуре отчета добавляем в группировку это поле, затем вся нужная структура отчета. В макете добавляем макет этой группировки, в области вставляем разрыв страницы, и необходимый заголовок...
9. PerlAmutor IC (PerlAmutor) 7 27.07.17 11:24 Сейчас в теме
Предпочитаю использовать собственные (moxel) макеты за пределами макета типа СхемаКомпоновкиДанных и программный обход ДереваЗначений.
С вкладкой "Макеты" СКД "наигрался", реализация очень глючная и ограниченная. Рисуешь подвал внизу листа, переоткрываешь макет, а подвал уже в шапке. Все именованные области вперемешку...
10. Надежда (user_2010) 179 27.07.17 14:46 Сейчас в теме
(9) согласна - пока делаешь одну область - другая может сломаться..
17. Uladzimir - (nvv1970) 11.10.17 14:26 Сейчас в теме
(10) Это не поломка. Не связанные области СКД показывает в макете по порядку, удобным ей образом. Заметьте, что все продолжает замечательно работать.
16. Вадим Мориков (vadim1011985) 44 15.09.17 14:37 Сейчас в теме
Статья действительно хорошая, и очень познавательная, сам недавно к ней прибегал когда необходимо было делать отчет сложной формы , до этого с макетами не работал.

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


(3) Вывод заголовка на каждом листе - у Области макета есть свойство НачалоСтраницы , если выделить область заголовка и указать это свойство то заголовок будет повторяться на каждой странице
18. Надежда (user_2010) 179 11.10.17 14:42 Сейчас в теме
(16)
Вывод заголовка на каждом листе - у Области макета есть свойство НачалоСтраницы , если выделить область заголовка и указать это свойство то заголовок будет повторяться на каждой странице

надо будет это попробовать - ценное замечание! Спасибо!
11. Яков Коган (Yashazz) 2125 28.07.17 19:41 Сейчас в теме
Мне одному кажется, что это пересказ Хрусталёвой?
13. Виктор Иванов (Gang031) 02.09.17 18:06 Сейчас в теме
я извиняюсь, а где устанавливается эта самая "Высота макета"?
14. Виктор Иванов (Gang031) 02.09.17 22:19 Сейчас в теме
точнее "высота строки макета"?
19. Maxim Kolkin (the1) 284 13.10.17 16:01 Сейчас в теме
(14)тут
Прикрепленные файлы:
15. Сергей Беликов (HAMMER_59) 33 15.09.17 14:04 Сейчас в теме
Спасибо за статью!
Я уже было отчаялся разобраться, как указать макет для итогов таблицы (те что снизу).
Посмотрел Ваш пример и только тогда понял что нужно указать макет ресурса заголовок верхней группировки по строкам (у меня 3 группировки по строкам).
Оставьте свое сообщение