Книга знаний

1С:Предприятие / v8 / Типовые конфигурации / УПП 8.0

v8: Использование универсальных отчетов в типовых конфигурациях 1С

Предметом данной статьи является описание универсальных отчетов, которые используются в таких конфигурациях 1C как «Управление торговлей» (УТ), «Управление производственным предприятием» (УПП)Автор статьи: Neco | Редакторы: Мелкий бес
Последняя редакция №15 от 22.05.06 | История
URL: http://kb.mista.ru/article.php?id=230

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


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

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


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

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

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

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

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

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

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


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

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

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

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

  • Элементы формы «ФормаОсновная»:
  • «КоманднаяПанельФормы» – содержит управляющие кнопки формы:
     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% функционала для формирования любой пользовательской формы реализовано в универсальных отчетах, также можно брать за основу уже готовые типовые отчеты и "дорабатывать" их под требования заказчиков.

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


Ниже приведем список некоторых ссылок на статьи "Книги знаний" (http://www.kb.mista.ru) по теме формирования отчетов и запросов:
Книга знаний: v8: Рыба вывода отчета в табличный документ
Книга знаний: v8: Расшифровки в отчетах
Книга знаний: v8: Настройки отчетов
Книга знаний: v8: Конструктор запросов
Книга знаний: v8: Представления в запросах
Книга знаний: v8: Виртуальные таблицы запросов

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2024 | Mista.ru

Яндекс.Метрика