Речь пойдет об отчетах, созданных на базе СКД (на всякий случай пишу, если еще остались люди, которые делают отчеты не на СКД).
Добавить отчет в типовую конфигурацию 1С, построенную на базе БСП, можно одним из следующих способов:
Добавляемый отчет может быть:
- Общий (без привязки к какому-либо объекту)
- Контекстный (с привязкой к объекту или нескольким объектам)
Вроде все должно быть просто и интуитивно понятно, но есть нюансы, и в каждом случае добавление происходит по разному. В общем, разработчики БСП и других типовых продуктов не дают соскучиться J.
Варианты отчетов
Прежде чем приступить к описанию добавления отчетов, хочется сказать несколько слов о вариантах.
Варианты отчетов — это встроенный механизм СКД, который позволяет создавать для отчета произвольное количество предопределенных и пользовательских вариантов. По своей сути варианты – это отдельные отчеты, созданные на базе одной и той же системы компоновки данных.
Существует отдельная подсистема БСП, для управления вариантами отчетов, которая встроена во все типовые конфигурации. Подсистема предоставляет общее хранилище вариантов, общие формы для вывода и настройки отчетов, механизмы для отображения отчетов – формирование специальных панелей для каждого раздела системы. Пользователь может управлять настройками предопределенных вариантов отчетов, создавать и настраивать собственные варианты в режиме 1С Предприятие. Также подсистема позволяет создавать контекстные отчеты, привязанные к определенным объектам метаданных.
Для каждого отчета существует основной предопределенный вариант. В дальнейшем, говоря об отчете, я буду подразумевать именно его основной вариант.
Общая сравнительная таблица:
Тип добавления |
В основную конфигурацию |
В расширение конфигурации |
В качестве внешнего отчета |
Обновление вспомогательных данных (идентификаторы объектов) |
Не требуется |
Не требуется |
Не требуется |
Обновление вспомогательных данных (варианты отчетов) |
Требуется |
Не требуется |
Не требуется |
Предопределенные настройки вариантов |
Общий модуль: ВариантыОтчетовПереопределяемый |
Модуль менеджера отчета |
Нет |
Возможность добавление обработчиков событий формы |
Указывается в общем модуле: ВариантыОтчетовПереопределяемый |
Указывается в модуле менеджера отчета: ПриОпределенииНастроек |
Доступна по умолчанию |
Описание назначения для контекстного отчета |
Модуль менеджера отчета, модуль менеджера объекта назначения |
Модуль менеджера отчета |
Модель объекта отчета |
Описание основного варианта (по умолчанию) |
Нет |
Свойство отчета «Пояснение» |
Нет |
Добавление пользовательских вариантов отчета |
Есть |
Есть |
Есть |
Добавление нового отчета в основную конфигурацию
Рассмотрим добавление отчета в основную конфигурацию. В более старых конфигурациях типа УТ 10.3, УПП все было предельно просто. Добавляешь отчет, выводишь его в меню интерфейса или на панели быстрого доступа, и все работает.
В новых все несколько сложнее, и есть свои нюансы.
Для того, чтобы отчет выводился в основном окне раздела в группе «Отчеты», достаточно просто включить отчет в необходимую подсистему.
Однако, в этом случае, отчет не будет виден на специальной панели отчетов, которую предоставляет БСП. Панель открывается при переходе по ссылке «Отчеты по <Наименование раздела>» из каждого раздела системы:
Отчеты выводятся с разбивкой по подгруппам согласно иерархии подсистем, и имеют описания. Причем, могут быть выведены несколько вариантов одного и того же отчета. Если просто добавить отчет в конфигурацию и включить в нужную подсистему, отчет не будет виден в указанной панели. Отчет будет доступен только в группе «Отчеты» основного окна раздела. Кстати, не так давно, он бы даже не работал, пока не будут обновлены идентификаторы объектов метаданных.
Обновить идентификаторы можно одним из трех способов:
- Запустить 1С Предприятие в режиме обновления ИБ, задав параметр запуска: «ЗапуститьОбновлениеИнформационнойБазы»:
- Увеличить номер версии конфигурации.
- Воспользоваться обработкой из состава БСП: «Обновление вспомогательных данных»
В текущих версиях, идентификаторы обновляются при запуске 1С в пользовательском режиме автоматически. Наконец-то разработчики сделали это, слава богам!
Однако, для того, чтобы отчет, добавленный в основную конфигурацию появился на панели отчетов, все же необходимо обновить вспомогательные данные вручную, выбрав пункт «Варианты отчетов»:
После выполнения этих действия, отчет будет добавлен в специальные справочники: «Варианты отчетов» и «Предопределенные варианты отчетов», и его основной вариант будет виден в панелях отчетов согласно указанной подсистемы.
Конечно, все дальнейшие настройки, такие как добавление описания, вывод отчета или других его вариантов в другие подразделы или панели отчетов, можно выполнить непосредственно в пользовательском режиме, перейдя по ссылке «Все отчеты»:
Но, более правильно указать основные (предопределенные) настройки в конфигурации. Тем более, что некоторые виды настроек, например видимость варианта отчета в зависимости от функциональных опций, нельзя настроить в пользовательском режиме.
Настройки вариантов отчетов задаются в процедуре общего модуля: «ВариантыОтчетовПереопределяемый >> НастроитьВариантыОтчетов». Здесь описаны все типовые отчеты и их варианты. Все настройки необходимо создавать для двух объектов: «Описание отчета» и «Описание варианта», которые можно получить из общего списка настроек, переданных в процедуру:
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ВыручкаИСебестоимостьПродаж);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "ДинамикаПродаж");
Объект «ОписаниеОтчета» имеет следующие свойства:
Включен — если свойство имеет значение «ложь», отчет не регистрируется в справочнике «Варианты отчетов».
ОпределитьНастройкиФормы – свойство определяет наличие в модуле объекта отчета экспортной процедуры «ОпределитьНастройкиФормы». В данной процедуре указывается наличие дополнительных обработчиков для событий модуля формы отчета, которые также должны присутствовать в модуле объекта отчета:
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина;
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
КонецПроцедуры
Объект «ОписаниеВарианта» имеет следующие свойства:
Описание — Описание варианта отчета, которое выводится на панели отчетов.
ВидимостьПоУмолчанию — если свойство имеет значение «ложь», вариант не виден по умолчанию в панели отчетов, но в справочнике «Варианты отчетов» он регистрируется.
Размещение – настройка размещения отчета. По умолчанию, коллекция содержит все подсистемы, выбранные для отчета. Можно добавить новые подсистемы для размещения или удалить существующие. Дополнительно, можно указать важность размещения: «Важный» или «СмТакже»:
Подсистема = Метаданные.НайтиПоПолномуИмени("Подсистема.Продажи.Подсистема.ОптовыеПродажи");
ОписаниеВарианта.Размещение.Вставить(Подсистема, «СмТакже»);
Подсистема = Метаданные.НайтиПоПолномуИмени("Подсистема.ФинансовыйРезультатИКонтроллинг.Подсистема.ФинансовыйРезультат");
ОписаниеВарианта.Размещение.Удалить(Подсистема);
ФункциональныеОпции – подключенные к команде вывода варианта отчета функциональные опции:
ОписаниеВарианта.ФункциональныеОпции.Добавить("НеИспользоватьБизнесРегионы");
НастройкиДляПоиска – дополнительные сведения для поиска варианта отчета
Для вступления настроек в силу, требуется обновить вспомогательные данные, выбрав пункт «Варианты отчетов».
В пользовательском режиме, можно переопределить эти настройки для текущего пользователя или всех пользователей системы. Тем не менее, всегда остается возможность вернуться к предопределенным настройкам, заданным в конфигурации:
Добавление нового отчета в расширение конфигурации
На первый взгляд, добавление отчета в расширении не должно отличаться от его добавления в основную конфигурацию, но это не так.
Во-первых, для того, чтобы отчет был виден на панели отчетов, не нужно выполнять обновление вспомогательных данных. Необходимая информация в справочники: «Варианты отчетов» и «Предопределенные варианты отчетов» добавляется автоматически, при начале работы системы. Я думаю логика разработчиков следующая: расширение может подключить обычный пользователь в режиме 1С Предприятия. И он не должен знать о необходимости обновлении вспомогательных данных.
Для отчетов, добавленных в расширениях, также существует возможность описания предопределенных настроек: описание, подсистемы, функциональные опции. Однако, эти настройки выполняются не в переопределяемом общем модуле, а непосредственно в модуле менеджера отчета:
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
...
КонецПроцедуры
Все настройки аналогичны тем, которые выполнялись для отчетов основной конфигурации. Отличие только в том, что объект «НастройкиОтчета» уже передан в процедуру в качестве параметра.
Для применения созданных настроек обязательно должен быть установлен параметр «НастроитьВариантыОтчета» в экспортной процедуре модуля менеджера отчета «ПриОпределенииНастроек»:
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.НастроитьВариантыОтчета = Истина;
КонецПроцедуры
Если флаг установлен, предопределенные настройки обновляются автоматически, без необходимости обновления вспомогательных данных.
В этой же процедуре указывается наличие дополнительных обработчиков событий модуля формы отчета:
Настройки.ОпределитьНастройкиФормы = Истина;
На заметку. Для отчетов созданных в расширениях, есть возможность указания описания для основного варианта без использования менеджера отчета. Для задания описания «по умолчанию» используется свойство отчета «Пояснение»:
Добавление контекстного отчета в основную конфигурацию или в расширение
Алгоритм добавления контекстных отчетов одинаков для отчетов созданных в основной конфигурации и для отчетов, созданных в расширениях.
В обоих случаях, необходимо определить экспортную процедуру «ПриОпределенииНастроек» в модуле менеджера отчета, и указать объекты назначения:
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.ДобавитьКомандыОтчетов = Истина;
Настройки.Размещение.Добавить(Метаданные.Документы.РеализацияТоваров);
КонецПроцедуры
Сами команды необходимо описать в отдельной процедуре:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Команда = КомандыОтчетов.Добавить();
Команда.Представление = НСтр("ru = 'Представление команды'");
Команда.КлючВарианта = "ИдентификаторВариантаОтчета";
КонецПроцедуры
Основные свойства команды:
Представление – наименование команды в интерфейсе объекта назначения,
КлючВарианта – идентификатор варианта отчета компоновки данных, который требуется запустить.
Дополнительные свойства команды:
Важность — группы в подменю «Отчеты», в которой следует вывести команду открытия отчета. Доступные значения: "Важное", "Обычное" и "СмТакже".
Порядок — порядок размещения отчета по отношению к другим отчетам.
СочетаниеКлавиш — сочетание клавиш для быстрого открытия отчета (тип «СочетаниеКлавиш».
Пример:
Команда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.B, Ложь, Истина, Истина);
ВидимостьВФормах — используется для указания перечня форм, в которых требуется выводить отчет. По умолчанию, отчет выводится во всех формах объекта, подключенных к БСП.
ФункциональныеОпции — имена функциональных опций, определяющих видимость команды открытия отчета в форме.
УсловияВидимости – дополнительные условия, определяющие видимость команды отчета (массив). Для добавления новых условий рекомендуется использовать процедуру общего модуля «ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено)».
Параметр «Реквизит» — это имя реквизита объекта назначения.
Пример:
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаОтчета, " Артикул", «»);
ДополнительныеПараметры – можно указать дополнительные параметры, и потом их обработать в переопределенном обработчике события модуля формы отчета «ПриСозданииНаСервере».
Ссылка на объект назначения передается в контекстный отчет в качестве параметра формы «ПараметрКоманды». Для указания отбора по переданному значению, необходимо переопределить событие модуля формы отчета «ПриСозданииНаСервере», и добавить значение параметра в структуру «ФормаПараметры.Отбор»:
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры
Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
Параметры = ЭтаФорма.Параметры;
Если Параметры.Свойство("ПараметрКоманды") Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("Номенклатура", Параметры.ПараметрКоманды);
КонецЕсли;
КонецПроцедуры
При необходимости можно обработать данные, переданные в свойстве команды «ДополнительныеПараметры»:
Параметры.ОписаниеКоманды.ДополнительныеПараметры
Примечание. Описывать команды для вывода контекстных отчетов можно не только в модуле менеджера самого отчета, но и в модуле менеджера объекта назначения, в экспортной процедуре «ДобавитьКомандыОтчетов». В этом случае, команда должны иметь дополнительный обязательный параметр «Менеджер», в котором необходимо указать полное имя менеджера отчета. Контекстные отчеты в типовых конфигурациях описаны именно таким способом.
Добавление отчетов с помощью механизма внешних отчетов и обработок
Процесс добавления общих и контекстных отчетов с использованием механизма дополнительных отчетов и обработок подробно описан во многих статьях, например в этой .
Я не думаю, что у кого-то возникают сложности при добавлении отчетов таким способом. Отмечу лишь, что в данном случае не нужно обновлять вспомогательные данные. Также, нет возможности указания предопределенных настроек для вариантов отчета. Все настройки вариантов указываются в пользовательском режиме, прямо в форме элемента дополнительного отчета:
Возможность добавления в модуль объекта обработчиков событий формы отчета доступна по умолчанию.
Если я ошибаюсь, и существуют вопросы и непонятные моменты в работе механизма дополнительных отчетов и обработок, пишите в комментариях, и я напишу отдельную статью на эту тему.
Дополнительно хочу отметить, что варианты отчетов, созданные в пользовательском режиме настраиваются одинаково для любого из способов добавления основного отчета.
На этом все, спасибо за внимание, и за то, что читаете мои статьи J.
Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С
-
Возможности типовых шаблонов БСП ограничения доступа на уровне записей
-
Новый подход к обмену данными EnterpriseData
-
EnterpriseData – часть 2. Процесс выгрузки данных
-
Пример доработки правил конвертации без использования КД 3.0
-
Использование подсистемы БСП "Заполнение объектов"
Может есть пример-шаблончик?
(1)Какой именно шаблон Вам нужен?
Шаблон для внешних печатных форм, для внешних отчетов.
(3)По ссылке в статье можно скачать такие шаблоны.
Правда, там не для всех случаев, да и статья уже давно написана.
Выложу статью с актуальными шаблонами доп. отчетов и обработок
в ближайшее время.
(4) Добрый день! Дмитрий Иванов, как можно с вами связаться?
Узнал кое-что интересное. Только вот «в панелЕ», «на панелЕ» жутко режет глаза
(7)Самое интересное, я сперва так и написал.
Перед самой модерацией, мне показалось, что правильно именно так.
Еще раз посмотрел, все-таки Вы правы, исправил.
С грамотностью у меня беда, к сожалению.
Спасибо.
Может кто сталкивался, при добавлении внешнего отчета, закладка Варианты не появляется. В свойствах отчета выбрано ХранилищеВариантовОтчетов. Что-то еще надо сделать?
(10) Отвечаю сама. При регистрации отчета было написано
РегистрационныеДанные.Вставить(«Вид», «Отчет»);
а не
РегистрационныеДанные.Вставить(«Вид», «ДополнительныйОтчет»);
Добрый день, а можно шаблон для отчета через расширение общего? Как присоединить и с какого релиза БСП для регистрации в справочнике достаточно просто Настройки.НастроитьВариантыОтчета = Истина;
Делаю следующие действия (отчет на СКД):
1. Создаю отчет в расширении
2. В свойствах добавляю ХранилищеВариантовОтчетов
3. В модуле Менеджера:
Показать
после запуска 1С в справочнике отчетов не появляется предопределенного элемента
что делаю не так?
Закрываю, вопрос. Все заработало.
(12)Даже если ничего не написать в модуле менеджера, отчет должен появиться в панели отчетов автоматически (если конечно указана подсистема).
мне нужна не панель отчетов, а в справочнике Отчеты, как предопределенный элемент, иначе на отчет нельзя настроить рассылку.
(15)
Добрый день! Подскажите, пожалуйста, что вы все таки сделали чтобы отчет появился в предопределенных? В модуль менеджера вообще не заходит ни в одну процедуру.
пункт 5 , нашла в конфигураторе подобную процедуру дополнила обращением в модуль менеджера своего отчета в расширении с директивой & После
а так все как описано выше, единственное отчет появляется в предопределенных с именем, которое в настройках СКД в графе представление.
Вариант для расширения вместо Описания использовать свойство «Пояснение» почему-то не сработало…
(16) По вышеприведенному описанию для отчетов в расширении тоже не заработало, т.к. описано не совсем точно.
Сделал согласно документации БСП
Кроме того, команды отчетов можно задавать в самих отчетах конфигурации (и в отчетах расширений конфигурации). Для этого отчет нужно включить в состав подсистемы ПодключаемыеОтчетыИОбработки и в его модуле менеджера в области ПрограммныйИнтерфейс определить процедуры ПриОпределенииНастроек и ДобавитьКомандыЗаполнения. Подробнее см. пукнт Подключение отчетов и обработок к механизмам конфигурации документации подсистемы Подключаемые команды. Пример:
Показать
(6) 8 916 5166380
Статья очень пригодилась.
(20) Спасибо, значит не зря писал
(21)Спасибо
(18) Добрый день. Не помог и «ваш» вариант, для того чтобы в пользовательском режиме у отчета из расширения отобразить варианты отчета. Всё также доступен только один вариант. Может быть у вас припасено ещё пара тузов в рукаве?
Разобрался, расширение подключено в безопасном режиме. От этого и не удается перехватить НастроитьВариантыОтчетов.
Спасибо за статью.
(18) Да, Вы правы. Добавление в подсистему «ПодключаемыеОтчетыИОбработки» — обязательно.
(17)Похоже, что Вы подключаете отчет не в расширении, а в основной конфигурации. В описании, которое Вы приводите, отчет в конфигурацию добавляется.
«Вариант для расширения вместо Описания использовать свойство «Пояснение» — это только для расширений работает.
(25)Ну да, по этому и не заходит в модуль менеджера.
Подскажите, пожалуйста, как убрать отчет из основного окна раздела «Отчеты», после того как он добавлен на специальную панель отчетов.
(29)Можно исключить отчет из подсистемы, в разделе которой он выводится.
(30) Да, в командном интерфейсе надо было снять галку. Спасибо.
Где это окно Вспомогательные данные, чтобы выбрать обновление вариантов отчетов?
(32)Обработка «Обновление вспомогательных данных» из состава БСП
На общей форме ФормаОтчета автоматически создаются элементы из быстрого доступа (параметры, отборы).
Есть ли способ навесить свой обработчик на какое-нибудь из таких полей?
Допустим нам надо после установки параметра каким-нибудь образом его обработать. Например пользователь ввёл дату, а мы дописали время 08:00.
В модуле ОтчетыКлиентПереопределяемый обработчиков совсем мало. Хотелось бы обойтись без копирования и изменения общей формы.
(34)Да, только добавлять свою форму в отчет и ее модифицировать. Там как раз вывод быстрых пользовательских настроек программно делается.
Есть такая функция
Функция ВариантыОтчетов.НастройкиФормыОтчета(ОтчетСсылка, КлючВарианта, ОтчетОбъект) Экспорт
в ней код
ОтчетыСНастройками — содержит список типовых отчетов, «свои» отчеты никак не добавляются в него, соответственно там выход из процедуры дальше и функционал ФормыОтчета наполовину не используется, может кто сталкивался ?
всё из статьи уже перепробовал, понял что этот список хранится в виде хранилища значения в настройках, а вот где и когда он перезаполняется …
(36)Для начала попробуйте запустить обработку «Обновление вспомогательных данных» из состава БСП
(37)
да запускал я, конечно, и эту обработку и конфигуратор с параметром ЗапуститьОбновлениеИнформационнойБазы
Убеждался в отладчике, что в процедуру отчета
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
программа заходит
однако озвученный массив так и не изменился, еще забыл озвучить, что в справочнике ВыриантыОтчетов все прописалось, появилось с интерфейса открывается.
Вообщем появилось время разобрался отвечу сам на свой вопрос:
я написал
так делать нельзя — тут создается переменная НастройкиВарианта, не особо понятно зачем она вообще нужна т.к. если смотреть в отладчике значения приравненные таким образом не оказывают влияние на параметры процедуры
нужно писать так: (в типовых тоже так написано)
тогда всё ок, смотрел изначально совсем в другую сторону поэтому в первый вопрос не добавил этот код )
(36)
Работаю с ERP, ситуация похожая. Есть ФормаОтчета(типовая), процедура ПриСозданииНаСервере. При выполнении условия:
Если ВариантыОтчетовПовтИсп.Параметры().ОтчетыСНастройками.Найти(НастройкиОтчета.ОтчетСсылка) <> Неопределено управление передается в процедуру ПриСозданииНаСервере модуля объекта моего отчета. Но он не передается, потому что в массиве ОтчетыСНастройками находятся только типовые отчеты.
Идей тоже пока нет, если вами будет найдено решение — пожалуйста отпишитесь, выручите сильно.
Что я делаю не так?
https://forum.infostart.ru/forum29/topic231078/
(41)А у Вас сама подсистема и отчет в ней отображаются? Отчет не отображается только в панели отчетов?
(42)Дмитрий, здравствуйте! Очень познавательная статья. Так как в документации БСП в примере по процедуре «ПриОпределенииНастроек», ничего не сказано, что ее нужно добавлять в модуль менеджера, но вы смогли догадаться, и на самом деле работает. Скажите пожалуйста откуда вы смогли почерпнуть информацию?
(43)Если Вы про контекстные отчеты, то это есть в описании БСП, не помню точно уже, где именно.
(44)Да, нашел, спасибо!