Dev ›
Как программно открыть типовые отчеты (Карточку счета, Анализ счета, ОСВ по счету) с отбором, не изменяя сам отчет, в конфигурации БП 3.0 ›
#49
05.08.22 12:10
ИмяОтчета = "ОборотноСальдоваяВедомостьПоСчету";
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.Материалы"));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , НачалоГода(ДатаСоставления));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , КонецГода(ДатаСоставления));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Организация);
//Заполняем дополнительные отборы
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
// зададим Отбор
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Ложь, ВидСравненияКомпоновкиДанных.Равно,"Подразделение", );
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ВидСравненияКомпоновкиДанных.ВСписке,"Субконто2", СписокСкладов);
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ВидСравненияКомпоновкиДанных.ВСписке,"Субконто1", СписокНоменклатуры);
//Заполняем группировки
Группировка1 = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Ложь, "Подразделение", "Подразделение");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто2", "Склад");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто1", "Номенклатура");
Группировка1.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка1);
//Обязательно указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Отчет", УсловияОтбора);//Объект
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АдресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группировка" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АдресХранилища);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета);
ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина);
ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки);
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма,Истина);