Имя: Пароль:
1C
 
Программно добавить отбор в отчет на СКД
0 unknown181538
 
11.08.14
00:57
Отчет написан с помощью "Шаблона типового отчета". Формы обычные.

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

Все что, закомментировано не помогает.
Как сделать правильно?
1 Cube
 
11.08.14
04:53
Я всегда делаю так:

    //Собираем данные об установленном отборе
    ЭлементыОтбора = Новый Соответствие;
    Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Тип(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
            ЭлементыОтбора.Вставить(ЭлементОтбора.ЛевоеЗначение, ЭлементОтбора);
        КонецЕсли;
    КонецЦикла;
    
    //Устанавливаем отбор по полю МоёПоле1
    ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("МоёПоле1"));
    Если ЭлементОтбора = Неопределено Тогда
        //Отбора по полю МоёПоле ещё нет, добавляем строку отбора
        ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МоёПоле1");
    КонецЕсли;
    ЭлементОтбора.ВидСравнения        = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение    = МоёПоле1;
    ЭлементОтбора.Использование        = Истина;
    
    //Устанавливаем отбор по полю МоёПоле2
    ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("МоёПоле2"));
    Если ЭлементОтбора = Неопределено Тогда
        //Отбора по полю МоёПоле ещё нет, добавляем строку отбора
        ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МоёПоле2");
    КонецЕсли;
    ЭлементОтбора.ВидСравнения        = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение    = МоёПоле2;
    ЭлементОтбора.Использование        = Истина;
2 vicof
 
11.08.14
06:04
Тебя похвалить или поругать?
3 vicof
 
11.08.14
06:05
(0) сорри, спрсонья не увидел всей картины
4 Andrewww123
 
11.08.14
06:23
(2) Да мелочи, главное же нечто "умное" написать :)