Добавление отчетов в типовые конфигурации 1С

Публикация № 1016791

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

Добавление отчетов контекстные отчеты расширения дополнительные подсистема БСП варианты

177
Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

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

Добавить отчет в типовую конфигурацию 1С, построенную на базе БСП, можно одним из следующих способов:

Добавляемый отчет может быть:

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

Общая схема добавления отчетов

 

Варианты отчетов

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

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

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

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

 

Общая сравнительная таблица:

Тип добавления

В основную конфигурацию

В расширение конфигурации

В качестве внешнего отчета

Обновление вспомогательных данных (идентификаторы объектов)

Не требуется

Не требуется

Не требуется

Обновление вспомогательных данных (варианты отчетов)

Требуется

Не требуется

Не требуется

Предопределенные настройки вариантов

Общий модуль: ВариантыОтчетовПереопределяемый

Модуль менеджера отчета

Нет

Возможность добавление обработчиков событий формы

Указывается в общем модуле: ВариантыОтчетовПереопределяемый

Указывается в модуле менеджера отчета:

ПриОпределенииНастроек

Доступна по умолчанию

Описание назначения для контекстного отчета

Модуль менеджера отчета, модуль менеджера объекта назначения

Модуль менеджера отчета

Модель объекта отчета

Описание основного варианта (по умолчанию)

Нет

Свойство отчета «Пояснение»

Нет

Добавление пользовательских вариантов отчета

Есть

Есть

Есть

 

Добавление нового отчета в основную конфигурацию

Рассмотрим добавление отчета в основную конфигурацию. В более старых конфигурациях типа УТ 10.3, УПП все было предельно просто. Добавляешь отчет, выводишь его в меню интерфейса или на панели быстрого доступа, и все работает.

В новых все несколько сложнее, и есть свои нюансы.

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

Однако, в этом случае, отчет не будет виден на специальной панели отчетов, которую предоставляет БСП. Панель открывается при переходе по ссылке «Отчеты по <Наименование раздела>» из каждого раздела системы:

Открыть панель отчетов

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

Обновить идентификаторы можно одним из трех способов:

  1. Запустить 1С Предприятие в режиме обновления ИБ, задав параметр запуска: «ЗапуститьОбновлениеИнформационнойБазы»:

Запуск 1С Предприятия в режиме обновления

 

  1. Увеличить номер версии конфигурации.
  2. Воспользоваться обработкой из состава БСП: «Обновление вспомогательных данных»

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

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

Обновить варианты отчетов

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

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

Настройка вариантов отчетов

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

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

ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ВыручкаИСебестоимостьПродаж);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "ДинамикаПродаж");

 

Объект «ОписаниеОтчета» имеет следующие свойства:

Включен - если свойство имеет значение «ложь», отчет не регистрируется в справочнике «Варианты отчетов».  

ОпределитьНастройкиФормы – свойство определяет наличие в модуле объекта отчета экспортной процедуры «ОпределитьНастройкиФормы». В данной процедуре указывается наличие дополнительных обработчиков для событий модуля формы отчета, которые также должны присутствовать в модуле объекта отчета:

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
    Настройки.События.ПриСозданииНаСервере = Истина;
    Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
    Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина;
    Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
КонецПроцедуры

 

Объект «ОписаниеВарианта» имеет следующие свойства:

Описание - Описание варианта отчета, которое выводится на панели отчетов.

ВидимостьПоУмолчанию - если свойство имеет значение «ложь», вариант не виден по умолчанию в панели отчетов, но в справочнике «Варианты отчетов» он регистрируется.

Размещение – настройка размещения отчета. По умолчанию, коллекция содержит все подсистемы, выбранные для отчета. Можно добавить новые подсистемы для размещения или удалить существующие. Дополнительно, можно указать важность размещения: «Важный» или «СмТакже»:

Подсистема = Метаданные.НайтиПоПолномуИмени("Подсистема.Продажи.Подсистема.ОптовыеПродажи");
ОписаниеВарианта.Размещение.Вставить(Подсистема, «СмТакже»);
Подсистема = Метаданные.НайтиПоПолномуИмени("Подсистема.ФинансовыйРезультатИКонтроллинг.Подсистема.ФинансовыйРезультат");
ОписаниеВарианта.Размещение.Удалить(Подсистема);

ФункциональныеОпции – подключенные к команде вывода варианта отчета функциональные опции:

ОписаниеВарианта.ФункциональныеОпции.Добавить("НеИспользоватьБизнесРегионы");

НастройкиДляПоиска – дополнительные сведения для поиска варианта отчета

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

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

 Предопределенные настройки по умолчанию

 

Добавление нового отчета в расширение конфигурации

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

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

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

Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
      ...
КонецПроцедуры

Все настройки аналогичны тем, которые выполнялись для отчетов основной конфигурации. Отличие только в том, что объект «НастройкиОтчета» уже передан в процедуру в качестве параметра.

