Как включить расширенный режим настроек и типовое хранилище вариантов в самописном отчете 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При разработке отчетов на базе системы компоновки данных (СКД) в типовых конфигурациях (таких как «1С:Управление торговлей 11», «1С:ERP», «1С:Комплексная автоматизация» и других решениях на базе Библиотеки стандартных подсистем — БСП) разработчики часто сталкиваются с задачей интеграции отчета в подсистему «Варианты отчетов». Пользователи ожидают увидеть привычный интерфейс: кнопки выбора вариантов, возможность переключения между «Простым» и «Расширенным» режимами настроек, удобное сохранение пользовательских настроек и отправку отчета по расписанию.

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

Причина отсутствия расширенного режима

Проанализируем типовую ошибку: очень часто разработчик по привычке создает в отчете собственную основную форму (ФормаОтчета). При создании индивидуальной управляемой формы платформенные механизмы и типовые обработчики БСП перестают управлять интерфейсом по умолчанию. В результате отчет открывается в упрощенном виде, не имеет команд переключения видов настроек и не использует типовое хранилище вариантов.

Шаг 1. Настройка свойств объекта метаданных

Для корректного подключения отчета к подсистеме БСП выполним базовые настройки в дереве метаданных конфигурации или в свойствах внешнего отчета (.erf):

  1. Отказ от собственной формы: удалим из состава отчета созданную вручную форму или снимем ее назначение в качестве основной. Если у объекта не назначена основная форма, конфигурация автоматически использует типовые формы подсистемы БСП: ОбщаяФорма.ФормаОтчета, ОбщаяФорма.ФормаНастроекОтчета и ОбщаяФорма.ФормаВариантаОтчета.
  2. Установка хранилища вариантов: в палитре свойств объекта найдем свойство Хранилище вариантов и выберем значение ХранилищеВариантовОтчетов. Если оставить это свойство пустым, отчет будет использовать стандартное платформенное хранилище без интеграции со справочником вариантов БСП и разделением прав доступа.
  3. Установка хранилища настроек: в свойстве Хранилище пользовательских настроек отчетов укажем ХранилищеПользовательскихНастроекОтчетов.

Шаг 2. Программное управление поведением формы через модуль объекта

Если нам необходимо переопределить стандартное поведение формы отчета (например, включить автоформирование при открытии или скрыть отдельные команды панели), добавим в модуль объекта отчета экспортную процедуру ОпределитьНастройкиФормы.

Рассмотрим пример реализации процедуры:


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

Шаг 3. Интеграция встроенного отчета в подсистему БСП

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

  1. В модуле менеджера отчета создадим экспортную процедуру настройки вариантов:
    
    Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
    	// Настройка описания и размещения отчета
    	НастройкиОтчета.ОпределитьНастройкиВариантовПоУмолчанию = Истина;
    КонецПроцедуры
    
  2. В общем модуле ВариантыОтчетовПереопределяемый в процедуре НастроитьВариантыОтчетов зарегистрируем наш отчет:
    
    Процедура НастроитьВариантыОтчетов(Настройки)
    	ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИмяНашегоОтчета);
    КонецПроцедуры
    

Шаг 4. Особенности для дополнительных (внешних) отчетов

Если мы разрабатываем внешний отчет (файл с расширением .erf), он также полностью поддерживает типовые режимы БСП при соблюдении следующих условий:

  1. В объекте внешнего отчета не должно быть созданных управляемых форм (используем только схему компоновки данных).
  2. Свойство Хранилище вариантов установлено в ХранилищеВариантовОтчетов.
  3. В модуле объекта реализована экспортная функция СведенияОВнешнейОбработке:
    
    Функция СведенияОВнешнейОбработке() Экспорт
    	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    	ПараметрыРегистрации.Версия = "1.0";
    	ПараметрыРегистрации.БезопасныйРежим = Ложь;
    	
    	Команда = ПараметрыРегистрации.Команды.Добавить();
    	Команда.Представление = "Основной отчет";
    	Команда.Идентификатор = "ОсновнойОтчет";
    	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    	Команда.ПоказыватьОповещение = Ложь;
    	
    	Возврат ПараметрыРегистрации;
    КонецФункции
    

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

Важные нюансы при работе с СКД

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

← На главную