Имя: Пароль:
1C
 
СКД : Программно включить / выключить использование выбранных полей в настройках
0 bvb
 
18.03.26
10:54
Добрый день

Не могу добраться до выбранных полей обозначенных в самом отчете и в общем вертикальном итоге (на картинке выделено красным)
Могу добраться только до полей обозначенных в таблице  (на картинке выделено зеленым)

Управляю ими так :

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
                
                //СхемаКомпоновкиДанных
                
                ВключатьПоказательРуб = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательРуб").Значение;
                ВключатьПоказательEUR = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательEUR").Значение;
                
                
                
                
                
                
                МассивПолейРуб = Новый Массив;
                МассивПолейРуб.Добавить("СуммаПоказателяРуб");
                МассивПолейРуб.Добавить("СуммаПоказателяСреднееРуб");

                МассивПолейEUR = Новый Массив;
                МассивПолейEUR.Добавить("СуммаПоказателяEUR");
                МассивПолейEUR.Добавить("СуммаПоказателяСреднееEUR");

                Настройки   = КомпоновщикНастроек.ПолучитьНастройки();
                
                Для Каждого ЭлементСтруктурыНастроек ИЗ Настройки.Структура Цикл
                               ВыбраныеПоля = ЭлементСтруктурыНастроек.Выбор.Элементы;
                              
                               Для Каждого ВыбраноеПоле ИЗ ВыбраныеПоля Цикл
                                               Если KMS_ОбщийМодульСервер.ЕстьРеквизитОбъекта(ВыбраноеПоле, "Поле")  Тогда
                                                               Если МассивПолейРуб.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено И  ВыбраноеПоле.Использование <>  ВключатьПоказательРуб Тогда
                                                                               ВыбраноеПоле.Использование =  ВключатьПоказательРуб;
                                                               КонецЕсли;      
                                                              
                                                               Если МассивПолейEUR.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено  И  ВыбраноеПоле.Использование <>  ВключатьПоказательEUR Тогда
                                                                               ВыбраноеПоле.Использование =  ВключатьПоказательEUR;
                                                               КонецЕсли;      
                                               КонецЕсли;
                               КонецЦикла;    
                КонецЦикла;
                
                КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);  
                
КонецПроцедуры
1 Волшебник
 
18.03.26
10:55
Нет картинки
2 bvb
 
18.03.26
10:56
Картинка не вставляется
Пишет "Не удалось сохранить картинку (6)"

Раньше вставлялась

пробовал и .jpg .png
на разных компах под разными браузерами
3 Мультук
 
гуру
18.03.26
11:19
(0)
ЭлементСтруктурыНастроек тоже имеет свойство "Структура", внезапно правда?

А еще есть ТаблицаКомпоновкиДанных, которая имеет Строки и Колонки, которые опять же имеют свойство "Структура".

Итого: RTFM Рекурсия
4 bvb
 
18.03.26
11:50
(3) Спасибо

Осилил :

Для Каждого ЭлементСтруктурыНастроек ИЗ Настройки.Структура Цикл
        
        ВыбраныеПоля = ЭлементСтруктурыНастроек.Выбор.Элементы;
        
        Для Каждого ВыбраноеПоле ИЗ ВыбраныеПоля Цикл
            Если KMS_ОбщийМодульСервер.ЕстьРеквизитОбъекта(ВыбраноеПоле, "Поле")  Тогда
                Если МассивПолейРуб.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено И  ВыбраноеПоле.Использование <>  ВключатьПоказательРуб Тогда
                    ВыбраноеПоле.Использование =  ВключатьПоказательРуб;
                КонецЕсли;    
                
                Если МассивПолейEUR.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено  И  ВыбраноеПоле.Использование <>  ВключатьПоказательEUR Тогда
                    ВыбраноеПоле.Использование =  ВключатьПоказательEUR;
                КонецЕсли;    
            КонецЕсли;
        КонецЦикла;     //по полям
        
        ВыбранныеКолонки =    ЭлементСтруктурыНастроек.Колонки;
        Для Каждого ВыбранаяКолонка ИЗ ВыбранныеКолонки Цикл
            
            ВыбраныеПоля =  ВыбранаяКолонка.Выбор.Элементы;
            
            Для Каждого ВыбраноеПоле ИЗ ВыбраныеПоля Цикл
                Если KMS_ОбщийМодульСервер.ЕстьРеквизитОбъекта(ВыбраноеПоле, "Поле")  Тогда
                    Если МассивПолейРуб.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено И  ВыбраноеПоле.Использование <>  ВключатьПоказательРуб Тогда
                        ВыбраноеПоле.Использование =  ВключатьПоказательРуб;
                    КонецЕсли;    
                    
                    Если МассивПолейEUR.Найти(Строка(ВыбраноеПоле.Поле)) <> Неопределено  И  ВыбраноеПоле.Использование <>  ВключатьПоказательEUR Тогда
                        ВыбраноеПоле.Использование =  ВключатьПоказательEUR;
                    КонецЕсли;    
                КонецЕсли;
            КонецЦикла;
            
        КонецЦикла; //по колонкам
        
    КонецЦикла;  //По элементам структуры настроек
Закон Брукера: Даже маленькая практика стоит большой теории.