Имя: Пароль:
1C
 
Необязательные параметры вложенных схем СКД
0 Peshalkin
 
24.01.22
03:24
Коллеги, добрый день, столкнулся с проблемой - есть 2 вложенные схемы(набор данных запрос), в запросе есть 2 необязательных параметра(дата и фирма), так вот, в настройках вложенных схем связал параметры через "ОбъектНастройкиВладелец.ПараметрыДанных.Период" и фирма так же, но проблема в том, что если даже убираешь использование в предприятии у этих параметров, то в макете компоновщика почему-то остаётся фильтр по ним, как-то можно сделать, чтобы они не были не обязательными?
1 Peshalkin
 
24.01.22
09:29
up!
2 Arh
 
25.05.22
23:19
День убил на поиск решения, готового не нашел, получилось вот так:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    ПараметрыДанных = Настройки.ПараметрыДанных;
    
    ВидПробыИспользование  = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидПробы")).Использование;
    Если ВидПробыИспользование = Ложь Тогда
        ПараметрВидПробы = Настройки.Структура[1].Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидПробы"))    ;
        Если ПараметрВидПробы <> Неопределено Тогда
            ПараметрВидПробы.Использование = Ложь;
        КонецЕсли;
        ПараметрВидПробы = Настройки.Структура[2].Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидПробы"))    ;
        Если ПараметрВидПробы <> Неопределено Тогда
            ПараметрВидПробы.Использование = Ложь;
        КонецЕсли;        
    КонецЕсли;        
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , , Ложь);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры

По сути, программно снимаю галочки "Использовать" параметров на закладке "Настройки", в дереве структуры отчета, где выбраны вложенные схемы
3 Arh
 
27.05.22
11:31
(2) Вот так правильнее будет:
4 Arh
 
27.05.22
11:33
(2) Вот так правильнее будет:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    Если Настройки.ДополнительныеСвойства.КлючВарианта = "ПолевыеДубликаты" Тогда
        Если Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидПробы")).Использование = Ложь Тогда
            Для Каждого ЭлементСтруктуры Из Настройки.Структура Цикл
                Если ТипЗнч(ЭлементСтруктуры) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
                    ПараметрВидПробы = ЭлементСтруктуры.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидПробы"))    ;
                    Если ПараметрВидПробы <> Неопределено Тогда
                        ПараметрВидПробы.Использование = Ложь;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , , Ложь);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
5 PLUT
 
27.05.22
12:03
>Новый ПараметрКомпоновкиДанных("ВидПробы")

что-то из йувелирного...
6 АнализДанных
 
27.05.22
15:33
(0) Если, через расширение языка запросов (через фигурные скобки) прописать эти параметры в тексте вложеного запроса?
{ГДЕ Таблица.Дата = &Период}
7 Arh
 
30.05.22
14:45
(6) Так именно так оно и было (и в основной схеме и во вложенных фигурные скобки), но не работает, если пользователь снимает галочку, пишет чё-то типа нет параметра (в отладчике как раз видно, что во вложенный передается Null, а галочка в нем (во вложенном) не снимается)