Скд как вывести подвал

Обновлено: 28.04.2024

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

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

Чтобы вклиниться в процесс формирования отчета вам необходимо программно получить результат отчета. Поэтому постобработка ВСЕГДА связана с программным формированием отчета. Можно конечно на форме сделать специальную кнопку, чтобы пользователь нажимал ее после формирования отчета, но это будет выглядеть нелепо. Поэтому будем считать, что для постработки отчет на 1С СКД формируется программно всегда.

Есть два способа как можно программно выполнить отчет на СКД:

  • Простой. Из формы отчета (нужно чтобы у отчета была форма) вызвать метод СкомпоноватьРезультат. Вы заменяете стандартную кнопку Сформировать собственной командой. В этой команде вызываете указанный выше метод, передав (в случае управляемой формы) режим компоновки – Непосредственно. Затем выполняете постобработку над полученным табличным документом (обычно это реквизит «Результат»). Метод неудобен тем, что нужно добавлять форму (если ее нет), нужно формировать отчет непосредственно, плюс довольно часто для доработки табличного документа нужно переходить на сервер (что не есть хорошо)
  • Чуть сложнее. В модуле отчета в предопределенной процедуре «ПриКомпоновкеРезультата» программно формируете отчет. Стандартный шаблон (код) для этого приведен ниже. После получения табличного документа вы выполняете свой код постобработки. Для этого подхода существует еще один вариант реализации, когда обработка выполняется не после формирования табличного документа, а в процессе. Делается это с помощью поэлементного вывода в табличный документ с помощью методов процессора компоновки данных – НачатьВывод, Следующий, ВывестиЭлемент.

С помощью этого шаблона вы можете программно формировать отчет на СКД:

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

Вывод картинок

До недавнего времени только с помощью постобработки в отчетах на СКД можно было вывести картинки в отчете. Начиная с релиза платформы 8.3.14 в СКД 1С:Предприятие 8 появилась возможность вывода картинок без постобработки.

Вот такой кусок кода в ПриКомпоновкеРезультата выводить после программного формирования картинку в колонке прайса:

Отчет прайс лист мы разбирали в нашем курсе по СКД

Нумерация колонок отчета

Здесь мы рассмотрим вариант постобработки из формы отчета

Повторение шапки отчета и вывод колонтитулов

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

Повторение шапки реализуется кодом:

Вывод колонтитулов реализуется через свойство ВерхнийКолонтитул табличного документа:

«Красивые» заголовки для группировок колонок таблицы

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


Вот так чуть лучше:


Настройка для такого варианта (для второй и третей группировок колонок):


И только постобработкой (хотя может быть есть какой-то другой секретный способ) можно сделать так:


Вставить разрыв страницы для группировки

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

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

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


Любой предопределенный макет представляет собой область табличного документа. Существуют следующие типы предопределенных макетов :

  • Макет поля,
  • Макет группировки,
  • Макет заголовка группировки,
  • Макет ресурсов.

Примерная структура отчета приведена на указанном ниже рисунке:


Примерная структура отчета, содержащего таблицу, приведена на указанном ниже рисунке:


Макет поля

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


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


Затем в списке параметров макета необходимо установить в качестве выражения представление выводимого поля. В нашем случае это будет представление поля Контрагент .


В данном примере макет поля Контрагент выводится наклонным шрифтом увеличенной высоты.


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

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

Заголовок - данный макет предназначен для оформления заголовка группировки. Заголовок группировки выводится в начале группировки. В случае если группировка содержит вложенные группировки, то заголовок группировки выводится перед записями вложенной группировки.

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

Заголовок иерархии - данный макет предназначен для оформления заголовка иерархической группировки. Данный заголовок выводится в начале иерархической группировки .

Подвал иерархии - данный макет предназначен для оформления подвала иерархической группировки. Данный подвал выводится в конце иерархической группировки.

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

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

Структура предопределенных макетов группировки показана на указанном ниже рисунке:

На указанном ниже рисунке создается макет заголовка для группировки с именем ДетальныеЗаписиНоменклатуры .


В данном примере для группировки с именем ДетальныеЗаписиНоменклатуры дополнительно выводится реквизит Код , а также изменена ширина колонок.


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

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


В данном примере для группировки Контрагент создан макет заголовка группировки. Данный макет также действует и на группировку с именем ДетальныеЗаписиНоменклатуры .


В данном примере для группировок Контрагент и ДетальныеЗаписиНоменклатуры созданы разные макеты заголовка группировки.


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

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


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


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


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


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

Особенности отображения общих итогов

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


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

