Имя: Пароль:
1C
1С v8
Отборы по владельцу
,
0 Powerfool
 
07.03.14
07:00
Приветствую!
Открываю форму выбора справочника (самописный). В форме программно выставляю отбор по владельцу, родителю (иерархия по элементам) и ещё одному реквизиту. Отлаживаю и наблюдаю следующее: форма выбора открывается и там пусто (не выбран ни один элемент). После этого я интерактивно убираю отбор по владельцу и ставлю его заново и !О ЧУДО! появляется нужный мне элемент справочника.
Кто с таким боролся, напиши пожалуйста как эту беду побороть?
1 Wobland
 
07.03.14
07:00
выставить правильный отбор?
2 Godofsin
 
07.03.14
07:12
(0) Ну показывай код уже, не стесняйся
3 Powerfool
 
07.03.14
08:17
(2)
Процедура ЭКЛЗНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбораЭКЛЗ = Справочники.ДК_ОборудованиеИПОНаОбъектах.ПолучитьФормуВыбора(, Элемент);

    Если Не ФормаВыбораЭКЛЗ.Открыта() Тогда
        ФормаВыбораЭКЛЗ.РежимВыбора = Истина;
        ФормаВыбораЭКЛЗ.Отбор.Тип.Использование = Истина;
        ФормаВыбораЭКЛЗ.Отбор.Тип.ВидСравнения = ВидСравнения.Равно;
        ФормаВыбораЭКЛЗ.Отбор.Тип.Значение = Справочники.ДК_ТипыОборудованияИПО.ЭКЛЗ;
        ФормаВыбораЭКЛЗ.Отбор.Объект.Использование = Не Объект.Пустая();
        ФормаВыбораЭКЛЗ.Отбор.Объект.ВидСравнения = ВидСравнения.ВСписке;
        СписокВыбора = Новый СписокЗначений;
        Если Не Объект.Пустая() Тогда
            Запрос = Новый Запрос;
            Запрос.Текст =
                "ВЫБРАТЬ
                |    ДК_ОбъектыРабот.Ссылка
                |ИЗ
                |    Справочник.ДК_ОбъектыРабот КАК ДК_ОбъектыРабот
                |ГДЕ
                |    ДК_ОбъектыРабот.Ссылка В ИЕРАРХИИ(&Ссылка)";                  
            Запрос.УстановитьПараметр("Ссылка", Объект);                      
            СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));                                   
        КонецЕсли;
        СписокВыбора.Добавить(Справочники.ДК_ОбъектыРабот.ПустаяСсылка());
        ФормаВыбораЭКЛЗ.Отбор.Объект.Значение = СписокВыбора;
        ФормаВыбораЭКЛЗ.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно;
        ФормаВыбораЭКЛЗ.Отбор.Владелец.Значение = Контрагент;
        ФормаВыбораЭКЛЗ.Отбор.Владелец.Использование = Истина;
        //ФормаВыбораЭКЛЗ.ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = ККМ;
        ФормаВыбораЭКЛЗ.Открыть();
        //ФормаВыбораЭКЛЗ.ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = ККМ;
        //ФормаВыбораЭКЛЗ.Обновить();
    Иначе
        ФормаВыбораЭКЛЗ.Активизировать();
    КонецЕсли;

КонецПроцедуры
4 Defender aka LINN
 
07.03.14
08:19
(0) Чудес не бывает. Дубли контрагентов?
5 Powerfool
 
07.03.14
08:21
(2) Мы народ не из стеснительных :0
Теперь далее. Захожу я в режиме предприятия. Вызываю эту форму путем выбора элемента в поле ввода, и форма открывается с правильным отбором, да вот только в ней пусто. Потом я нажимаю в форме кнопку "Просмотр по владельцу", вижу много элементов справочника (потому что снял отбор). Потом жму эту кнопку ещё раз и вижу только один, нужный мне, элемент справочника.
Вопрос, этот элемент не показался мне сразу? Зачем для этого надо снимать и заново ставить отбор по владельцу?
6 Wobland
 
07.03.14
08:23
(3) какой-то почти любой контрагент выходит, не?
7 Powerfool
 
07.03.14
08:24
(6) Что ты имеешь в виду?
8 Wobland
 
07.03.14
08:25
(7) чукча писатель, не обращай внимания
9 Powerfool
 
07.03.14
08:33
вира
10 Powerfool
 
07.03.14
08:41
Ну и ладно. Тогда напишу для будущих потомков. Кажися дело в иерархическом просмотре. Добавил строчку
ФормаВыбораЭКЛЗ.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
и у меня взлетело