Имя: Пароль:
1C
 
Отбор в списке выбора справочника из документа
0 anisa8310
 
28.12.15
14:31
1С:Предприятие 8.2 (8.2.19.80)
Самописка.
Коллеги, помогите как отбор выполнить  почему то не работает- все просто нужно выводить только некоторые папки номенклатуры, заранее благодарю и с наступающим новым годом!
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //СтандартнаяОбработка=Ложь;
    
    Если Параметры.Свойство("ВыполнитьОТбор") Тогда
        МодифицироватьЗапрос();
        Список.Параметры.УстановитьЗначениеПараметра("НулеваяДата", Дата(1,1,1));
        Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ТекущаяДата());
    
        ЭлементОтбораДанныхДатаБлокировки = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДанныхДатаБлокировки.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПереданС");
        ЭлементОтбораДанныхДатаБлокировки.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбораДанныхДатаБлокировки.ПравоеЗначение = Дата(1,1,1);
        ЭлементОтбораДанныхДатаБлокировки.Использование = Истина;
        
        ЭлементОтбораДанныхДатаБлокировки = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДанныхДатаБлокировки.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗаблокированC");
        ЭлементОтбораДанныхДатаБлокировки.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбораДанныхДатаБлокировки.ПравоеЗначение = Дата(1,1,1);
        ЭлементОтбораДанныхДатаБлокировки.Использование = Истина;
        
        ЭлементОтбораДанныхКлиент = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДанныхКлиент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Клиент");
        ЭлементОтбораДанныхКлиент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбораДанныхКлиент.ПравоеЗначение = Параметры.ВыполнитьОтбор;
        ЭлементОтбораДанныхКлиент.Использование = Истина;
        
        //Список значений
        Список=Новый СписокЗначений;
        Массив=Новый Массив;
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000068"));
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000217"));
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000214"));
        Список.ЗагрузитьЗначения(Массив);
        
        ЭлементОтбораДанныхПапка = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДанныхПапка.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СсылкаНоменклатураРодитель");
        ЭлементОтбораДанныхПапка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
        //ЭлементОтбораДанныхПапка.
        ЭлементОтбораДанныхПапка.ПравоеЗначение = Список;
        ЭлементОтбораДанныхПапка.Использование = Истина;

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

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

//Процедура выполняет изменение запроса динамического списка
//
Процедура МодифицироватьЗапрос()
                                        
    Список.ТекстЗапроса = Список.ТекстЗапроса + "
    |ГДЕ
    |    (СправочникАбонементы.ДатаОкончанияСрокаДействия <> &НулеваяДата
    |    И (СправочникАбонементы.ДатаОкончанияСрокаДействия >= &ТекущаяДата)
    |    ИЛИ СправочникАбонементы.ДатаОкончанияСрокаДействия = &НулеваяДата)
    |    И СправочникАбонементы.Ссылка.ПометкаУдаления = Ложь";

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




Вот все работает нормально но отбор по папки не выполняет.
http://www.picshare.ru/view/6987073/
1 anisa8310
 
28.12.15
14:32
{Справочник.Абонементы.Форма.УНИ_ФормаВыбора.Форма(68)}: Метод объекта не обнаружен (ЗагрузитьЗначения)
        Список.ЗагрузитьЗначения(Массив);
2 Zmich
 
28.12.15
14:47
(0). У тебя один и тот же идентификатор Список используется для разных целей.

Список.Параметры.УстановитьЗначениеПараметра("НулеваяДата", Дата(1,1,1));

а потом

Список=Новый СписокЗначений;

По-другому переменную назови.
3 anisa8310
 
28.12.15
14:53
(2) оке ! попробуем
4 anisa8310
 
28.12.15
14:56
//Список значений
        НовыйСписок=Новый СписокЗначений;
        Массив=Новый Массив;
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000068"));
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000217"));
        Массив.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000000214"));
        НовыйСписок.ЗагрузитьЗначения(Массив);
        
        ЭлементОтбораДанныхСсылкаНоменклатураРодитель = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДанныхСсылкаНоменклатураРодитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СсылкаНоменклатураРодитель");
        ЭлементОтбораДанныхСсылкаНоменклатураРодитель.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
        //ЭлементОтбораДанныхПапка.
        ЭлементОтбораДанныхСсылкаНоменклатураРодитель.ПравоеЗначение = НовыйСписок;
        ЭлементОтбораДанныхСсылкаНоменклатураРодитель.Использование = Истина;
5 anisa8310
 
28.12.15
14:56
зачем то нету
6 anisa8310
 
28.12.15
15:11
Получилось) Рахмэт)