Существуют следующие варианты расположения общих итогов :

  • Нет - не отображать итоги. Для группировок не отображаются только итоги по вертикали, а для таблиц и тоги по вертикали и по горизонтали ;

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


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


  • Начало - отображать итоги в начале. Для группировок и строк таблицы общие итоги отображаются перед строками группировки, а для колонок таблицы перед колонками группировки ;

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


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


  • Конец - отображать итоги в конце. Для группировок и строк таблицы общие итоги отображаются после строк группировки, а для колонок таблицы после колонок группировки ;

Пример группировки, для которой параметр Расположение общих итогов по вертикали установлен в значение Конец :


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


  • Начало и конец - отображать итоги в начале и конце. Для группировок и строк таблицы общие итоги отображаются перед и после строк группировки, а для колонок таблицы перед и после колонок группировки ;

Пример группировки, для которой параметр Расположение общих итогов по вертикали установлен в значение Начало и конец :


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


  • Авто - расположение общих итогов определяется автоматически. Для группировок верхнего уровня общие итоги отображаются в конце, для остальных группировок общие итоги не отображаются.

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


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

1С 8.2. Произвольные макеты в СКД (Система компоновки данных). Не стандартная «Шапка» и «Подвал».

Автор: программист Суровцев Василий

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

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

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

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


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


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

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


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


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


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


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

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

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


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


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


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

В этой статье мы разберем использование макетов в 1С СКД. При разработке отчетов иногда возникает необходимость в более сложной компоновке результата (в табличный документ) чем это позволяют типовые средства. Например, это может быть формирование печатной формы документа типа ТОРГ-12 – и такое тоже можно сделать средствами СКД, особенно если необходимы такие возможности как произвольные отборы. Или это могут быть какие-то особенные элементы отчета, которые нельзя сделать, используя стандартные возможности 1С – например, собственные итоги.

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

Первое чем определяется форма (структура) отчета в СКД это настройка группировок

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



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

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

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

Итак, вы поняли, что без использования макетов ваш отчет реализовать не получится и приняли решение о его (их) использовании. Должен вас сразу предупредить – применение макетов в отчете на СКД в 1С часто не дает возможность пользователю изменять структуру отчета. То есть макеты, настроенные для одного варианта отчета, могут неправильно работать в другом варианте отчета, если поменялся состав группировок. Если вас устраивает такое ограничение, то продолжим.

Настройка макетов производится на закладке «Макеты». Существуют несколько видов макеты, которые показаны на рисунке:


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


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

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

  • Макет поля. Практически никогда не нужен. Практически все можно сделать с помощью условного оформления. Разве что заполнить как-то хитро параметр расшифровки для этого поля.
  • Макет группировки. Используется для строк (колонок), то есть для собственно вывода данных отчета. Используется в основном тип макета «заголовок»
  • Макет заголовка группировки. Используется для вывода шапки (таблицы) отчета. Обычно использую этот макет только для первой группировки, чтобы «нарисовать» какую-то хитрую шапку для таблицы отчета (тип макета – заголовок). Если выбрать тип макета «подвал», то можно сделать подавал отчета – с подписями и т.п.
  • Макет ресурсов. Используется для группировки заданной таблицей. Используется в основном тип макета «заголовок»

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

Связывание макета с данными производится через параметры и параметры расшифровки.


В поле выражение вы связываете параметр макета (или параметр расшифровки) с данными. Как видно здесь можно использовать выражения на языке выражений СКД и также имеется доступ через точку к реквизитам объектов.

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

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


Здесь мы добавили макет группировки для группировки первого уровня (настойки отчета на картинке ниже):


И добавили макет заголовка для этой же группировки. Получим результат:


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


И не будем задавать для него область


В этом случае заголовок не выводится как нам было нужно:


Теперь разберем несколько примеров, когда даже с помощью макетов в 1С не получится реализовать задачу.

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


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


В итоге получим


Как видно разрыв страницы не выводится. Видимо удаляется при формировании результата. Такое вот странное поведение системы. По крайней мере в релизе платформы 8.3.14.

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

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


Текст модуля формирования возьмем из статьи. Учтем комментарий к статье, в котором указано, что мы можем просто пропустить строку с текстом «Разрыв», а не скрывать область, устанавливая ей высоту 1. И получим необходимый результат:


Как видно разрыв страницы теперь выводится.

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

Шаг 1. Выводим наши наборы с помощью детальных записей вертикально


Аналогично задаются выбранные поля для расхода.

Шаг 2. Нам нужно разделить таблицы друг от друга. Для этого добавляем макеты заголовка группировки.


Шаг 3. Копируем модуль формирования отчета из статьи и дорабатываем его для своего отчета. Тезисно, что мы делаем в модуле:

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