Для применения созданных настроек обязательно должен быть установлен параметр «НастроитьВариантыОтчета» в экспортной процедуре модуля менеджера отчета «ПриОпределенииНастроек»:

Процедура ПриОпределенииНастроек(Настройки) Экспорт
     Настройки.НастроитьВариантыОтчета = Истина;
КонецПроцедуры

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

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

Настройки.ОпределитьНастройкиФормы = Истина;

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

Описание отчета по умолчанию

 

Добавление контекстного отчета в основную конфигурацию или в расширение

Алгоритм добавления контекстных отчетов одинаков для отчетов созданных в основной конфигурации и для отчетов, созданных в расширениях.

В обоих случаях, необходимо определить экспортную процедуру «ПриОпределенииНастроек» в модуле менеджера отчета, и указать объекты назначения:

Настройки.ДобавитьКомандыОтчетов = Истина;
Настройки.Размещение.Добавить(Метаданные.Документы.РеализацияТоваров);
Сами команды необходимо описать в отдельной процедуре:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
     Команда = КомандыОтчетов.Добавить();
     Команда.Представление = НСтр("ru = 'Представление команды'");
     Команда.КлючВарианта = "ИдентификаторВариантаОтчета";
КонецПроцедуры

 

Основные свойства команды:

Представление – наименование команды в интерфейсе объекта назначения,

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

 

Дополнительные свойства команды:

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

Порядок - порядок размещения отчета по отношению к другим отчетам.

СочетаниеКлавиш - сочетание клавиш для быстрого открытия отчета (тип «СочетаниеКлавиш».

Пример:

Команда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.B, Ложь, Истина, Истина);

ВидимостьВФормах - используется для указания перечня форм, в которых требуется выводить отчет. По умолчанию, отчет выводится во всех формах объекта, подключенных к БСП.

ФункциональныеОпции - имена функциональных опций, определяющих видимость команды открытия отчета в форме.

УсловияВидимости – дополнительные условия, определяющие видимость команды отчета (массив). Для добавления новых условий рекомендуется использовать процедуру общего модуля «ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено)».

Параметр «Реквизит» - это имя реквизита объекта назначения.

Пример:

ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаОтчета, " Артикул", «»);

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

Ссылка на объект назначения передается в контекстный отчет в качестве параметра формы «ПараметрКоманды». Для указания отбора по переданному значению, необходимо переопределить событие модуля формы отчета «ПриСозданииНаСервере», и добавить значение параметра в структуру «ФормаПараметры.Отбор»:

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
     Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры

Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
     Параметры = ЭтаФорма.Параметры;
     Если Параметры.Свойство("ПараметрКоманды") Тогда
          ЭтаФорма.ФормаПараметры.Отбор.Вставить("Номенклатура", Параметры.ПараметрКоманды);
     КонецЕсли;
КонецПроцедуры

При необходимости можно обработать данные, переданные в свойстве команды «ДополнительныеПараметры»:

Параметры.ОписаниеКоманды.ДополнительныеПараметры

Примечание. Описывать команды для вывода контекстных отчетов можно не только в модуле менеджера самого отчета, но и в модуле менеджера объекта назначения, в экспортной процедуре «ДобавитьКомандыОтчетов». В этом случае, команда должны иметь дополнительный обязательный параметр «Менеджер», в котором необходимо указать полное имя менеджера отчета. Контекстные отчеты в типовых конфигурациях описаны именно таким способом. 

 

Добавление отчетов с помощью механизма внешних отчетов и обработок

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

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

Изменить вариант дополнительного отчета

Возможность добавления в модуль объекта обработчиков событий формы отчета доступна по умолчанию.

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

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

 

На этом все, спасибо за внимание, и за то, что читаете мои статьи J.

 

Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С

  1. Возможности типовых шаблонов БСП ограничения доступа на уровне записей

  2. Новый подход к обмену данными EnterpriseData

  3. EnterpriseData – часть 2. Процесс выгрузки данных

  4. Пример доработки правил конвертации без использования КД 3.0

  5. Использование подсистемы БСП "Заполнение объектов"

 
