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