Тип макета схема компоновки данных. Управление видом отчета на скд

Конструируем отчёт в СКД.

Состав полей, например, такой:

В строках отчёта – группировка "Контрагент", в колонках – группировка "Проект". В данные отчёта попадает ресурс "Взаиморасчеты".

В результате получаем результат такого вида:

Видим, что в шапку отчёта попал заголовок ресурса "Взаиморасчёты". Этот заголовок нам тут не нужен, и поэтому будем от него избавляться.

Вариантов есть несколько.

Вариант 1.

Посредством настройки макета.

Открываем соответствующую вкладку в конструкторе системы компоновки данных. Выбираем пункт "Добавить макет группировки". В форме "Макет группировки" добавляем поле "Проект". Тип макета – "Заголовок".

Задаём область. Например, ячейку R1C1. Для ячейки устанавливаем свойство Заполение: "Параметр". Называем параметр, например, "Проект".

Задаём выражение для параметра: Представление(Проект). Это значит – представление поля "Проект".

В итоге должна получиться такая картина:

В итоге отчёт примет необходимый нам вид, без заголовка ресурса.

Вариант 2.

1. В выбранных полях всего отчета оставляем только ресурс
2. В выбранных полях группировки колонок убираем автополе, добавляем поле этой колонки (например, если группировка колонок по периоду, выбираем тут период)
3. На вкладке "Другие настройки" корня отчета выбираем "расположение ресурсов" - "вертикально".

В этом варианте макет не требуется.

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

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

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

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

Нам необходимо добавить заголовок и подпись, чтобы отчет выглядел так:

Вариант 1 . Можно воспользоваться механизмом разработки макетов непосредственно в СКД .

Сначала нам нужно добавить группировки и задать им имена в дереве группировок. Добавим одну группировку перед основной группировкой отчёта, и установим ей имя «Шапка ». Вторую группировку добавим в конец, и зададим ей имя «Подвал ».

Далее, на вкладке макеты необходимо добавить два макета группировки и задать для них области. Если области достаточно сложные (например, часть ячеек объединены в одну), то их можно сделать в обычном макете и перенести сюда с помощью механизма «копировать, вставить». Здесь же, можно передать параметры.

На вкладке настройки для группировок «Шапка» и «Подвал» нужно отключить «основной» макет оформления, выбрав значение «без оформления». Если этого не сделать, то ячейки наших группировок будут в рамочке.

Так же для наших группировок необходимо отключить выбранные поля.

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

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

Добавим в отчет обычный макет.

Зададим в нём области «Шапка и Подвал».

В модуле формы добавим код для кнопки «Сформировать», в котором сначала выведем область «Шапка», потом результат компоновки данных, затем область «Подвал».

Примечание . Для того чтобы отчет работал в управляемых приложениях необходимо модифицировать процедуру для кнопки «сформировать».

В данной статье мы кратко пробежимся по всем вкладкам конструктора схемы компоновки данных.

Наборы данных

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

Различают несколько видов наборов данных:

  • Запрос;
  • Объект;
  • Объединение .

Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса.

Объект – внешний набор данных, например таблица значений.

Объединение – объединение нескольких наборов данных типов запрос и объект.