177

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. nomadon 360 08.03.19 10:13 Сейчас в теме
Может есть пример-шаблончик?
2. ids79 2064 08.03.19 10:44 Сейчас в теме
(1)Какой именно шаблон Вам нужен?
3. ded20ded 08.03.19 18:43 Сейчас в теме
Шаблон для внешних печатных форм, для внешних отчетов.
4. ids79 2064 09.03.19 07:42 Сейчас в теме
(3)По ссылке в статье можно скачать такие шаблоны.
Правда, там не для всех случаев, да и статья уже давно написана.
Выложу статью с актуальными шаблонами доп. отчетов и обработок
в ближайшее время.
6. Sherzod1984 11.03.19 17:20 Сейчас в теме
(4) Добрый день! Дмитрий Иванов, как можно с вами связаться?
19. ids79 2064 24.04.19 19:51 Сейчас в теме
7. chuff 12.03.19 07:28 Сейчас в теме
Узнал кое-что интересное. Только вот "в панелЕ", "на панелЕ" жутко режет глаза
9. ids79 2064 12.03.19 10:02 Сейчас в теме
(7)Самое интересное, я сперва так и написал.
Перед самой модерацией, мне показалось, что правильно именно так.
Еще раз посмотрел, все-таки Вы правы, исправил.
С грамотностью у меня беда, к сожалению.
Спасибо.
10. @Sonya 25 21.03.19 10:31 Сейчас в теме
Может кто сталкивался, при добавлении внешнего отчета, закладка Варианты не появляется. В свойствах отчета выбрано ХранилищеВариантовОтчетов. Что-то еще надо сделать?
11. @Sonya 25 21.03.19 10:56 Сейчас в теме
(10) Отвечаю сама. При регистрации отчета было написано
РегистрационныеДанные.Вставить("Вид", "Отчет");
а не
РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");
12. user599492_oskomleva 27.03.19 13:18 Сейчас в теме
Добрый день, а можно шаблон для отчета через расширение общего? Как присоединить и с какого релиза БСП для регистрации в справочнике достаточно просто Настройки.НастроитьВариантыОтчета = Истина;
Делаю следующие действия (отчет на СКД):
1. Создаю отчет в расширении
2. В свойствах добавляю ХранилищеВариантовОтчетов
3. В модуле Менеджера:

Процедура ПриОпределенииНастроек(Настройки) Экспорт
	
	Настройки.НастроитьВариантыОтчета = Истина;
	
КонецПроцедуры

Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ТестСотрудники");
	НастройкиВарианта.Описание = НСтр("ru = 'Тест сотрудники'");
	
КонецПроцедуры
Показать

после запуска 1С в справочнике отчетов не появляется предопределенного элемента
что делаю не так?
13. user599492_oskomleva 27.03.19 16:43 Сейчас в теме
Закрываю, вопрос. Все заработало.
14. ids79 2064 27.03.19 17:27 Сейчас в теме
(12)Даже если ничего не написать в модуле менеджера, отчет должен появиться в панели отчетов автоматически (если конечно указана подсистема).
15. user599492_oskomleva 27.03.19 18:00 Сейчас в теме
мне нужна не панель отчетов, а в справочнике Отчеты, как предопределенный элемент, иначе на отчет нельзя настроить рассылку.
16. Indifference 28.03.19 08:26 Сейчас в теме
(15)
Добрый день! Подскажите, пожалуйста, что вы все таки сделали чтобы отчет появился в предопределенных? В модуль менеджера вообще не заходит ни в одну процедуру.
18. yefalex 24.04.19 14:25 Сейчас в теме
(16) По вышеприведенному описанию для отчетов в расширении тоже не заработало, т.к. описано не совсем точно.
Сделал согласно документации БСП

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

#Область ПрограммныйИнтерфейс
// Определяет состав программного интерфейса для интеграции с конфигурацией.
//
// Параметры:
//   Настройки - Структура - Настройки интеграции этого объекта.
//       См. возвращаемое значение функции ПодключаемыеКоманды.НастройкиПодключаемыхОтчетовИОбработок().
//
Процедура ПриОпределенииНастроек(Настройки) Экспорт
    Настройки.Размещение.Добавить(Метаданные.Документы.ИмяДокумента);
    Настройки.ДобавитьКомандыОтчетов = Истина;
КонецПроцедуры
// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - ТаблицаЗначений - Таблица с командами отчетов. Для изменения.
//       См. описание 1 параметра процедуры ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов().
//   Параметры - Структура - Вспомогательные параметры. Для чтения.
//       См. описание 2 параметра процедуры ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов().
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
#КонецОбласти
Показать
17. user599492_oskomleva 28.03.19 10:22 Сейчас в теме
https://help1c.by/podklyuchenie-novogo-otcheta-k-podsisteme-variantov-otcheta/
пункт 5 , нашла в конфигураторе подобную процедуру дополнила обращением в модуль менеджера своего отчета в расширении с директивой & После
а так все как описано выше, единственное отчет появляется в предопределенных с именем, которое в настройках СКД в графе представление.
Вариант для расширения вместо Описания использовать свойство "Пояснение" почему-то не сработало...
Прикрепленные файлы:
20. Alex1053669 3 18.06.19 23:55 Сейчас в теме
Статья очень пригодилась.
AlexandrSmith; +1 Ответить
21. AlexandrSmith 28 18.06.19 23:57 Сейчас в теме
Да, хорошая статья.
Alex1053669; +1 Ответить
Оставьте свое сообщение