Имя: Пароль:
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
Быть может кому-то поможет. Вопрос реализован следующим образом:

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

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