Имя: Пароль:
1C
1С v8
СКД, программно установить отбор
0 ildary
 
13.08.19
15:21
Уважаемые специалисты, подскажите пожалуйста, почему данный код выполняется, но не даёт эффекта:

Внешний отчёт на СКД, надо сделать принудительный отбор по одному из полей (оно уже в доступных отборах).

ПриСозданииНаСервере()

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

в результате в ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы - у нужного элемента отбора в отладчике всё заполнено, а на форме отчета - пусто.
1 НадюшаЯ
 
13.08.19
15:34
а разве нет отчет.КомпоновщикНастроек на форме, зачем эти свистопляски с переходом в объект отчета
2 ildary
 
14.08.19
07:44
(1) На самом деле изначально я не делал переход, а писал ЭтаФорма.Отчет.КомпоновщикНастроек, но так тоже не работало.
3 ildary
 
14.08.19
07:54
Вдогонку - мой код на самом деле работает, но в ПриОткрытии() Отчет.КомпоновщикНастроек снова пустой (без отбора).
4 toypaul
 
гуру
14.08.19
08:04
(3) потому что до ПриОткрытии отрабатывает загрузка польз. настроек. установку нужно делать не при создании, а при открытии или при загрузке польз настроек
5 ildary
 
14.08.19
10:28
(4) Большое спасибо за науку. СКД как атом - каждый раз узнаёшь что-то новое.