Определение параметров СКД при открытии отчета в БСП
Здравствуйте!
В ЗУП 3.1 пытаюсь понять, как в типовых отчетах определяется параметр КлючВарианта.
Обнаружил, что этот параметр, если проверять его из ФормыОтчета в обработчике события ПередЗагрузкойВариантаНаСервере еще не определен, а в обработчике события ПриЗагрузкеВариантаНаСервере уже определен
проверял при помощи функции
В обработчик ПередЗагрузкойВариантаНаСервере передаются настройки в которых параметр КлючВарианта определен.
Как так сделать кто-нибудь может подсказать?
В ЗУП 3.1 пытаюсь понять, как в типовых отчетах определяется параметр КлючВарианта.
Обнаружил, что этот параметр, если проверять его из ФормыОтчета в обработчике события ПередЗагрузкойВариантаНаСервере еще не определен, а в обработчике события ПриЗагрузкеВариантаНаСервере уже определен
проверял при помощи функции
ОтчетыКлиентСервер.ПолучитьПараметр(ЭтотОбъект.Отчет.КомпоновщикНастроек, "КлючВарианта").Значение
В обработчик ПередЗагрузкойВариантаНаСервере передаются настройки в которых параметр КлючВарианта определен.
Как так сделать кто-нибудь может подсказать?
По теме из базы знаний
- Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
- Подсистема "Варианты отчетов". Используете ли Вы ее правильно?
- Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
- Отчеты с общей формой отчета. Типовые сценарии
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
В общих формах есть форма "ФормаОтчета" посмотри событие - ПриСозданииНаСервере
В общих формах есть форма "ФормаОтчета" посмотри событие - ПриСозданииНаСервере
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
// Определение ключевых параметров отчета.
РежимРасшифровки = (Параметры.Свойство("Расшифровка") И Параметры.Расшифровка <> Неопределено);
ПравоВывода = ПравоДоступа("Вывод", Метаданные);
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетМетаданные = ОтчетОбъект.Метаданные();
ОтчетПолноеИмя = ОтчетМетаданные.ПолноеИмя();
ПредопределенныеВарианты = Новый СписокЗначений;
Если ОтчетОбъект.СхемаКомпоновкиДанных <> Неопределено Тогда
Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
ПредопределенныеВарианты.Добавить(Вариант.Имя, Вариант.Представление);
КонецЦикла;
КонецЕсли;
ВариантыПанелиКлючТекущегоВарианта = " - ";
Если ЗначениеЗаполнено(Параметры.КлючВарианта) Тогда
КлючТекущегоВарианта = Параметры.КлючВарианта;
Иначе
КлючТекущегоВарианта = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(ОтчетПолноеИмя + "/КлючТекущегоВарианта", "");
КонецЕсли;
Если Не ЗначениеЗаполнено(КлючТекущегоВарианта) И ПредопределенныеВарианты.Количество() > 0 Тогда
КлючТекущегоВарианта = ПредопределенныеВарианты[0].Значение;
КонецЕсли;
// Предварительная инициализация компоновщика (если требуется).
АдресСхемы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "АдресСхемы");
Если РежимРасшифровки И ТипЗнч(Параметры.Расшифровка) = Тип("ОписаниеОбработкиРасшифровкиКомпоновкиДанных") Тогда
НовыеНастройкиКД = ПолучитьИзВременногоХранилища(Параметры.Расшифровка.Данные).Настройки;
АдресСхемы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НовыеНастройкиКД.ДополнительныеСвойства, "АдресСхемы");
КонецЕсли;
Если ТипЗнч(АдресСхемы) = Тип("Строка") И ЭтоАдресВременногоХранилища(АдресСхемы) Тогда
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
Если ТипЗнч(СхемаКомпоновкиДанных) = Тип("СхемаКомпоновкиДанных") Тогда
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Иначе
АдресСхемы = ПоместитьВоВременноеХранилище(ОтчетОбъект.СхемаКомпоновкиДанных, УникальныйИдентификатор);
КонецЕсли;
Иначе
АдресСхемы = ПоместитьВоВременноеХранилище(ОтчетОбъект.СхемаКомпоновкиДанных, УникальныйИдентификатор);
КонецЕсли;
// Сохранение параметров открытия формы.
ФормаПараметры = Новый Структура(
"КлючНазначенияИспользования, КлючПользовательскихНастроек,
|СформироватьПриОткрытии, ТолькоПросмотр,
|ФиксированныеНастройки, Раздел, Подсистема, ПодсистемаПредставление");
ЗаполнитьЗначенияСвойств(ФормаПараметры, Параметры);
ФормаПараметры.Вставить("Отбор", Новый Структура);
Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ФормаПараметры.Отбор, Параметры.Отбор, Истина);
Параметры.Отбор.Очистить();
КонецЕсли;
// Определение настроек отчета.
ТипОтчетаСтрокой = ВариантыОтчетовКлиентСервер.ТипОтчета(Параметры.Отчет, Истина);
Если ТипОтчетаСтрокой = Неопределено Тогда
Информация = ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(ОтчетПолноеИмя);
Параметры.Отчет = Информация.Отчет;
КонецЕсли;
НастройкиОтчета = ВариантыОтчетов.НастройкиФормыОтчета(Параметры.Отчет, КлючТекущегоВарианта, ОтчетОбъект);
НастройкиОтчета.Вставить("РазрешеноВыбиратьВарианты", Истина);
НастройкиОтчета.Вставить("СхемаМодифицирована", Ложь);
НастройкиОтчета.Вставить("ПредопределенныеВарианты", ПредопределенныеВарианты);
НастройкиОтчета.Вставить("АдресСхемы", АдресСхемы);
НастройкиОтчета.Вставить("КлючСхемы", "");
НастройкиОтчета.Вставить("Контекстный", ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") И ФормаПараметры.Отбор.Количество() > 0);
НастройкиОтчета.Вставить("ПолноеИмя", ОтчетПолноеИмя);
НастройкиОтчета.Вставить("Наименование", СокрЛП(ОтчетМетаданные.Представление()));
НастройкиОтчета.Вставить("ОтчетСсылка", Параметры.Отчет);
НастройкиОтчета.Вставить("Внешний", ТипЗнч(НастройкиОтчета.ОтчетСсылка) = Тип("Строка"));
НастройкиОтчета.Вставить("Безопасный", БезопасныйРежим() <> Ложь);
ОбновитьИнформациюОВариантеОтчета();
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(НастройкиОтчета, ВариантыОтчетов.ПараметрыКлиента());
Показать
Мне нужно не влезая в код типовой формы определить параметр, не знаю в каких событиях это искать. Мой отчет добавлен в подсистему ВариантыОтчетов и использует эту типовую форму. Я в нем в параметрах СКД добавил параметр КлючВарианта, но когда в модуле объекта ПриКомпоновкеРезультата проверяю этот параметр он пустой. Соответственно его надо определять. Полез смотреть, как делают в типовых отчетах, там в какой-то момент при открытии формы отчета это происходит.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот