Имя: Пароль:
1C
 
Расшифровка отчета СКД другим вариантом отчета
0 Альбатрос
 
26.04.21
14:37
Пытаюсь расшифровать отчет этим же отчетом, но с другим вариантом настроек скд:

ПараметрыФормы = Новый Структура;
        
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "Расшифровка");
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ПериодДоставки",Период);
СтруктураОтбора.Вставить("ДатаНачала",Период.ДатаНачала);
СтруктураОтбора.Вставить("ДатаОкончания",Период.ДатаОкончания);
        
ПараметрыФормы.Вставить("Отбор", СтруктураОтбора);                      
ФормаРасшифровки = ПолучитьФорму(ИмяОтчета+".Форма", ПараметрыФормы, , Истина);

Получаю ошибку в модуле объекта:

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

Ошибка: "невозможно применить фиксированные настройки. совпадают значения параметра"

Что не так? Буквально вчера подобным же образом делал другой отчет, там все ровно. Единственно, что не было программной обработки ПриКомпоновкеРезультата
1 toypaul
 
гуру
26.04.21
15:28
надо передавать параметры как пользовательские настройки, чтобы они применились к параметрам варианта. а не добавлялись как сейчас в фикс настройки
2 fisher
 
26.04.21
15:45
(1) +1
Кстати, а ты можешь как эксперт сформулировать, в каких случаях нужно использовать фикс. настройки? Только чур не посылать "это и многое другое вы узнаете на наших замечательных курсах" :)
(0) Я просто после получения формы варианта добираюсь в ней до пользовательских настроек компоновщика и делаю с ними чего надо.
3 toypaul
 
гуру
26.04.21
16:06
(2) в случае когда эту настройку не должен менять пользователь. часто в отборе для дин списка. все случаи когда надо / когда не надо слишком долго думать.
4 fisher
 
26.04.21
16:14
(3) Для дин-списка будет такое же опаньки, если у пользователя сохранены конфликтующие пользовательские настройки.
5 fisher
 
26.04.21
16:17
Получается только такой вариант, когда пользователь в принципе никогда не может использовать конкретный список с конфликтующими отборами. Но тогда теряется вообще смысл фикс-настроек как потенциально удобного инструмента. Отсюда и вопрос.
6 fisher
 
26.04.21
16:23
Если подумать, то есть таки варианты когда это удобно... Но они достаточно узкие.
7 Альбатрос
 
26.04.21
17:35
(1) Спасибо, переделал. Теперь ровно такая же проблема с передачей значений группировок как элементы отбора для отчета расшифровки. Поясните, такая ошибка возникает, когда есть пересечение устанавливаемых отборов с сохраненными пользовательскими настройками. А если они не пересекаются? Ну то есть на закладке отборы в настройке СКД я добавил отборы не включая их в пользовательские отборы, пытаюсь заполнить эти отборы при расшифровке и получаю такую же ошибку. А как мне тогда установит отборы? Если в Настройки.ПользовательскиеНастройки.Элементы нет этих отборов... Блин, не догоняю, как это работает...
8 Альбатрос
 
26.04.21
17:43
Пытаюсь как-то так сделать - не отрабатывает, но хоть без ошибки... Отборы не включаются...

ФормаРасшифровки = ПолучитьФорму(ИмяОтчета+".Форма", ПараметрыФормы, , Истина);
Настройки = ФормаРасшифровки.Отчет.КомпоновщикНастроек.Настройки;
Для каждого ТекЭлемент из СтруктураДанных.ЗначенияГруппировок Цикл
                
НовоеПоле = Новый ПолеКомпоновкиДанных(ТекЭлемент.Ключ);
                ЭлементОтбора = Неопределено;
                Для каждого ТекЭлементОтбора из Настройки.Отбор.Элементы цикл
                    Если ТекЭлементОтбора.ЛевоеЗначение =  НовоеПоле тогда
                        ЭлементОтбора = ТекЭлементОтбора;
                        Прервать;
                    КонецЕсли;
                КонецЦИкла;
                Если ЭлементОтбора = Неопределено Тогда
                    ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ТекЭлемент.Ключ);
                    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
                    ЭлементОтбора.ПравоеЗначение = ТекЭлемент.Значение;
                    ЭлементОтбора.Использование = Истина;
                Иначе
                    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
                    ЭлементОтбора.ПравоеЗначение = ТекЭлемент.Значение;
                    ЭлементОтбора.Использование = Истина;

                КонецЕсли;

            КонецЦикла
9 Альбатрос
 
26.04.21
18:04
И элементы пользовательских настроек добавлять запрещает...
10 Альбатрос
 
26.04.21
18:05
Что мне теперь, добавлять каждый вид отбора группировки в пользовательские настройки? Но это ж бред, ибо поменяют группировку, добавить новую и все, работать не будет
11 toypaul
 
гуру
26.04.21
18:34
правильный ответ слишком долго объяснять. все это рассказывали в нашем курсе, о котором сказали не писать :)

там урок на 2ч. на каждый такой урок подготовка дня 2. в 2х словах не расскажешь
12 Альбатрос
 
26.04.21
18:43
(11) Ну дай хоть подсказку какую что ли) Пожалей мое психическое здоровье, я уже часа 4 бьюсь на одном месте. Я исключил пользовательские настройки из варианта расшифровки, то есть в ПользовательскиеНастройки.Элементы пусто. И все равно ошибка
13 toypaul
 
гуру
26.04.21
18:58
ну насколько я помню главное что надо сделать это загрузить целиком настройки варианта отчета в компоновщик расшифровки. хотя я не уверен что это самое главное :)
14 Альбатрос
 
26.04.21
20:04
(13) Не особо помогло, но спасибо)
15 fisher
 
27.04.21
09:59