Имя: Пароль:
1C
1С v8
Отбор в иерархическом справочнике управляемое приложение
,
0 gash85
 
29.08.12
11:24
доброго времени суток. 1с 8.2 (8.2.15.301), управляемое приложение
есть иерархический справочник "Контрагенты". Необходимо реализовать отбор по Автору элемента справочника. В справочнике около 3000 записей.
Пробую сделать так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)

Отбор = Новый Структура("Менеджер", Пользователь);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
Форма = ПолучитьФорму("Справочник.Контрагенты.Форма.ФормаСписка1", ПараметрыФормы);
Форма.Открыть();

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

Однако в процессе отбора отладчик автоматически закрывается.
Подскажите как иначе можно реализовать отбор или что я делаю неверно.
1 Wobland
 
29.08.12
11:25
> процессе отбора отладчик автоматически закрывается.
как это?
2 gash85
 
29.08.12
11:26
счетчик "текущие вызовы" доходит до 356 и на этом 1С закрывается
3 Юрий Лазаренко
 
29.08.12
11:30
(2) У тебя в итоге отбора получается пустой список, который постоянно обновляется, несколько раз в секунду. Смотри почему получается пустой список а еще лучше посмотри почему идет его обновление когда он пустой, может где-то стоит обработчик "ПриАктивизацииСтроки"?
Проверь - если в списке будет хоть одно значение, то такого зацикленного обновления не будет.
4 gash85
 
29.08.12
11:34
"ПриАктивизацииСтроки" нигде не вызывается. Подскажите, как можно проверить почему пустой список и почему зацикленность получается?
5 gash85
 
29.08.12
12:13
после Форма.Открыть() "прыгает" в начало. почему - не понимаю...
6 gash85
 
29.08.12
13:19
с зацикливанием понятно, вопрос снят. не работает отбор. в чем тут может быть вопрос?
7 gash85
 
29.08.12
13:40
переформулирую вопрос - в какую процедуру это правильно вставить? в обычном приложении это было бы "ПередОткрытием", в управляемом приложении куда ставить отбор?
8 vmv
 
29.08.12
13:41
(6) проблекма в том, что ты хочешь сесть на два стула

1-ый: отобрать иерархические элементы по автору создания записи БД
2-ой: показать все красиво-деревнно

а хренушки,
- 1С еще не досконально оптимизировала "работу" с иерархией  
- если в отбор попали группы, то будут бзики системы или банально пустой список

при отборах на иерархию нужно всегда помнить о родительских элементах и исключить их из отбора, если кто-либо из детишек пропушен к просмотру, ну или отображать таблицу на форме простым плоским списком.
9 vmv
 
29.08.12
13:43
(7)

&НаКлиенте
ПриОткрытии()

УстановитьМоиГлючныеОтборы(Отказ);

КонецПроцедуры
10 Reset
 
29.08.12
13:43
Ребзя, я думаю он в при открии формы ее еще раз открывает
11 vmv
 
29.08.12
13:45
(10) мдя, это уже третий стул - жидкий, я из скромности умолчал)
12 olegves
 
29.08.12
14:02
(0) на палитре свойств элемента Список найди "Настройка списка", открой и добавь на закладке Отбор Автора
В процедуре ПриСозданииНаСервере установи правое значение отбору

и будет тебе щастье
13 gash85
 
29.08.12
17:33
Быть может кому-то поможет. Вопрос реализован следующим образом:

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

Все как нужно выбирает. Даже с учетом того, что это иерархический справочник.
В результате отбора получаем все каталоги, а в них видны только те элементы, которые принадлежат данному пользователю. Т.е. структуру сохранили, данные отфильтровали.
Всем спасибо.