В данной статье мы кратко пробежимся по всем вкладкам конструктора схемы компоновки данных. Наборы данных На данной вкладке можно создать неограниченное количество наборов данных. Набор данных – это источник получения данных. Различают несколько видов наборов данных: Запрос; Объект; Объединение. Запрос – это обычный 1с-запрос только язык запросов немного расширен. Для удобства можно использовать конструктор запроса. Объект – внешний набор данных, например таблица значений. Объединение – объединение нескольких наборов данных типов запрос и объект. Связи наборов данных На данной вкладке описываются связи наборов данных. Тут можно указать какие наборы данных связывать и по каким полям и с какими параметрами. Самое главное, что нужно запомнить: в схеме компоновки данных, при связывании наборов всегда используется Левое соединение! Вычисляемые поля На данной вкладке можно создавать дополнительные поля, не описанные на вкладке Наборы данных. В качестве выражений для расчета можно использовать язык выражений компоновки данных, поля из основных наборов данных, а также функции не глобальных общих модулей. Ресурсы Ресурсы – это итоговые данные по группировкам. На вкладке можно назначить ресурсом поля из наборов данных, а также из вычисляемых полей. Также для ресурсов указывается выражение, по которому они рассчитываются, и возможно указание группировки по которой будет рассчитываться выражение для ресурсов. На основании значений ресурсов также рассчитываются общие итоги отчета. Параметры Параметры данных, как правило, используются в наборе данных запрос. Все параметры, описанные в запросе, появляются на вкладке Параметры. На данной вкладке можно указать заголовок, доступные типы, доступные значение и некоторые другие вещи. Подробнее о параметрах чуть позже. Макеты По умолчанию макет сформированного отчета генерируется автоматически системой компоновки данных. Но в системе также имеется возможность разработчику самому оформлять отдельные области отчета(полей, группировок, ресурсов…). Все макеты отдельных областей, созданные на данной вкладке, привязаны только к текущему отчету. Вложенные схемы Вложенные схемы используются в случаях когда данные одного отчета необходимо использовать в другом. Другими словами мы “встраиваем” одну схему компоновки данных в другую, указывая связь по общему полю. Пример использования вложенных схем можно посмотреть в этой статье. Настройки На данной вкладке разработчик создает стандартные настройки формирования отчета. В верхней части окна задается иерархическая структура. Структура формирования отчета может состоять из следующих элементов: Группировка; Таблица; Диаграмма; Вложенная схема В нижнем части окна задаются настройки для всего отчета и для каждого элемента структуры отчета. Кратко в вкладках настроек: Выбранные поля – список полей выводимых в отчет; Отбор – всевозможные отборы записей отчета; Порядок – сортировка записей в отчете; Параметры данных – значение параметров отчета; Пользовательские поля – дополнительные поля отчета, создаваемые пользователем; Условное оформление – задается условное оформление записей отчета; Другие настройки – всевозможные дополнительные настройки такие как: заголовок отчета, макет оформления, расположение полей и тд....

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

Я знаю, что макет в СКД можно подменить (изменить) с применением кодирования непосредственно в форме отчета, но для меня было принципиально важно произвести изменения в СКД не прибегая к кодированию.

Текст запроса в отчете был такой:

ВЫБРАТЬ Номенклатура. Наименование, Номенклатура. Код, Номенклатура. БазоваяЕдиницаИзмерения, Номенклатура. ЕдиницаИзмеренияМест, Номенклатура. ЕдиницаХраненияОстатков, Номенклатура. ЕдиницаДляОтчетов, Номенклатура. Комментарий, Номенклатура. Артикул, Номенклатура. Ссылка КАК Номенклатура ИЗ Справочник. Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура. ЭтоГруппа

Момент 1. Произвольные заголовки отчета и колонок.


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

на выходе получаем:

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

Указал имя для детальных записей:


Нарисовал нужный мне макет в СКД

Там же, на закладке "Макет", обозначил границы макета заголовка группировки:

и указал имя группировки:

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

Если сформировать отчет, то:

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

и на выходе полуется нужный вид отчета:

Момент 2. Произвольная расшифровка полей отчета.

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

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

Например если кликнуть по полю "Артикул", то получим следующее:

Решение такое:

Добавляем макет поля:

указываем поле (Артикул), при клике на которое должна открываться карточка номенклатуры:

в макете, любое пустое поле заполняем текстом "Артикул", в свойствах указываем - Заполнение = "Параметр", ПараметрРасшифровки = "РасшифровкаНоменклатуры":

и указываем это поле область макет поля:

После этого должны появиться параметры макета:

В этих парметрах указываем выражение для "РасшифровкаНоменклатуры", в моем случае это ссылка на номенклатуру:


Получаем возможность открыть карточку товара при клике по полю "Артикул":

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

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

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

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

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

Макет поля

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


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

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

Настройки

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

Настройки

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

Настройки

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

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

Настройки

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


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

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

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

Настройки

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

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

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

Настройки

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

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

Настройки


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

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

Файлы

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


В