БСП: Программный вызов отчета конфигурации с ПОЛЬЗОВАТЕЛЬСКИМИ настройками

1. bvb 9 09.09.25 12:15 Сейчас в теме
Добрый день

Мне нужно программно вызвать определённый отчет из конфигурации с предустановленной ПОЛЬЗОВАТЕЛЬСКОЙ настройкой.

Это настройка типа - корпоративный стандарт

Если это написанный мной отчет из расширения и настройка предопределена в схеме компоновки данных я поступаю так :

&НаСервереБезКонтекста
Функция ЕстьТакойОтчет(ИмяОтчета)

Возврат Метаданные.Отчеты.Найти(ИмяОтчета) <> Неопределено;

КонецФункции


&НаКлиенте
Процедура ОткрытьОтчетПоказателя(Команда)


Если ЕстьТакойОтчет (СокрЛП(ИмяМоегоОтчета)) Тогда
ФормаОтчета = ПолучитьФорму("Отчет." + СокрЛП(ИмяМоегоОтчета) + ".Форма");
ФормаОтчета.УстановитьТекущийВариант(СокрЛП(МойВариантОтчета));
ФормаОтчета.Открыть();
КонецЕсли;
КонецПроцедуры

А как быть если нужно вызвать типовой отчет конфигурации (например «Запасы») и есть его пользовательская настройка (сохраненная для всех) ?
С названием пусть будет например – «(STL) Отчет для бухгалтера»
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Miket78 47 09.09.25 14:18 Сейчас в теме
Тоже интересует этот вопрос. УТ 11.5. Добавил вознаграждение.
3. uk09 30.09.25 13:38 Сейчас в теме
Добрый день!
Можно таким способом:
&НаСервереБезКонтекста
Функция НайтиВариантОтчетаПоИмени(ИмяВариантаОтчета)
	ВариантОтчета = Справочники.ВариантыОтчетов.НайтиПоНаименованию(ИмяВариантаОтчета);
	Возврат ВариантОтчета;
КонецФункции

&НаКлиенте
Процедура ВызватьФормуОтчета(Команда)
	ИмяВариантаОтчета = "Ведомость по товарам на складах на текущую дату";
// Поле имени ВариантаОтчета нужно разместить на форме
	ВариантОтчета = НайтиВариантОтчетаПоИмени(ИмяВариантаОтчета);
	Если ВариантОтчета <> Неопределено Тогда
		Форма = ПолучитьФорму("Отчет.ВедомостьПоТоварамНаСкладах.Форма");
		Для Каждого Стр Из Форма.ДобавленныеВарианты Цикл
			Если Стр.Ссылка = ВариантОтчета Тогда
				КлючВарианта = Стр.КлючВарианта;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Форма.УстановитьТекущийВариант(КлючВарианта);
		Форма.Открыть();
	Иначе
		ПоказатьПредупреждение(,"Вариант отчета не найден! Измените условия поиска", 15, "Ошибка         выбора условий отчета");
	КонецЕсли;
КонецПроцедуры

Показать
VyacheslavShilov; vv2; +2 Ответить
4. MissionOnly 15 30.09.25 13:47 Сейчас в теме
(3)
Форма.ДобавленныеВарианты
- это что за объект? Как про него почитать?
5. uk09 30.09.25 13:54 Сейчас в теме
(4) Объект - ДанныеФормыКоллекция
Варианты отчета с ключами
Прикрепленные файлы:
6. MissionOnly 15 30.09.25 13:57 Сейчас в теме
(5) Спасибо - интересно. Похоже, рабочий вариант. Думаю, SM - ваши.
7. bvb 9 01.10.25 14:26 Сейчас в теме
Если в простоту то так :
ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Неопределено, Объект.ВариантОтчетаПроверки);


Вот универсальная функция .=- можно вызвать отчет из конфигурации с вариантом из макета компоновки либо непосредственно вариант отчета

ОтчетПроверки - имя отчета из метаданных
ВариантОтчетаПроверки - вариант (либо справочник либо вариант макета)

&НаКлиенте
Процедура ОткрытьОтчетПоказателя(Команда)

Если ЕстьТакойОтчет (СокрЛП(Объект.ОтчетПроверки)) Тогда
Если ТипЗнч(Объект.ВариантОтчетаПроверки) = Тип("СправочникСсылка.ВариантыОтчетов") Тогда
ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Неопределено, Объект.ВариантОтчетаПроверки);
ИначеЕсли ТипЗнч(Объект.ВариантОтчетаПроверки) = Тип("Строка") Тогда
ФормаОтчета = ПолучитьФорму("Отчет." + СокрЛП(Объект.ОтчетПроверки) + ".Форма");
ФормаОтчета.УстановитьТекущийВариант(СокрЛП(Объект.ВариантОтчетаПроверки));
Настройки = ПолучитьНастройки(ФормаОтчета.Отчет.КомпоновщикНастроек);
//Форма.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
//Форма.СкомпоноватьРезультат();
ФормаОтчета.Открыть();
КонецЕсли;
КонецЕсли;

КонецПроцедуры


&НаСервереБезКонтекста
Функция ЕстьТакойОтчет(ИмяОтчета)

Возврат Метаданные.Отчеты.Найти(ИмяОтчета) <> Неопределено;

КонецФункции
VyacheslavShilov; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот