Открыть форму отчета. Открывает форму указанного отчета.
// Открывает форму указанного отчета.
//
// Параметры:
// ФормаВладелец - ФормаКлиентскогоПриложения, Неопределено - форма, из которой открывается отчет.
// Вариант - СправочникСсылка.ВариантыОтчетов, СправочникСсылка.ДополнительныеОтчетыИОбработки - вариант
// отчета, форму которого требуется открыть. Если передан тип СправочникСсылка.ДополнительныеОтчетыИОбработки,
// то открывается дополнительный отчет, подключенный к программе.
// ДополнительныеПараметры - Структура - служебный параметр, не предназначен для использования.
//
Процедура ОткрытьФормуОтчета(Знач ФормаВладелец, Знач Вариант, Знач ДополнительныеПараметры = Неопределено) Экспорт
Тип = ТипЗнч(Вариант);
Если Тип = Тип("Структура") Тогда
ПараметрыОткрытия = Вариант;
ИначеЕсли Тип = Тип("СправочникСсылка.ВариантыОтчетов")
Или Тип = ТипСсылкиДополнительногоОтчета() Тогда
ПараметрыОткрытия = Новый Структура("Ключ", Вариант);
Если ДополнительныеПараметры <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыОткрытия, ДополнительныеПараметры, Истина);
КонецЕсли;
ОткрытьФорму("Справочник.ВариантыОтчетов.ФормаОбъекта", ПараметрыОткрытия, Неопределено, Истина);
Возврат;
Иначе
ПараметрыОткрытия = Новый Структура("Ссылка, Отчет, ТипОтчета, ИмяОтчета, КлючВарианта, КлючЗамеров");
Если ТипЗнч(ФормаВладелец) = Тип("ФормаКлиентскогоПриложения") Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОткрытия, ФормаВладелец);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ПараметрыОткрытия, Вариант);
КонецЕсли;
Если ДополнительныеПараметры <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыОткрытия, ДополнительныеПараметры, Истина);
КонецЕсли;
ВариантыОтчетовКлиентСервер.ДополнитьСтруктуруКлючом(ПараметрыОткрытия, "ВыполнятьЗамеры", Ложь);
ПараметрыОткрытия.ТипОтчета = ВариантыОтчетовКлиентСервер.ТипОтчетаСтрокой(ПараметрыОткрытия.ТипОтчета, ПараметрыОткрытия.Отчет);
Если Не ЗначениеЗаполнено(ПараметрыОткрытия.ТипОтчета) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не определен тип отчета в %1'"), "ВариантыОтчетовКлиент.ОткрытьФормуОтчета");
КонецЕсли;
Если ПараметрыОткрытия.ТипОтчета = "Внутренний" Или ПараметрыОткрытия.ТипОтчета = "Расширение" Тогда
Вид = "Отчет";
КлючЗамеров = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОткрытия, "КлючЗамеров");
Если ЗначениеЗаполнено(КлючЗамеров) Тогда
ПараметрыКлиента = ПараметрыКлиента();
Если ПараметрыКлиента.ВыполнятьЗамеры Тогда
ПараметрыОткрытия.ВыполнятьЗамеры = Истина;
ПараметрыОткрытия.Вставить("ИмяОперации", КлючЗамеров + ".Открытие");
ПараметрыОткрытия.Вставить("КомментарийОперации", ПараметрыКлиента.ПрефиксЗамеров);
КонецЕсли;
КонецЕсли;
ИначеЕсли ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда
Вид = "ВнешнийОтчет";
Если Не ПараметрыОткрытия.Свойство("Подключен") Тогда
ВариантыОтчетовВызовСервера.ПриПодключенииОтчета(ПараметрыОткрытия);
КонецЕсли;
Если Не ПараметрыОткрытия.Подключен Тогда
Возврат;
КонецЕсли;
Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'"));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыОткрытия.ИмяОтчета) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не определено имя отчета в %1'"), "ВариантыОтчетовКлиент.ОткрытьФормуОтчета");
КонецЕсли;
ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета;
КлючУникальности = ОтчетыКлиентСервер.КлючУникальности(ПолноеИмяОтчета, ПараметрыОткрытия.КлючВарианта);
ПараметрыОткрытия.Вставить("КлючПараметровПечати", КлючУникальности);
ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", КлючУникальности);
Если ПараметрыОткрытия.ВыполнятьЗамеры Тогда
ВариантыОтчетовКлиентСервер.ДополнитьСтруктуруКлючом(ПараметрыОткрытия, "КомментарийОперации");
МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент");
ИдентификаторЗамера = МодульОценкаПроизводительностиКлиент.ЗамерВремени(
ПараметрыОткрытия.ИмяОперации,,
Ложь);
МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(ИдентификаторЗамера, ПараметрыОткрытия.КомментарийОперации);
КонецЕсли;
ОткрытьФорму(ПолноеИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Истина);
Если ПараметрыОткрытия.ВыполнятьЗамеры Тогда
МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(ИдентификаторЗамера);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОткрытьВариантДополнительногоОтчета (БСП)
ОткрытьФормуКомандДополнительныхОтчетовИОбработок (БСП)
ОткрытьОтчетПоПроблемамИзСписка (БСП)
ОткрытьОтчетПоПроблемамИзОбработкиОбновления (БСП)
ОткрытьОтчетПоПроблемамОбъекта (БСП)