Имя: Пароль:
1C
 
Установить отбор программно в разных вариантах отчета
0 Nyarlathotep
 
19.02.18
10:10
Всем привет!

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

Делаю в модуле объекта вот так:

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

Для одного варианта, в котором есть поле "Менеджер документа" все работает, но все остальные варианты не показывают ничего вообще.

А как правильно сделать, чтоб отбор установился для всех вариантов?
1 nordbox
 
19.02.18
10:12
И не будет, внимательно читай свой код
2 Nyarlathotep
 
19.02.18
10:14
Как мне в модуле объекта понять, какой именно вариант используется, чтобы указать нужное поле отбора?
3 Nyarlathotep
 
19.02.18
10:14
(1) А что с кодом то не так?
4 nordbox
 
19.02.18
10:14
НУ дык получи вариант отчета
5 Nyarlathotep
 
19.02.18
10:15
(4) А как его получить? Я с СКД программно не работал еще...
6 nordbox
 
19.02.18
10:17
Надеюсь модераторы не будут ругаться
http://programmist1s.ru/vyibor-varianta-otcheta-skd-obyichnyie-formyi/
Дальше разберешься
7 Nyarlathotep
 
19.02.18
10:31
(0) Вот так получилось:

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