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