Имя: Пароль:
1C
1С v8
Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
,
0 Mr Man
 
22.03.16
16:59
Доброго времени суток. При компановке результат отчета в пр-ре ПриКомпоновкеРезультата отчета пишу следующее:

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

Ругается на КомпоновщикНастроек.ПолучитьНастройки();
Как это побороть?
1 Mr Man
 
22.03.16
17:00
Платформа 8.3.6.2449, Такси
2 Nuobu
 
22.03.16
17:03
(0) Как именно ругается?
3 Mort
 
22.03.16
17:11
Смотри откуда фиксированные настройки берутся.
4 Mr Man
 
22.03.16
17:14
(2) Невозможно применить фиксированные настройки. Пересекаются элементы отбора.

Ругается кстати после повторного формирования отчета по кнопочке сформировать. В первом случае вызов был программный.
5 Nuobu
 
22.03.16
17:18
(4) Могу предложить тебе искать отбор, который ты устанавливаешь в первый раз этим кодом:

НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.
        Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        
        НовыйЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ТочкаМаршрута");
        НовыйЭлементОтбора.Использование  = Истина;
        НовыйЭлементОтбора.ВидСравнения   = ?(ЭтоПрочиеЗадачи,ВидСравненияКомпоновкиДанных.НеВСписке, ВидСравненияКомпоновкиДанных.ВСписке);
        НовыйЭлементОтбора.ПравоеЗначение = ТочкиБП;
    КонецЕсли;

Только вместо того, чтобы писать НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

Лучши ищи его по представлению. Сделай его вручную, назови как-то, убеги галку "ИСпользование" и юзай программно.
6 Mr Man
 
22.03.16
17:24
(5) пробую перед программный добавлением отбора и получением настроек так:

ПользовательскийОтбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
ПользовательскийОтбор.Очистить();

Вылетает.
7 aleks_default
 
22.03.16
17:42
Смотри откуда вызывается отчет, там фиксированные настройки и устанавливаются.
8 Nuobu
 
22.03.16
17:59
(6) Ого, ты жесткий!

Отбор = КомпоновщикНастроек.Настройки.Отбор.Элементы;

А так?
9 Mr Man
 
22.03.16
18:16
(8) удаляет все отборы что есть. Нужно очистить только отбор "ТочкаМаршрута"
10 Nuobu
 
22.03.16
18:17
(9) Так найди его, а не очищай!
11 Mr Man
 
22.03.16
18:21
нужен пример как найти)
12 Nuobu
 
22.03.16
18:23
(11) Для каждого ЭлементОтбора из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТочкаМаршрута") Тогда
ЭлементОтбора.ПравоеЗначение = ТочкиБП;
ЭлементОтбора.Использование = Истина;
Прервать;
КонецЕсли;
КонецЦИкла;
13 Mr Man
 
22.03.16
18:34
(12) друг, спасибо тебе большое)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан