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