Имя: Пароль:
1C
1С v8
Открытие формы выбора справочника в установленной группе
0 LivingStar
 
04.05.14
16:22
У документа есть поле Исполнитель. Тип поля исполнитель справочник.Контрагенты. Нужно что бы при открытии открывался в каталоге исполнитель нужный подкаталог по установленному отбору. Что я не так делаю? Почему никак не могу открыть для выбора иерархию в нужном виде?


В процедуре задаю

Процедура КонтрагентИсполнительНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка   = Ложь;
    ФормаВыбораИсполнителя = ПолучитьФорму("Справочник.Контрагенты.ФормаВыбора", , Элемент);
    ГородРодитель            = Справочники.Контрагенты.НайтиПоНаименованию(Город);
    ФормаВыбораИсполнителя.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВИерархии;
    ФормаВыбораИсполнителя.Отбор.Ссылка.Значение = ГородРодитель;
    ФормаВыбораИсполнителя.Отбор.Ссылка.Использование = ИСТИНА;
    ФормаВыбораИсполнителя.ОткрытьМодально();
1 LivingStar
 
04.05.14
16:55
решил
2 su_mai
 
04.05.14
17:01
(1) Напиши как
3 LivingStar
 
05.05.14
08:59
(2)

// LivingStar 2014_05_04 ->
Процедура спрКонтрагентИсполнительНачалоВыбора(Элемент, СтандартнаяОбработка)
    // LivingStar 2014_05_04 ->
    //Отключим стандартный выбор, так как делаем свой :)
    СтандартнаяОбработка = Ложь;
    //Получаем форму и привязываем ее к Владельцу - Элемент
    ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора(, Элемент);
    //Установим отбор по Родителю справочника
    //ЕСЛИ НА ФОРМЕ ВЫБОРА СЛЕВА ЕСТЬ ДЕРЕВО ГРУПП, то нужно установить значение родителя в нем:
    ФормаВыбора.ЭлементыФормы.СправочникДерево.ТекущаяСтрока = Справочники.Контрагенты.НайтиПоНаименованию(Город);
    //ЕСЛИ НА ФОРМЕ ТОЛЬКО СПИСОК НОМЕНКЛАТУРЫ, то устанавливаем так:
    ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
    ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущийРодитель = Справочники.Контрагенты.НайтиПоНаименованию(Город);
    //Откроем выбор
    ФормаВыбора.ОткрытьМодально();    
КонецПроцедуры
// <-
4 LivingStar
 
06.05.14
14:58
(3) Нужную группу то открывает, а вот если выбран какой либо элемент, его в нужном каталоге не открывает ((( Открывается просто указанная группа, без установки курсора на уже выбранного в поле контрагента.
5 ИС-2
 
06.05.14
15:03
(0) Есть свойство текущий элемент - находишь первый элемент этой группы и передаешь его в это свойство, открываешь форму.
6 ИС-2
 
06.05.14
15:03
только за чем открывать модально, если передан владелец формы
7 LivingStar
 
06.05.14
15:05
немного поправил, норм нет? вроде открывает как надо введенный уже элемент

// LivingStar 2014_05_04 ->
Процедура спрКонтрагентИсполнительНачалоВыбора(Элемент, СтандартнаяОбработка)
    // LivingStar 2014_05_04 ->
    // 2014_05_06 доработка
    Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда
        //Отключим стандартный выбор, так как делаем свой :)
        СтандартнаяОбработка                                              = Ложь;
        //Получаем форму и привязываем ее к Владельцу - Элемент
        ФормаВыбора                                                      = Справочники.Контрагенты.ПолучитьФормуВыбора(, Элемент);
        //Установим отбор по Родителю справочника
        //ЕСЛИ НА ФОРМЕ ВЫБОРА СЛЕВА ЕСТЬ ДЕРЕВО ГРУПП, то нужно установить значение родителя в нем:
        ФормаВыбора.ЭлементыФормы.СправочникДерево.ТекущаяСтрока         = Справочники.Контрагенты.НайтиПоНаименованию(Город);
        //ЕСЛИ НА ФОРМЕ ТОЛЬКО СПИСОК НОМЕНКЛАТУРЫ, то устанавливаем так:
        ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
        ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущийРодитель       = Справочники.Контрагенты.НайтиПоНаименованию(Город);
        //Откроем выбор
        ФормаВыбора.ОткрытьМодально();    
    КонецЕсли;
КонецПроцедуры
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан