|   |   | 
| 
 | Как установить фильтр при открытии формы списка справочника из документа | ☑ | ||
|---|---|---|---|---|
| 0
    
        Sharmon 06.12.13✎ 16:40 | 
        Есть документ. В нем реквизит, который является справочником.
 Мне нужно при открытии формы списка этого справочника установить программно фильтры (в зависимости от свойств документа). В какую сторону копать? Т.е. на какое событие повесить установку данных фильтров? | |||
| 1
    
        Господин ПЖ 06.12.13✎ 16:41 | 
        надо начать с понимания что за форма... УФ или обычная     | |||
| 2
    
        Sharmon 06.12.13✎ 16:41 | 
        Раньше использовал "Связь по владельцу". Но сейчас добавились еще реквизиты. А связь по владельцу, так понимаю, работает только с 1 реквизитом     | |||
| 3
    
        Sharmon 06.12.13✎ 16:41 | 
        (1) Обычная     | |||
| 4
    
        mr_K 06.12.13✎ 16:42 | 
        (0) в обычной - событие началовыбора. в нем стандартную обработку отключать и открывать форму списка программно     | |||
| 5
    
        Sharmon 06.12.13✎ 16:42 | 
        (4) спасибо за ответ.     | |||
| 6
    
        Господин ПЖ 06.12.13✎ 16:44 | 
        ЭтаФорма = Сравочники.Блабла.ПолучитьФорму();
 ЭтаФорма.Отбор.ТвойЭлемент.Использование = ИСТИНА; ЭтаФорма.Отбор.ТвойЭлемент.Значение = ТвоёЗначение; + (4) | |||
| 7
    
        Господин ПЖ 06.12.13✎ 16:44 | 
        .ПолучитьФорму();
 в смысле .ПолучитьФормуСписка(); или там .ПолучитьФормуВыбора(); | |||
| 8
    
        Sharmon 06.12.13✎ 16:45 | 
        Сделал так:
 Процедура СМ_СчетНаОплатуНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = ложь; ФормаСпр = Справочники.СМ_СчетНаОплатуПоставщика.ПолучитьФормуСписка(); ФормаСпр.СправочникСписок.Отбор.Владелец.Использование = Истина; ФормаСпр.СправочникСписок.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; ФормаСпр.СправочникСписок.Отбор.Владелец.Значение = Контрагент; ФормаСпр.ОткрытьМодально(); КонецПроцедуры | |||
| 9
    
        Михаил Козлов 06.12.13✎ 16:52 | 
        (8) А модально зачем? Желательно еще в настройках отбора справочника установить недоступность для контрагента.
 В типовых можно посмотреть, как договор выбирается по организации и контрагенту. | |||
| 10
    
        Sharmon 06.12.13✎ 16:53 | 
        Согласен, можно немодально. Здесь привел текст для примера (вдруг поможет кому). На самом деле у меня разные условия, более сложные.     | |||
| 11
    
        patapum 06.12.13✎ 16:54 | 
        (8) а еще я думаю, выбрать ничего не получится. владелец формы-то не задан     | |||
| 12
    
        Господин ПЖ 06.12.13✎ 16:55 | 
        (11) +1     | |||
| 13
    
        Господин ПЖ 06.12.13✎ 16:56 | 
        ФормаСпр = Справочники.СМ_СчетНаОплатуПоставщика.ПолучитьФормуСписка(, Элемент);     | |||
| 14
    
        Sharmon 06.12.13✎ 17:06 | 
        (11), (12) - все работает по моему коду, т.е. просто ПолучитьФормуСписка();     | |||
| 15
    
        Sharmon 06.12.13✎ 17:07 | 
        Вот полный рабочий код:
 Процедура СМ_СчетНаОплатуНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = ложь; ФормаСпр = Справочники.СМ_СчетНаОплатуПоставщика.ПолучитьФормуСписка(); ФормаСпр.СправочникСписок.Отбор.Владелец.Использование = Истина; ФормаСпр.СправочникСписок.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно; Если (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.ВыдачаДенежныхСредствПодотчетнику) или (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.РасчетыПоКредитамИЗаймамСРаботниками) тогда ФормаСпр.СправочникСписок.Отбор.Владелец.Значение = Получатель; иначе ФормаСпр.СправочникСписок.Отбор.Владелец.Значение = Контрагент; КонецЕсли; Если (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.ВыдачаДенежныхСредствКассеККМ) или (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.ПеречислениеНалога) или (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.ПеречислениеЗП) или (ВидОперации = Перечисления.ВидыОперацийЗаявкиНаРасходование.ПрочийРасходДенежныхСредств) тогда ФормаСпр.СправочникСписок.Отбор.Владелец.Использование = ложь; КонецЕсли; ФормаСпр.Открыть(); КонецПроцедуры | |||
| 16
    
        samozvanec 06.12.13✎ 17:23 | 
        есть еще СвязиПараметровВыбора     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |