Имя: Пароль:
1C
1С v8
Программно установить фильтр в форме выбора
0 Sharmon
 
29.04.13
10:41
Делаю подбор документов "ОбслуживаниеКлиента"

ЗначениеОтбора = Новый Структура("Контрагент", Контрагент);
ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, Отбор", Ложь, ЗначениеОтбора);
ОткрытьФормуМодально("Документ.ОбслуживаниеКлиента.ФормаВыбора", ПараметрыФормы, ЭлементыФормы.ЛистУчетаРабВремени);

Все работает, кроме фильтра по Контрагенту. Т.е. в форме выбора все контрагенты. В чем ошибаюсь?
1 Aprobator
 
29.04.13
10:51
имхо, в названии отбора. Там небось не контрагент, а ДокументыПоКонтрагенту или что то подобное.
2 Sharmon
 
29.04.13
10:57
Нет, именно "Контрагент"
3 Aprobator
 
29.04.13
10:58
(2) для проверки можно открыть форму списка документа и жмакнуть на кнопку отбор. И посмотреть там, есть ли там отбор с именем коннтрагент. Хотя, это довольно грубоватый способ.
4 Aprobator
 
29.04.13
11:00
более элегантный, поставить точку останова в форме списка документа в процедуре ПриОткрытии и там посмотреть отладчиком имена доступных элементов отбора.
5 D_Pavel
 
29.04.13
11:09
А стоит "Индексировать" в реквизите Контрагент?
6 эцп
 
29.04.13
11:13
(0) А речь идет об УФ?
7 Sharmon
 
29.04.13
11:18
Нет. Обычное приложение. "Индексировать" установил, но все равно отбор не работает
8 эцп
 
29.04.13
11:23
(7) А в обычном приложении такое не прокатывает. В обычном нужно действовать как обычно:
Форма.ДокументСписок.Отбор.Контрагент.Установить(Контрагент);
9 Sharmon
 
29.04.13
11:24
Вот таким кодом заменил, все работает как надо:

  ФормаВыбора = Документы.АРБИС_ОбслуживаниеКлиента.ПолучитьФормуВыбора("ФормаСписка",ЭлементыФормы.Лурвы);
  ФормаВыбора.Отбор.Контрагент.Использование = Истина;
  ФормаВыбора.Отбор.Контрагент.Значение = Контрагент;
  ФормаВыбора.ЗакрыватьПриВыборе = Ложь;
  ФормаВыбора.РежимВыбора = Истина;
  ФормаВыбора.ОткрытьМодально();