Имя: Пароль:
1C
1С v8
Открыть внешний отчет со своей структурой и отборами
0 withoutname
 
14.09.23
12:42
На просторах интернета нашел пример, добавил изменение структуры, отборы ставятся, но структура не меняется. ЧЯДНТ?


Если     ИДИменПоказателей.Найти("П000001000001") <> Неопределено
        Или ИДИменПоказателей.Найти("П000001100001") <> Неопределено
        Или ИДИменПоказателей.Найти("П000003000001") <> Неопределено Тогда
        
        ВнешнийОтчет = ДИТ_ЗаполнениеБухгалтерскойОтчетностиВызовСервера.ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(
            "Сводные данные об исполнении ПФХД");
        ИмяОтчетаСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчет);
        
        ФормаОтчёта = ПолучитьФорму("ВнешнийОтчет." + ИмяОтчетаСлужебное + ".Форма");
        КомпоновщикНастроек = ФормаОтчёта.Отчет.КомпоновщикНастроек;
        
        ПоказательДляРасшифровки = ИДИменПоказателей[0] + "_" + ПараметрыОтчета.НомерТекущейСтраницы;
        ПараметрыРасшифровки = ДИТ_ЗаполнениеБухгалтерскойОтчетностиВызовСервера.ПолучитьДополнительныеПараметрыРасшифровкиПоказателя(ПараметрыОтчета.АдресВременногоХранилищаРасшифровки, ПоказательДляРасшифровки);
        
        Период = Новый СтандартныйПериод();
        Период.ДатаНачала = Дата(2022, 01, 01);
        Период.ДатаОкончания = КонецМесяца(ПараметрыОтчета.ДатаСоставленияОтчета); //Дата(2023,08,31,23,59,59);
        
        // настройка структуры
        НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
        НастройкиКомпоновки.Структура.Очистить();
        
        ГруппировкаКомпоновкиДанных1 = НастройкиКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        ГруппировкаКомпоновкиДанных1.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировкиКомпоновкиДанных.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("НаправленияДеятельности");
        
        ГруппировкаКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных1.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
        ГруппировкаКомпоновкиДанных2.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировкиКомпоновкиДанных2.Использование = Истина;
        ПолеГруппировкиКомпоновкиДанных2.Поле = Новый ПолеКомпоновкиДанных("КЭК");
        
        УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "Период", Период);
        УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "Организация", ПараметрыОтчета.Организация);
        УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "КЭК",
            ДИТ_ЗаполнениеБухгалтерскойОтчетностиВызовСервера.НайтиЭлементСправочникаПоКоду("КОСГУ", "189"), ВидСравненияКомпоновкиДанных.НеРавно);
        УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "НаправленияДеятельности.ДИТ_ИдентификаторГОЗ", // тут был доп реквизит
                                                                    ПараметрыРасшифровки.НаправлениеДеятельности);
        // установка полей
        ВыбранныеПоля = НастройкиКомпоновки.Выбор.Элементы;
        Для каждого ВыбранноеПоле Из ВыбранныеПоля Цикл
            Если ТипЗнч(ВыбранноеПоле) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
                Если ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ЗапланированоДоходов") Тогда
                    ВыбранноеПоле.Использование = Истина;
                Иначе
                    ВыбранноеПоле.Использование = Ложь;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        //КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновки); // сбрасывает все настройки
        ПараметрыФормы = Новый Структура();
        ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
        ПараметрыФормы.Вставить("КлючВарианта", "СводныеДанныеОбИсполненииПланаФХДНовый");
        //ПараметрыФормы.Вставить("КлючВарианта", "Сводно"); // работает
        ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
        //ПараметрыФормы.Вставить("Настройки", КомпоновщикНастроек.Настройки); // никак не повлияло
        
        ОткрытьФорму("ВнешнийОтчет." + ИмяОтчетаСлужебное + ".Форма", ПараметрыФормы, ЭтотОбъект, "Графа1Строка1");
        //ФормаОтчёта.Открыть();
        
    // Графа 4 строка 2.1.1
    ИначеЕсли ИДИменПоказателей.Найти("П000002110004") <> Неопределено
        Или   ИДИменПоказателей.Найти("П000001100007") <> Неопределено Тогда
        
    КонецЕсли;
1 withoutname
 
14.09.23
12:42
Кстати и выбранные поля тоже не меняются
2 withoutname
 
14.09.23
19:26
ап
3 withoutname
 
19.09.23
10:25
может сегодня кто подскажет?
4 azernot
 
19.09.23
12:23
Ну очевидно же, что параметры и отборы из КомпоновщикНастроек.ПользовательскиеНастройки у вас во внешнем отчёте считываются, а структуру и поля вы меняете в КомпоновщикНастроек.Настройки.