Имя: Пароль:
1C
1С v8
программное добавление значений отбора (группа И) в СКД
0 Charity
 
27.02.14
23:07
Доброго времени, уважаемые.
прошу помощи в том, что не получается добавить программный отбор в отчет на СКД. Возможно, вопрос был задан уже 100500 раз, но я не нагуглила мало-мальски понятного мануала..... Насчет задачи, поясняю: Есть отчет, в котором имеются ДатаНачала, ДатаКонца (это для задания периода, это параметры данных, которые инициализируются в модуле объекта отчета в процедуре компоновки результата, если пустые, то задаются определенные даты). В отчете есть и другие опции, заключающиеся в отборе для реквизитов, имеющих тип = "Дата" и попадающих в указанный диапазон. Но не о них речь
так вот, 1с выдает ошибку: "Ошибка исполнения отчета
по причине:
Поле не найдено "ПараметрКонецПериода""
Собственно код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    Сообщить (ЭтотОбъект.НачалоПериода);
    Сообщить (ЭтотОбъект.КонецПериода);
    ПараметрНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
    Если ПараметрНачалоПериода <> Неопределено Тогда
        Если ЭтотОбъект.НачалоПериода = Дата(1,1,1) Тогда
            ПараметрНачалоПериода.Значение = Дата(1900,01,01);
        Иначе
            ПараметрНачалоПериода = ЭтотОбъект.НачалоПериода;
        КонецЕсли;
    КонецЕсли;
    
    ПараметрКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
    Если ПараметрКонецПериода  <> Неопределено Тогда
        Если ЭтотОбъект.КонецПериода = Дата(1,1,1) Тогда
            ПараметрКонецПериода.Значение = Дата(3000,01,01);
        Иначе
            ПараметрКонецПериода  = ЭтотОбъект.КонецПериода;
        КонецЕсли;
    КонецЕсли;
    
    Если ЭтотОбъект.ИмеющиеДвиженияЗаПериод Тогда
    //    ГруппаОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    //    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    //    ГруппаОтбора.Использование = Истина;
    //    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПараметрНачалоПериода");
    //    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    //    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    //    ЭлементОтбора.Использование = Истина;
    //    //    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    //        ЭлементОтбора.ПравоеЗначение =  новый ПолеКомпоновкиДанных("ПараметрКонецПериода");
    //        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
    ////        ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    //        ЭлементОтбора.Использование=Истина;
    //            
    //ПолеОтбора = Новый ПолеКомпоновкиДанных("КонечныйОстаток");
    //
    //НовыйЭлементОтбора.ЛевоеЗначение  = ПолеОтбора;
    //НовыйЭлементОтбора.Использование  = Истина;
    //НовыйЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеРавно;
    //НовыйЭлементОтбора.ПравоеЗначение = 0;
    //КомпоновщикНастроек.Настройки.Отбор.РежимОтображения=РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
Иначе
    //КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
    
    //КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(
КонецЕсли;

КонецПроцедуры

Пожалуйста, помогите, в чем я ошибаюсь.
Спасибо!
1 Charity
 
27.02.14
23:14
конф. Бухгалтерия предприятия КОРП, редакция 2.0 (2.0.53.10)
2 EugeniaK
 
27.02.14
23:16
А что за параметр "КонецПериода"?
Вроде раньше назывался "ОкончаниеПериода"
3 Charity
 
27.02.14
23:18
EugeniaK, в запросе я так назвала.
4 Charity
 
27.02.14
23:19
СКД ведь по идее неважно, как называются параметры...
5 Charity
 
27.02.14
23:53
Дополнение: процедура, описанная в сбщ, отрабатывает без ошибок. После неё ошибка появляется
6 Charity
 
28.02.14
10:24
Вопрос снят. Отчет ругался потому, что нужно было при выполнении условий делать очистку отборов.
7 Charity
 
28.02.14
10:25
а после очистки инициализировать отборы заново