1с создание макета отчета общие итоги. Макеты скд. ОбластьСтрока.Параметры.Наименование = Выборка.Наименование

Говорят, что под названием 1С изначально подразумевалась фраза «одна секунда», т.е. программы должны выдавать отчеты быстро, «в одну секунду». Скорость работы отчетов очень важна, но еще важнее, чтобы отчеты выдавали правильную информацию — разберемся с этим на примере создания простого отчета в 1С 8.3 на базе конфигурации Управление торговлей 10.3. Для создания корректных отчетов желательно (даже настоятельно рекомендуемо) уметь конфигурировать 1С и немного уметь программировать на внутреннем языке и языке запросов 1С, хотя, с другой стороны, создание отчетов — прекрасная возможность начать осваивать эти навыки.

Данное описание является учебным для понимания основных принципов создания отчетов 1С

Как создать отчет в 1С 8.3

Чтобы создать отчет, необходимо открыть 1С в режиме конфигуратора, для этого в окошке запуска 1С выбираете нужную базу в списке и нажимаете кнопку Конфигуратор:

В самом конфигураторе заходите в меню Файл и выбираете пункт Новый:


В появившемся меню выбираете пункт Внешний отчет и нажимаете кнопку ОК:


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


Как сделать отчет с помощью макета

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

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


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


После чего откроется окно макета, напоминающее лист Excel:


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

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

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


После этого идем в меню Таблица главного меню, заходим в подменю Имена и кликаем на пункт Назначить имя:


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


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

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


В открывшемся окне в разделе Начертание устанавливаем галочку Жирный и нажимаем кнопку ОК:


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


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


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


Возвращаемся в главное окно отчета и в нижнем списке кликаем правой кнопкой на пункт Формы и нажимаем Добавить:


В открывшемся конструкторе формы отчета нажимаем кнопку Готово, откроется форма отчета, кликаем два раза на кнопку Сформировать:


В результате откроется окно свойств кнопки в правой части экрана, в поле Действие нажимаем на лупу:


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


Сначала вставим вместо выделенного текста следующий текст программного кода:

//создаем табличный документ, который будет наполняться частями отчета и выводиться на экран
ТабДокумент = Новый ТабличныйДокумент;
//далее, получаем макет, который создавали при создании отчета
Макет = ПолучитьМакет("Макет");
//теперь нужно вывести шапку отчета, дял этого получаем область шапки из макета и выводим ее в табличный документ
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДокумент.Вывести(ОбластьШапка);
//с помощью запроса получаем выборку наименований номенклатуры, которые надо вывести в отчете
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Номенклатура
|";
//получить из макета область строки номенклатуры — будем обращаться к ней в цикле для вывода каждого наименования
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
//обрабатываем в цикле каждое наименование из полученной выборки
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//для вывода очередной строки нужно указать очередное наименование в параметре области (сам параметр мы настраивали при создании макета)
ОбластьСтрока.Параметры.Наименование = Выборка.Наименование;
//параметр заполнили, теперь можно вывести строку
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
//табличный документ сформирован, теперь выводим его на экран
ТабДокумент.Показать("Перечень номенклатуры«);

Когда текст будет скопирован в модуль формы, то строки, начинающиеся с двойного слэша «//», будут выделены зеленым — это комментарии, в них описано, что выполняет каждая строчка кода:


Резюмируем, какие строки программного кода необходимы для формирования отчета:

  1. Необходимо создать табличный документ, который будет наполняться частями отчета и выводится на экран, делается это строкой «ТабДокумент = Новый ТабличныйДокумент;»
  2. Нужно получить макет отчета, из него будем получать структуру отчета по частям (области), делается это строкой "Макет = ПолучитьМакет("Макет")"
  3. Для вывода каждой из областей нужно получить ее из макета и вывести в табличный документ, делается это строками "ОбластьШапка = Макет.ПолучитьОбласть("Шапка")" и «ТабДокумент.Вывести(ОбластьШапка)»
  4. Если требуется заполнить параметры, который становятся известны только при выполнении программы, то перед выводом области нужно заполнить такие параметры, делается это строкой «ОбластьСтрока.Параметры.Наименование = Выборка.Наименование»
  5. И лишь, когда табличный документ заполнен всеми нужными частями отчета, он выводится на экран, делается это строкой "ТабДокумент.Показать("Перечень номенклатуры")"

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


Находим и открываем сохраненный файл отчета. В открывшейся форме нажимаем кнопку Сформировать:


и получаем перечень номенклатуры:


Это лишь один из способов создания отчетов в 1С. В следующих статьях разберем другие.


Ключевые слова: Универсальный отчет, Общий отчет, ОтчетОстаткиИОбороты, ОтчетСписокКроссТаблица, Остатки и Обороты, Список кросс / таблица

Большинство отчетов построены на одних и тех же базовых принципах. Самый быстрый способ разработать отчет это воспользоваться встроенным в платформу конструктором «Конструктор выходных форм». Однако, при разработке (или доработке) типовой конфигурации перед программистами ставится требование по унификации программного кода, а также форм справочников, документов и выходных форм отчетов. Поэтому в типовых конфигурациях часто используемый программный код выносят в общие модули, а для унификации выходных форм отчетов используют специальные «универсальные» отчеты.
Все множество отчетов в типовых конфигурациях можно разделить на отчеты формируемые на основании общих отчетов, когда все функции по формированию выходной формы и настроек передаются во внешний модуль общего отчета и сформированные с использованием построителя, когда все функции формирующие выходную форму содержатся в модуле объекта.
В УТ и УПП существуют два общих отчета: «Отчет остатки и обороты (ОтчетОстаткиИОбороты)» и «Отчет список кросс таблица (ОтчетСписокКроссТаблица)». Первый «Отчет остатки и обороты (ОтчетОстаткиИОбороты)» предназначен для формирования линейных отчетов типа «Начальный остаток – Приход – Расход – Конечный остаток», при этом группировки выводятся по строкам. Второй отчет «Список / кросс таблица (ОтчетСписокКроссТаблица)» предназначен для вывода кросс таблиц, когда группировки разворачиваются не только по строкам, но и по столбцам.

Структура универсальных отчетов

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

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

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

  • «ВыводитьПоказателиВСтроку» – булево, указывает на возможность выводить группировки в одну строку
  • «ВыводитьДополнительныеПоляВОтдельнойКолонке» – булево, если в настройках отчета указаны дополнительные поля их нужно выводить в разных колонках

  • «ВыводитьИтогиПоВсемУровням» – булево, для некоторых группировок можно специально запретить выводить цифры по показателям, данный реквизит снимает данный запрет
  • «ПоказыватьЗаголовок» – булево, указывает выводить или не выводить заголовок на экран (регулируется кнопкой «Заголовок» на форме отчета)

  • Табличная часть «Показатели» - содержит в себе список выводимых на экран показателей

  • В отчете «Список кросс / таблица (ОтчетСписокКроссТаблица)»:
  • «Использовать интервальные группировки (ИспользоватьИнтервальныеГруппировки)» - булево, указывает на возможность выводить данные по интервалам периодов
  • Табличная часть «Интервалы» - содержит в себе список интервалов

Формы универсального отчета:
«ФормаОсновная» – основная форма вывода данных.
Реквизиты «ФормаОсновная»:
  • «ОтчетОбъект» - основной объект отчета, ссылка на «ОтчетОстаткиИОбороты» или «ОтчетСписокКроссТаблица»

  • В модуле формы, содержатся следующие переменные:
  • «ВысотаЗаголовка» - число, количество строк в заголовке, данная переменная используется для, когда нужно скрыть/отобразить заголовок отчета в табличном документе
  • «ИдентификаторОкнаРасшифровки»

  • «ФормаНастройки» - ссылка, на форму настройки
  • «НеЗаполнятьНастройкиПриОткрытии» - булево, переменная используется, когда не нужно заполнять начальные настройки отчета. При первом открытии переменная равна ЛОЖЬ, при расшифровке отчета переменная будет установлена в ИСТИНА

  • «СтруктураСвязиЭлементовСДанными» - структура, содержит данные указание каким элементам формы соответствуют реквизиты отчета

  • Элементы формы «ФормаОсновная»:
  • «КоманднаяПанельФормы» – содержит управляющие кнопки формы:
    o Меню «Подменю» (Действия) – содержит список возможных действий формы
    o Кнопка «Сформировать» – при нажатии формирует отчет
    o Кнопка «Отбор» – открывает/закрывает панель отбора
    o Кнопка «Заголовок» – открывает/закрывает в табличной части строки с заголовком отчета
    o Кнопка «Настройка» - открывает форму настроек отчета
    o Кнопки «ВосстановитьНастройки», «СохранитьНастройки» - сохраняют и восстанавливают настройки отчета
    o Кнопка «Справка (Действие1)» – вызывает справку по отчету
  • «Период с: (ДатаНач)», «по: (ДатаКон)» - поле ввода, ввод даты начала/окончания выбора данных для отчета

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

  • «ДокументРезультат» - табличный документ, куда выводятся данные отчета
Модуль формы «ФормаОсновная»:
Перечислим процедуры:
  • «ПередОткрытием» - обработчик события перед открытием формы. Содержит код который выполняется для инициализации начальных настроек отчета. Восстанавливает сохраненные данные, реквизит «ИмяРегистра»

  • «ПриОткрытии» - обработчик события при открытии формы
  • «ОбновитьОтчет» - процедура формирует отчет и обновляет табличный документ «ДокументРезультат»

  • «ОтобразитьОтбор» - отобразить/скрыть панель формы отбора
  • «ЗаполнитьОбъектПоДиалогу» - заполняет реквизиты отчета по реквизитам формы

  • «ЗаполнитьДиалогПоОбъекту» - заполнение реквизитов формы по реквизитам отчета
  • «ВыводЗаголовка» - вывод заголовка отчета

  • «СформироватьЗаголовокФормы» - формирует текст заголовка
  • «ПослеВосстановленияЗначений» - после восстановления значений на форме. В данную процедуру - обработчик события формы можно вставить код который будет выполнять установку значений реквизитов отчета и формы после открытия формы отчета. Сохраняемые значения обычно помещаются в реквизит СохраненныеНастройки и после восстановления формы все настройки помещаются в реквизит СохраненныеНастройки

  • «ПередСохранениемЗначений» - обработчик – события формы, выполняется при закрытии формы и сохранении значений из реквизита СохраненныеНастройки
  • «ОбработкаОповещения» - обработчик оповещения

  • «КнопкаНастройкаПериодаНажатие», «ПолеНастройки1ПриИзменении», «ПолеНастройкиС1ПриИзменении», «ПолеНастройкиПо1ПриИзменении», «ПолеВидаСравнения1ПриИзменении» - обработчики событий элементов формы
  • «ДокументРезультатОбработкаРасшифровки» - обработчик события "Обработка расшифровки" поля табличного документа «ДокументРезультат»

«ФормаНастройка» - форма предназначенная для настройки отчета, вызывается при нажатии кнопки «Настройка» в основной форме отчета.
Реквизиты «ФормаНастройка»:
  • «ОтчетОбъект» - отчет, ссылка на «ОтчетОстаткиИОбороты» или «ОтчетСписокКроссТаблица»


  • «ВызывающийОтчет» - тип произвольный
  • «ИнтервальнаяГруппировка» - тип строка

  • «ИнтервальноеПоле» - тип произвольный
  • «ОтобранныеИнтервалы» - тип таблица значений. Связан с элементом формы «ОтобранныеИнтервалы» на закладке «Интервалы группировок»

Элементы «ФормаНастройка»:
«Панель отчета (ПанельОтчета)» содержит следующие закладки:
Закладка «Общие» содержит элементы:
  • «Период с: (ДатаНач)», «по: (ДатаКон)» - поле ввода, дата начала и окончания выборки данных из отчета. Данные связаны с реквизитами отчета «ДатаНач» и «ДатаКон»

  • «Раздел учета (ИмяРегистра)» - поле выбора, данные элемента связаны с реквизитом отчета «ИмяРегистра», содержит имя регистра по которому формируется отчет. Если «ФормаНастройки» вызывается из внешнего отчета, тогда это поле недоступно для просмотра и изменения
  • «Использовать свойства и категории (ИспользоватьСвойстваИКатегории)» - флажок, устанавливает флаг использования свойств и категорий объектов, данные этого флажка связаны с данными реквизита отчета «ИспользоватьСвойстваИКатегории»

  • «Раскрашивать измерения (РаскрашиватьИзмерения)» - флажок, данные связаны с реквизитами отчета «РаскрашиватьИзмерения», если флажок установлен тогда уровни группировок выводимы в табличный документ будут выделены цветами
  • «Выводить итоги по всем уровням (ВыводитьИтогиПоВсемУровням)» - флажок, если установлен, тогда в табличный документ выводятся итоги по всем уровням группировок, связан с реквизитом отчета «ВыводитьИтогиПоВсемУровням»

  • «Выводить в разных колонках (ВыводитьВРазныхКолонках)» - флажок, по-умолчанию значения показателей выводятся в одной ячейке, при установке данного флажка значения показателей будут выводится в двух ячейках
  • «СписокПоказателей (Показатели)» - табличная часть, содержит список показателей

  • В отчете «Список / кросс-таблица (ОтчетСписокКроссТаблица)»:
  • «Период (ДатаНач)» - поле ввода даты, предназначено для выбора периода. Видимость данного поля регулируется переменной модуля «мРежимВводаПериода», в зависимости от значения данной переменной в данном поле можно выбирать период с шагом день, месяц, квартал, год
Закладка «Группировки»:
  • «ИзмеренияСтроки (ПостроительОтчета.ИзмеренияСтроки)» - тип ИзмеренияПостроителяОтчета, измерения, откладываемые по строкам отчета

  • В отчете «Список / кросс таблица (ОтчетСписокКроссТаблица)»:
  • «ИзмеренияКолонки (ПостроительОтчета. ИзмеренияКолонки)» - тип ИзмеренияПостроителяОтчета, измерения, откладываемые по колонкам отчета

  • В отчете «Список / кросс таблица (ОтчетСписокКроссТаблица)»: если реквизит
  • «ИспользоватьИнтервальныеГруппировки» установлен в «Истина», тогда становится доступным закладка
«Интервалы группировок»:
  • «Наименование (ИнтервальноеПоле)» - поле выбора. При открытии формы заполняется теми измерениями из коллекции «ПостроительОтчета.ДоступныеПоля» у кторых наименование начинается на «ИН»

  • «ОтобранныеИнтервалы» - таблица значений. При изменении «Наименование (ИнтервальноеПоле)» заполняется список выбранных интервалов
Закладка «Отбор»:
  • «Отбор (ПостроительОтчета.Отбор» - тип Отбор. Отбор построителя отчетов

Закладка «Поля»:
  • «ВыбранныеПоля (ПостроительОтчета.ВыбранныеПоля)» - тип ПоляПостроителяОтчетов. Поля для вывода в отчет

  • «Выводить дополнительные поля в отдельной колонке (ВыводитьДополнительныеПоляВОтдельнойКолонке)» - флажок, при установке выводит поля в отдельных колонках
Закладка «Сортировка»:
  • «Порядок (ПостроительОтчета.Порядок)» - тип Порядок. Сортировка группировок в отчете

Модуль «ФормыНастройки», содержит следующие процедуры и обработчики событий:
  • «ЗаполнитьДиалогПоОбъекту» - заполняет диалог по значениям реквизитов отчета

  • «ПередОткрытием» - обработчик события "Перед открытием" формы отчета
  • «ИмяРегистраПриИзменении», «КнопкаНастройкаПериодаНажатие», «ОсновныеДействияФормыОК», «ИспользоватьСвойстваИКатегорииПриИзменении», «КоманднаяПанельСписокПоказателейУстановитьВсе», «КоманднаяПанельСписокПоказателейСнятьВсе», «ОтборЗначениеНачалоВыбора», «ОтборПередУдалением», «ДатаНачПриИзменении», «ДатаКонПриИзменении» - обработчики событий соответствующего элемента формы

  • В модуле формы также инициализируется переменная СписокРегистров (функция ПолучитьСписокРегистровОстатков) и указывается как список для выбора элемента формы «Раздел учета (ИмяРегистра)»

  • В отчете «Список / кросс таблица (ОтчетСписокКроссТаблица)»:
  • «ОтобратьИнтервалы» - процедура формируем список отобранных интервалов в реквизите «ОтобранныеИнтервалы», вызывается при изменении поля выбора «Наименование (ИнтервальноеПоле)»
  • «ВставитьИнтервалыПоИмени» - процедура вызывается перед формированием отчета, заполняет табличную часть «Интервалы»

  • «КнопкаНастройкаПериодаНажатие» - обработчик нажатия кнопки настройки периода
  • «ПлюсПериодНажатие», «МинусПериодНажатие» - обработчик нажатия кнопки «+», «-» периода

  • «ИнтервальноеПолеПриИзменении», «ОтобранныеИнтервалыПослеУдаления», «ОтобранныеИнтервалыПриОкончанииРедактирования», «ОтобранныеИнтервалыВГраницаПриИзменении» - обработчики событий элементов закладки «Интервалы группировок»

  • В модуле формы инициализируется поле выбора «ИнтервальноеПоле».
Модуль объекта отчета:
Переменные модуля, которые влияют на формирования отчета:
  • «мТаблицаПоказатели» - таблица значений, содержит все возможные показатели, по-умолчанию заполняется показателями из табличной части «Показатели»

  • «НП» - настройка периода, используется при вызове «КнопкаНастройкиПериода»
  • «мСоответствиеНазначений» - соответствие, содержащая назначения свойств и категорий именам

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

  • «мИсходныйМакетОтчета» - макет, используемый для отчета, по умолчанию "Макет", но может быть переопределен. Переменная нужна если предполагается использовать макет отличный от исходного макета универсального отчета «Макет»
  • «мНазваниеОтчета» - строка, название отчета

  • «мВыбиратьИмяРегистра» - булево, признак выбора (изменения) имени регистра (вида отчета), влияет на видимость элемента формы настройки «Раздел учета (ИмяРегистра)»
  • «мВыбиратьИспользованиеСвойств» - булево, признак выбора (изменения) флажка использования свойств и категорий

  • «СтруктураФорматаПолей» - структура, хранит формат полей примитивных типов, используется для форматирования полей типа дата в строковом представлении
  • «мСтруктураДляОтбораПоКатегориям» - структура, предназначена для связи отборов Построителя с категориями из соединяемых таблиц

  • В отчете «Список / кросс таблица (ОтчетСписокКроссТаблица)»:
  • «мСтруктураНевыводимыхГруппировок» - структура, хранит список тех группировок, которые не надо выводить. Применяется в тех случаях, когда нужно пропускать итоги, например Номенклатура - Характеристика - Серия: итоги по номенклатуре не нужны, нужно только для всех трех
  • «СоответствиеТиповИнтервальныхПолей» - соответствие

Процедуры и функции модуля отчета:
  • «ЗаполнитьНачальныеНастройки» - процедура заполняет начальные настройки отчета. Вызывается в модуле формы отчета перед открытием формы (обработчик события «ПередОткрытием»)

  • «ОбработкаРасшифровкиСтандартногоОтчета» - процедура, вызывается обработчиком события "Обработка расшифровки" поля табличного документа «ДокументРезультат»
  • «ЗаполнитьПоляОсновногоРеквизита» - процедура, вызывается при инициализации основной формы отчет (модуль формы)

  • «Настроить» - процедура, настраивает отчет по переданной структуре параметров, вызывается при расшифровке отчета
  • «ПолучитьПостроительОтчета» - функция, возвращает построитель отчета

  • «ПолучитьОсновнуюФорму» - функция, возвращает основную форму отчета
  • «СформироватьСтруктуруДляСохраненияНастроек» - процедура, формирует структуру «СохраненныеНастройки» для сохранения параметров отчета. Вызывается перед сохранением настроек в обработчике события «ПередСохранениемЗначений». Структура состоит из таких полей:
    o «ИмяРегистра» – содержит имя регистра
    o «НастройкиПостроителя» - содержит настройки построителя: доступные поля, отборы, порядок и т.д.
    o «Показатели» - табличная часть «Показатели»
    o «ИспользоватьСвойстваИКатегории» - признак использования свойств и категорий
    o «ВыводитьДополнительныеПоляВОтдельнойКолонке» - признак вывода дополнительных полей в отдельной колонке
    o «ВыводитьИтогиПоВсемУровням» - выводить итоги по всем уровням
    o «ВыводитьПоказателиВСтроку» - выводить показатели в строку
    o «РаскрашиватьИзмерения» - раскрашивать измерения
    o «ЗаголовокПомечен» - показывать или скрывать заголовок
  • «ВосстановитьНастройкиИзСтруктуры» - процедура, заполняет из структуры настроек общие параметры отчетов. Вызывается после восстановления настроек в обработчике события «ПослеВосстановленияЗначений»

  • «СформироватьОтчет» - выполняет запрос и формирует табличный документ-результат отчета

  • В отчете «Список / кросс таблица (ОтчетСписокКроссТаблица)»:
  • «ЗаполнитьПоказатели» - процедура, заполняет специальную таблицу «мТаблицаПоказатели». Вызывается в процедуре «ЗаполнитьНачальныеНастройки», перед открытием отчета
  • «СформироватьЗаголовок» - процедура, формирует табличку-заголовок

  • «ВывестиКолонкуШапки» - процедура, выводит шапку таблицы
  • «ВывестиПоказатели» - процедура, выводит показатели в строку отчета

  • «ПолучитьПоказатели» - процедура, получает значения показателей для вывода в таблицу
  • «ВывестиСтроку» - выводит строку отчета

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

  • «ШапкаТаблицыОбщая» - содержит ячейки в которые выводятся заголовки столбцов таблицы. Данная секция включает в себя такие вертикальные секции: «Поле» - выводятся наименование группировок и дополнительных полей, «НачальныйОстаток» - показатели начального остатка, «Приход» - показатели прихода, «Расход» - показатели расхода, «КонечныйОстаток» - показатели конечного остатка. Также в секцию входят горизонтальные субсекции: «ШапкаТаблицы» - включает в себя одну строку ячеек «Поле», «Начальный остаток», «Приход», «Расход», «Конечный остаток», «ШапкаТаблицыНиз» - выводит наименование дополнительных полей. Если нет нужды выводить дополнительные поля выводится только секция «ШапкаТаблицы»
  • «Подвал» - горизонтальная секция, используется как завершающая секция при выводе таблицы, данных не выводит, но содержит сплошную линию, завршая тем самым окантовку таблицы сполшными линиями

  • «СтрокаИерархии» - горизонтальная секция выводится только в случае если способ вывода группировки справочников «по иерархии», выводит группу элементов справочника
  • «Строка» - горизонтальная секция, выводить строку группировки

  • «СтрокаДетали» - горизонтальная секция, в случае если в настройках указано выводить дополнительные поля, в данную строку выводятся дополнительные поля
  • «ОбщиеИтоги» - горизонтальная секция, в данную строку выводятся общие итоги

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

  • «ПараметрыОтчетов…» - макеты в которых указываются настройки параметров для вывода отдельных отчетов. Заполнение начальных настроек отчета по макету вызывается функцией «ЗаполнитьНачальныеНастройкиПоМакету».
В макете можно указать состав показателей, группировок и полей для вывода в отчет, содержит две секции:
  • «Показатели» - горизонтальная секция, ячейки в которых указывается состав показателей и параметры вывода показателей в отчет. В данной секции можно указывать также вычисляемые показатели

  • «Группировка» - горизонтальная секция, содержит ячейки с перечислением группировок выводимых в отчет
В отчете «Список кросс / таблица (ОтчетСписокКроссТаблица)» содержатся следующие макеты:
«Макет» - является макетом для вывода информации в табличный документ «ДокументРезультат», состоит из тех же секций что и макет отчета «Отчет остатки и обороты (ОстаткиИОбороты)» за тем исключением, что вертикальные секции «НачальныйОстаток», «Приход», «Расход», «КонечныйОстаток» заменены секцией «Показатель» и добавлена горизонтальная секция «ШапкаТаблицыСтрока» для вывода наименований группировок в строке.

Построение пользовательских выходных форм на основании универсальных (общих) отчетов

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

Основная форма

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

  • «Период с: (ДатаНач)», «по: (ДатаКон)» или «На дату: (ДатаКон)» - поле ввода дата, данные связаны с реквизитами общего отчета «ДатаНач» или «ДатаКон»
  • «Панель отборов (ПанельОтбор)» - панель, на которую помещаются элементы для быстрого отбора. Для настройки отбора нужно три элемента формы флажок, поле выбора и поле ввода, наименование каждого элемента начинается с определенного названия плюс имя отбора так как он должен быть задан в построителе отчета:
    o «ФлажокНастройки…» - флажок связанный с реквизитом отборов «Использование», при установке данного флажка в построителе отчетов будет включен соответствующий отбор
    o «ПолеВидаСравнения…» - поле выбора, связан с реквизитом отборов «ВидСравнения», содержит способ сравнения значения отбора с отбираемыми значениями
    o «ПолеНастройки…» - поле ввода, связан с реквизитом отборов «Значение», содержит значение по которому осуществляется фильтрация

  • Пример использования:
    Установить отбор по измерению «Номенклатура». Добавляем на панель отборов три элемента формы, называем их следующим образом: флажок «ФлажокНастройкиНоменклатура», поле выбора «ПолеВидаСравненияНоменклатура», поле ввода «ПолеНастройкиНоменклатура». Проверяем что в обработчике события формы «ПередОткрытием» выполняется процедура «УстановитьСвязьПолейБыстрогоОтбораНаФорме», которая связывает элементы формы с данными отбора построителя отчетов. Все. Если в данных отчета есть отбор «Номенклатура», то управлять отбором мы сможем на панели отборов, не вызывая форму настройки отчетов.
  • «Табличный документ (ДокументРезультат)» - собственно табличный документ куда выводятся данные отчета
При первом открытии пользовательского отчета происходит создание экземпляра объекта «ОбщийОтчет». Нужно четко понимать, что в рамках пользовательского отчета мы оперируем двумя объектами «ОбщийОтчет» - экземпляр объекта общего отчета и «ЭтотОтчет» - экземпляр объекта пользовательского отчета.
Т.е., если нужно вызвать процедуру модуля пользовательского отчета «ЗаполнитьНачальныеНастройки()», то пишем такую конструкцию «ЭтотОтчет.ЗаполнитьНачальныеНастройки()», а чтобы вызвать процедуру общего отчета «ЗаполнитьПоляОсновногоРеквизита()», пишем «ОбщийОтчет. ЗаполнитьПоляОсновногоРеквизита()». Заметим, что в модуле формы для вызова процедур общего отчета просто указать имя процедуры, а в модуле объекта пользовательского отчета нужно писать «ОбщийОтчет.» и название процедуры.
Пример использования пользовательского отчета из справочника «Контрагенты»:
Контрагент = ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка; Отчет = Отчеты.ВедомостьВзаиморасчетыСКонтрагентами.Создать(); Форма = Отчет.ПолучитьФорму(); Форма.ЭтотОтчет.ЗаполнитьНачальныеНастройки(); Форма.ЭтотОтчет.ОбщийОтчет.ПостроительОтчета.Отбор["Контрагент "].Использование = Истина; Форма.ЭтотОтчет.ОбщийОтчет.ПостроительОтчета.Отбор["Контрагент "].Значение = Контрагент; Если Контрагент.ЭтоГруппа Тогда Форма.ЭтотОтчет.ОбщийОтчет.ПостроительОтчета.Отбор["Контрагент "].ВидСравнения = ВидСравнения.ВИерархии; Иначе Форма.ЭтотОтчет.ОбщийОтчет.ПостроительОтчета.Отбор["Контрагент "].ВидСравнения = ВидСравнения.Равно; КонецЕсли; Форма.ОбновитьОтчет(); Форма.Открыть();
Перечислим основные процедуры и функции основной формы пользовательского отчета:
  • При инициализации формы выполняется процедура «ЗаполнитьПоляОсновногоРеквизита», которая заполняет поля и реквизиты основного объекта формы. Также устанавливаются переменные формы

  • «ОбновлениеОтображения» - процедура, обработчик обновления данных формы
  • Перед открытием формы вызывается процедура модуля пользовательского отчета «ЗаполнитьНачальныеНастройки», выполняется восстановление значений параметров формы и связь между элементами формы и отборами построителя отчетов: «УстановитьСвязьПолейБыстрогоОтбораНаФорме»

  • «ПриОткрытии» - процедура-обработчик события при открытии формы

  • Сохранение и восстановление параметров отчета осуществляется следующими процедурами:
  • «ПослеВосстановленияЗначений» - процедура-обработчик события после восстановления сохраненных значений, вызывает процедуру модуля отчета «ВосстановитьНастройкиИзСтруктуры»
  • «ПередСохранениемЗначений» - процедура-обработчик события перед сохранением значений, вызывает функцию модуля отчета «СформироватьСтруктуруДляСохраненияНастроек», в которой формируется структура сохраненных настроек и присваивается реквизиту «СохраненыеНастройки»

  • Во всех отчетах основанных на ОиО или СКТ сохранение параметров настроек реализовано следующим образом. В свойствах формы указывается «Сохранять значения» и в списке «Сохраняемые значения» выбирается реквизит «СохраненныеНастройки». В обработчик события «Перед сохранением значений», «После восстановления значений» вставляют код, который вызывает процедуры модуля общего отчета: «СформироватьСтруктуруДляСохраненияНастроек» для сохранения настроек и «ВосстановитьНастройкиИзСтруктуры» для восстановления настроек отчета. Структура настроек уже описывалась в разделе про универсальные отчета
    Пример использования:
    После формирования отчета пользователи могут настраивают ширину колонок табличного документа (нажимая Ctrl +позиционируя ширину курсором мыши). В общих отчетах массив ширин колонок хранится в переменой мМассивШиринКолонок, при обновлении отчета ширина колонок настраивается исходя из данных которые хранятся в этом массиве. Задача состоит в том, чтобы при закрытии отчета сохранять массив ширин колонок, а после открытии отчета восстанавливать ширины колонок, так как это было задано пользователем перед закрытием. Для этого в обработчик события перед сохранением значений формы «ПередСохранениемЗначений» в структуре «СохраненныеНастройки», добавляем массив, который сформирован следующим образом:
// Запоминать следует, если документ не Если ЭлементыФормы.ДокументРезультат.ВысотаТаблицы > 0 Тогда пустой Для Сч=1 По ЭлементыФормы.ДокументРезультат.ШиринаТаблицы Цикл МассивШиринКолонок.Добавить(ЭлементыФормы.ДокументРезультат.Область(1 ,Сч).ШиринаКолонки); КонецЦикла; КонецЕсли; СохраненныеНастройки.Вставить("МассивШиринКолонок ", МассивШиринКолонок);
В процедуре-обработчике «ПослеВосстановленияЗначений», вносим следующий код:
ЭтотОтчет.ВосстановитьНастройкиИзСтруктуры(СохраненныеНастройки, ПоказыватьЗаголовок); СохраненныеНастройки.Свойство("МассивШиринКолонок ", ОбщийОтчет.мМассивШиринКолонок); // Восстанавливаем массив ширин колонок
  • «ПриЗакрытии» - процедура-обработчик события при закрытии формы. В данную процедуру, обычно, добавляют функции сохранения параметров формы
  • «ОбработкаОповещения» - процедура-обработчик сообщений. Используется для обновления элементов отбора на форме, в случае, если изменились настройки отборов в построителе отчета при вызове формы настройки

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

    • «УправлениеПараметрамиОтображенияЭлементовФормы» - управляет пометками кнопок на панели инструментов

    • «ОбновитьОтчет» - обновляет таблицу отчета, вызывается при нажатии кнопки «Сформировать», а также когда нужно убрать / задать заголовок отчета (кнопка «Заголовок»), в последнем случае выводится только заголовок отчета В процедуре помещается вызов процедуры модуля отчета «СформироватьОтчет»
    • «ВыводЗаголовка» - процедура – управляет выводом заголовка, вызывает из модуля отчета процедуру «СформироватьОтчет»

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

    Модуль отчета

    Рассмотрим модуль пользовательского отчета. Наиболее важная процедура модуля отчета «ЗаполнитьНачальныеНастройки», данная процедура вызывается перед открытием формы и содержит команды, которые настраивают список показателей, группировок, отборы и порядок, которые будут присутствовать в отчете:
    • Инициализация переменных:
      «СтруктураПредставлениеПолей» - структура, в которую заносятся представления полей, где ключ – имя показателя/группировки/поля из источника данных, а значение текстовое представление показателя/группировки/поля.
      Пример использования:
      СтруктураПредставлениеПолей.Вставить("ХарактеристикаНоменклатуры ", "Характеристика номенклатуры "); СтруктураПредставлениеПолей.Вставить("ДокументОснование ", "Документ-основание ");
      «МассивОтбора» - массив отбора, массив в который включаем отборы, которые присутствуют в настройках отчета по-умолчанию.
      Пример использования:
      Добавляем два отбора по номенклатуре и складу, эти отборы можно связать с элементами в панели отборов основной формы. При внесении элементов быстрого доступа к отборам на форме отчета, в настройках отчета желательно добавлять имена этих отборов в «МассивОтбора»
      МассивОтбора.Добавить("Номенклатура "); МассивОтбора.Добавить("Склад ");
    • Параметры отчета:
      «ОбщийОтчет.ИмяРегистра» - если отчет формируем на основании определенного регистра, тогда указываем имя этого регистра.
      «ОбщийОтчет.мНазваниеОтчета» - название отчета, которое будет выводится в заголовок табличного документа.
      Пример использования:
      ОбщийОтчет.ИмяРегистра = "ТоварыНаСкладах "; ОбщийОтчет.мНазваниеОтчета = "Анализ доступности товаров на складах ";
    • Запрос для построителя отчета:
      В отчетах предусмотрено формирование текста запроса для построителя на основании трех источников: метаданных регистра, макета и напрямую присваивать текст запроса построителю отчетов.
      - Запроса на основании метаданных регистра
      Если мы указали наименование регистра в «ОбщийОтчет.ИмяРегистра», то вызвав процедуру «ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра» мы можем заполнить настройки построителя запроса и реквизиты общего отчета
      Пример использования:
      Формирует текст запроса к регистру «ТоварыНаСкладах» и заполняет настройками реквизиты общего отчета:
      ОбщийОтчет.ИмяРегистра = "ТоварыНаСкладах "; ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра(СтруктураПредставлениеПолей, МассивОтбора, ОбщийОтчет, "СписокКроссТаблица ");
      - Запроса на основании макета
      Как уже описывалось в разделе «Структура универсальных отчетов», параметры настройки отчета можно указывать в специально разработанном макете. Удобство макета в том что можно регулировать вывод показателей, группировок и полей не прибегая к построению запроса через конструктор.
      Пример использования:
      ПостроительОтчета = ОбщийОтчет.ПостроительОтчета; ЗаполнитьНачальныеНастройкиПоМакету(ПолучитьМакет("ПараметрыОтчетовТоварыОрганизаций "), СтруктураПредставлениеПолей, МассивОтбора, ОбщийОтчет, "СписокКроссТаблица ");
      - Указание запроса как источник данных построителя отчетов
      Использую универсальные отчеты для формирования пользовательских выходных форм, можно составить свой запрос и указать его текст как источник для построителя отчетов. Данный метод очень удобен тем, что можно строить запросы, какой угодно сложности и структуре.
      Пример использования:
      ПостроительОтчета.Текст = "ВЫБРАТЬ | ПродажиОбороты.Номенклатура КАК Номенклатура, | ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот |{ВЫБРАТЬ | Номенклатура.*, | ПродажиОбороты.ХарактеристикаНоменклатуры.* |//СВОЙСТВА |} |ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон,) КАК ПродажиОбороты |//СОЕДИНЕНИЯ |СГРУППИРОВАТЬ ПО | ПродажиОбороты.Номеклатура |//СГРУППИРОВАТЬПО |{ГДЕ | ПродажиОбороты.Номенклатура.*, | ПродажиОбороты.ХарактеристикаНоменклатуры.* |//СВОЙСТВА |//КАТЕГОРИИ |} |{УПОРЯДОЧИТЬ ПО | Номенклатура.*, | ПродажиОбороты.ХарактеристикаНоменклатуры.* |//СВОЙСТВА |} |ИТОГИ | СУММА(СтоимостьОборот) |ПО | ОБЩИЕ, | Номенклатура |{ИТОГИ ПО | ПродажиОбороты.Номенклатура.*, | ПродажиОбороты.ХарактеристикаНоменклатуры.* |//СВОЙСТВА |} "
      При формировании запросов, следует соблюдать несколько правил:
      o В запросе можно указать два предопределенных параметра: «ДатаНач» и «ДатаКон», в которые передается значение соответствующих реквизитов отчета. Данные параметры используются для ограничения выборок из данных по периоду.
      o В отчете всегда должны присутствовать общие итоги: «ИТОГИ … ПО ОБЩИЕ»
      o Для того, чтобы можно было управлять настройками отчета из формы настройки, нужно обязательно указывать соответствующие настройки для построителя отчетов, в фигурных кавычках «{» и «}» или на закладке «Построитель» конструктора запросов.
      o В запросе можно указать специальные директивы: «//СВОЙСТВА», «//КАТЕГОРИИ», «//СОЕДИНЕНИЯ», «//СГРУППИРОВАТЬПО». Далее с помощью процедуры «ДобавитьВТекстСвойстваИКатегории» в запрос добавляются выборки полей свойств, категорий объектов.
      Пример использования:
      В запросе, приведенном выше директивой «//СВОЙСТВА» мы указываем на, то что в текст запроса нужно добавить выборку, группировку и условия по свойствам объектов, «//КАТЕГОРИИ» - добавляем условие по категориям, а с помощью «//СОЕДИНЕНИЯ» мы обеспечиваем соединения с регистром сведений «ЗначенияСвойствОбъектов», «//СГРУППИРОВАТЬПО» - группируем по выбранным свойствам объектов
    • Процедуры заполнения полей построителя отчета:
      После того как был сформирован запрос, нужно заполнить соответствующие реквизиты построителя отчетов и общего отчета.
      В массиве «МассивОтбора» вносим массив отборов, для заполнения отборов в построителе отчетов используем процедуру «ЗаполнитьОтбор».
      Если мы планируем использовать свойства и категории мы должны добавить выполнить процедуру «ДобавитьВТекстСвойстваИКатегории».
      Пример использования:
      ДобавитьВТекстСвойстваИКатегории(ТаблицаПолей, Текст, СтруктураПредставлениеПолей, мСоответствиеНазначений, СтруктураПараметры, ТекстИсточникиСведений="", ТекстПоляКатегорий="", ТекстПоляСвойств="", ТекстПоляСгруппироватьПо = "", ЗаменятьСвойства = "//СВОЙСТВА", ЗаменятьКатегории = "//КАТЕГОРИИ", ЗаменятьСоединения = "//СОЕДИНЕНИЯ", ЗаменятьСгруппироватьПо = "//СГРУППИРОВАТЬПО", ИдентификаторыПараметровДляОтборовПоКатегориям = "") Экспорт
      Для заполнения представлений полей «ЗаполнитьПредставленияПолей», также можно воспользоваться процедурой «ЗаполнитьПредставление».
      Пример использования:
      ЗаполнитьПредставление("Номенклатура ", "Номенклатура ", ИСТИНА, ИСТИНА); ЗаполнитьПредставление("ХарактеристикаНоменклатуры ", "Характеристика номенклатуры ", ЛОЖЬ, ЛОЖЬ);
    • Дополнительные процедуры по настройке отчета:
      «ОчиститьДополнительныеПоляПостроителя» - обязательная процедура, удаляет показатели, группировки из реквизита «ПостроительОтчета.ВыбранныеПоля»
      «ОбщийОтчет.ВыводитьПоказателиВСтроку = Истина» - выводит показатели в строку
      «мСтруктураСвязиПоказателейИИзмерений» - заполнить структуру связи показателей и измерений
      Пример использования:
      Нужно выводить показатель «КоличествоОстаток» только для измерения «Номенклатура» и «ХарактеристаНоменклатуры»:
      ОбщийОтчет.мСтруктураСвязиПоказателейИИзмерений.Вставить("КоличествоОстаток ", Новый Структура(«Номенклатура,ХарактеристикаНоменклатуры»));
      Если нужно выводить все итоги независимо от настройки структуры «мСтруктураСвязиПоказателейИИзмерений» устанавливаем следующий реквизит:
      ОбщийОтчет.ВыводитьИтогиПоВсемУровням = Истина
      Если нужно пропустить некоторые группировки, тогда следуют заполнить структуру «мСтруктураНевыводимыхГруппировок».
      Пример использования:
      Нужно выводить измерения «ХарактеристикаНоменклатуры» вместе с измерением «Номенклатура», для этого добавляем следующий вызов функции
      ОбщийОтчет.мСтруктураНевыводимыхГруппировок.Вставить("Номенклатура ",Новый Структура("ХарактеристикаНоменклатуры "));
      В результате в отчет будет выведены измерения разделенные запятой: «Номенклатура, Характеристика номенклатуры»

    • Другие процедуры модуля пользовательского отчета аналогичны процедурам универсальных отчетов b описанны в разделе «Универсальные отчеты». На что стоит обратить внимание так это на параметры в запросе, перед формированием отчета (процедура «СформироватьОтчет») следует указать эти параметры для построителя отчета:
      Пример использования:
      ПостроительОтчета.Параметры.Вставить(ИмяПараметра,ЗначениеПараметра);

    Заключение

    Использовать ОиО и СКТ для формирования пользовательских выходных форм достаточно просто, если правильно составить в конструкторе запрос и передать его построителю, мы получим готовый отчет. Также, большой плюс использования общих отчетов, это унификация вывода данных на форму отчета, гибкие настройки группировок, отборов и сортировки, представления измерний и показателей.
    Практика показывает, что 90% функционала для формирования любой пользовательской формы реализовано в универсальных отчетах, также можно брать за основу уже готовые типовые отчеты и "дорабатывать" их под требования заказчиков.

    Список ссылок

    Ниже приведем список некоторых ссылок на статьи "Книги знаний" (

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

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

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

    Макет поля

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


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

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

    Настройки

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

    Настройки

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

    Настройки

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

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

    Настройки

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


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

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

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

    Настройки

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

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

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

    Настройки

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

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

    Настройки


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

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

    Файлы

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


    В

    Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки данных. Для создания внешнего отчета будем использовать конфигурацию Бухгалтерия 2.0, исходные данные: “Написать отчет по 62 счету бухгалтерского учета в который будут выводится обороты за указанный период в разрезе Контрагентов и Договоров контрагентов .

    1. Создание отчета

    В первую очередь создадим файл внешнего отчета, для этого зайдем в 1с 8 в режиме Конфигуратор , перейдем в меню Файл -> Новый , либо нажмем на пиктограмму Новый документ .

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

    2. Создание макета внешнего отчета

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

    В нашем макете будет 4 области:

    • Шапка — в эту область мы будем выводить наименование отчета, период за который он сформирован и шапку таблицы;
    • ДанныеКонтрагент — в эту область мы будем выводит в таблицу данные по контрагенту;
    • ДанныеДоговорКонтрагента — в эту область мы будем выводит в таблицу данные по договору контрагента;
    • Подвал — в эту область мы будем выводить итоговые значения по всему отчету для полей Приход и Расход.

    Приступим к созданию областей макета. Для того что бы создать область в макете выделите нужное количество строк и нажмите Меню Таблица -> Имена -> Назначить имя (Либо Ctrl + Shift + N ). В область Шапка напишем наименование отчета: Обороты 62 счета , нарисуем при помощи инструмента Границы шапку отчета, а так же зададим параметры НачалоПериода и КонецПериода . При помощи параметров в отчет можно выводить нужные данные, мы будем заниматься эти на следующем этапе разработки, а именно при написании программного кода отчета. Что бы создать параметр в макете выберите нужную ячейку, напишите в ней наименование параметра(без пробелов), щелкните по ней правой кнопкой мыши, в открывшемся меню выберите пункт Свойства . В свойствах ячейки на закладке Макет выберите заполнение Параметр .

    После этого, в ячейке имя параметра будет заключено в угловые скобки(”<>“). В итоге область Шапка должна выглядеть так:

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

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

    В области Подвал создадим параметры для итогов по приходу и расходу.

    В итоге мы должны получить такой макет:

    3. Создание формы отчета

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

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

    В итоге у нас получится вот такая форма:

    Но в таком виде она нас не устраивает, внесем в нее некоторые изменения:

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

    В итоге наша форма будет иметь такой вид:

    4. Программирование

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

    Переключатся между формой и ее модулем можно при помощи закладок внизу формы

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

    Процедура Кнопка1Нажатие(Элемент) РаботаСДиалогами.ОбработчикНастройкаПериодаНажатие(НачалоПериода,КонецПериода); КонецПроцедуры

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

    ТабДок = ЭлементыФормы.ТабДок;

    Получим макет внешнего отчета воспользовавшись функцией ПолучитьМакет(<ИмяМакета>) , в параметр ему передадим имя макета, и если такой макет существует, то функция его найдет.

    Макет = ПолучитьМакет("Макет" );

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

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанныеКонтрагент = Макет.ПолучитьОбласть("ДанныеКонтрагент" ); ОбластьДанныеДоговор = Макет.ПолучитьОбласть("ДанныеДоговор" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );

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

    ТабДок.Очистить();

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

    ОбластьШапка.Параметры.НачалоПериода = НачалоПериода; ОбластьШапка.Параметры.КонецПериода = КонецПериода;

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

    ТабДок.Вывести(ОбластьШапка);

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

    Запрос = новый Запрос;

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

    Запрос.УстановитьПараметр("Счет62" ,ПланыСчетов.Хозрасчетный.НайтиПоКоду("62" ));

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

    Запрос.УстановитьПараметр("НачалоПериода" ,НачалоПериода); Запрос.УстановитьПараметр("КонецПериода" ,КонецПериода);

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

    Запрос.Текст = "" ;

    После этого поставим курсор между кавычками, нажмем правую кнопку мыши и выберем пункт Конструктор запроса. Откроется окно конструктора запроса.

    Теперь необходимо выбрать нужную нам таблицу базы данных 1С 8. Нам необходима виртуальная таблица Обороты регистра бухгалтерии Хозрасчетный . Найдем ее в левой части окна конструктора

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

    Заполним параметры, периода которые мы передали в запрос. Что бы в тексте запроса использовать параметр следует перед его именем писать символ амперсанда(&)

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

    Счет В ИЕРАРХИИ (&Счет62)

    Также можно воспользоваться конструктором составления условий нажав на кнопку с тремя точками.

    Больше никаких условий на виртуальную таблицу налагать не требуется, поэтому нажмем кнопку ОК в окне параметров виртуальной таблицы. Далее необходимо выбрать нужные нам поля из таблицы Хозрасчетной.Обороты (а именно: Контрагент, Договор контрагента, Приход и Расход ). Что бы посмотреть список полей доступных в выбранной нами таблице нажмет символ ”+“ возле ее названия. После этого перетащим нужные поля в самую правую область конструктора запросов, которая так и называется: Поля. Если открыть план счетов бухгалтерского учета, то мы увидим, что для счета 62 аналитика по Контрагенту — это Субконто1 , а по ДоговоруКонтрагента — Субконто2 .

    Поэтому из полей виртуальной таблицы выбираем Субконто1 и Субконто2 . Так как нам необходим приход и расход по сумме, то выбираем также поля СуммаОборотДт и СуммаОборотКт

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

    Так как в нашем отчете данные будут выводиться иерархично(Контрагент на первом уровне, а все его договоры на втором), то настроим вывод данных в иерархии при помощи Итогов. Перейдем в конструкторе на закладку Итоги . В группировочные поля перетащим последовательно Контрагент и ДоговорКонтрагента , а в итоговые Приход и Расход .

    На этом работа в конструкторе запроса завершена, нажимаем кнопку ОК и видим, что текст нашего запроса появился в программном коде.

    Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Субконто1 КАК Контрагент, | ХозрасчетныйОбороты.Субконто2 КАК ДоговорКонтрагента, | ХозрасчетныйОбороты.СуммаОборотДт КАК Приход, | ХозрасчетныйОбороты.СуммаОборотКт КАК Расход |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Счет В ИЕРАРХИИ (&Счет62),) КАК ХозрасчетныйОбороты |ИТОГИ | СУММА(Приход), | СУММА(Расход) |ПО | Контрагент, | ДоговорКонтрагента" ;

    После того как мы закончили написание запроса, приступим к заполнению областей ДанныеКонтрагент , ДанныеДоговорКонтрагент и Подвал . Все эти области мы заполним данными полученными при выполнении запроса. Так как наш запрос содержит группировки(Контрагент и ДоговорКонтрагента ) выберем из него данные следующим образом:

    ВыборкаКонтрагент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Таким образом мы получим записи с итогами по всем контрагентам.

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

    ИтогоПриход = 0; ИтогоРасход = 0;

    Для того чтобы данные отчета выводились с иерархией(и разворотами по ”+“) зададим начало автогруппировки строк табличного документа:

    ТабДок.НачатьАвтогруппировкуСтрок();

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

    Пока ВыборкаКонтрагент.Следующий() Цикл КонецЦикла ;

    В начале цикла обнулим параметры Приход и Расход области ДанныеКонтрагент . Для чего это нужно? Представим ситуацию, что по контрагенту Дядя Вася , приход 10, а расход 5, а для за ним следующего контрагента Дядя Петя нет ни прихода ни расхода, в таком случае если мы не обнулим параметры Приход и Расход , то по в строке по контрагенту Дядя Петя попадет приход 5 и расход 10.

    ОбластьДанныеКонтрагент.Параметры.Приход = 0; ОбластьДанныеКонтрагент.Параметры.Расход = 0;

    После этого заполняем область ДанныеКонтрагент данными элемента выборки

    ЗаполнитьЗначенияСвойств(ОбластьДанныеКонтрагент.Параметры,ВыборкаКонтрагент);

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

    ТабДок.Вывести(ОбластьДанныеКонтрагент,1);

    Теперь для данного контрагента сделаем выборку по его договорам.

    ВыборкаДоговорКонтрагента = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Обход будем осуществлять при помощи цикла Пока .

    Пока ВыборкаДоговорКонтрагента.Следующий() Цикл КонецЦикла ;

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

    ОбластьДанныеДоговор.Параметры.Приход = 0; ОбластьДанныеДоговор.Параметры.Расход = 0; ЗаполнитьЗначенияСвойств(ОбластьДанныеДоговор.Параметры,ВыборкаДоговорКонтрагента); ТабДок.Вывести(ОбластьДанныеДоговор,2);

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

    ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента.Приход; ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента.Расход;

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

    ТабДок.ЗакончитьАвтогруппировкуСтрок();

    Полностью циклы отвечающие за вывод данных в области ДанныеКонтрагент и ДанныеДоговорКонтрагент выглядят так:

    ТабДок.НачатьАвтогруппировкуСтрок(); Пока ВыборкаКонтрагент.Следующий() Цикл ОбластьДанныеКонтрагент.Параметры.Приход = 0 ; ОбластьДанныеКонтрагент.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеКонтрагент.Параметры,ВыборкаКонтрагент); ТабДок.Вывести(ОбластьДанныеКонтрагент,1 ); ВыборкаДоговорКонтрагента = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДоговорКонтрагента.Следующий() Цикл ОбластьДанныеДоговор.Параметры.Приход = 0 ; ОбластьДанныеДоговор.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеДоговор.Параметры,ВыборкаДоговорКонтрагента); ТабДок.Вывести(ОбластьДанныеДоговор,2 ); ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента.Приход; ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента.Расход; КонецЦикла ; КонецЦикла ; ТабДок.ЗакончитьАвтогруппировкуСтрок();

    Осталось вывести итоговые данные в область Подвал и вывести саму область в Табличный документ .

    ОбластьПодвал.Параметры.ИтогоПриход = ИтогоПриход; ОбластьПодвал.Параметры.ИтогоРасход = ИтогоРасход; ТабДок.Вывести(ОбластьПодвал);

    На этом процесс написания внешнего отчета для 1С 8 без использования СКД завершен. Теперь его можно сформировать в режиме 1С:Предприятие 8 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по .

    Смотрите видео по созданию внешней печатной формы для управляемого приложения:

    Песочница

    ювелир 23 августа 2011 в 10:22

    Макеты в 1С 8.2 - это не сложно (Часть 1 - Создание макета)

    • Чулан *

    Допустим, Вам необходимо вывести подобный отчет:

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


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

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

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

    Для каждой области необходимо присвоить соответствующее имя, для этого необходимо выделить нужную область (в данном случае все области представляют собой группы строк) и нажать на кнопку с пиктограммой, или комбинацию клавиш Ctrl+Shift+N. В появившемся окне нужно вписать имя данной области. Назовем области так, как они указаны на рисунке.
    Теперь те ячейки таблицы, в которых должны выводиться данные из информационной базы, необходимо обозначить как содержащие шаблон. Для этого выделяется это поле, и в контекстном меню (правая клавиша мыши) выбирается «Свойства». В выпадающем списке свойства ячейки «Заполнение» необходимо выбрать «Шаблон» (пример на рисунке ниже).

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

    Меня зовут [МоеИмя],

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

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

    Теги: 1С 8, макет, отчеты, макеты

    Данная статья не подлежит комментированию, поскольку её автор ещё не является