Имя: Пароль:
1C
1С v8
Как изменить отбор динамического списка 8.3!
,
0 ChAlex
 
22.10.13
20:05
Суть проблемы в следующем: в событии формы "ПриСозданииНаСервере" для динамического списка устанавливается отбор в коллекции: КомпоновщикНастроек.Настройки.Отбор. В событии "ПриОткрытии" этот отбор уже попадает в коллекцию КомпоновщикНастроек.ПользовательскиеНастройки. При открытии нужно переопределить отбор (необходимо потому что на сервере не доступен ВладелецФормы!! а нужно теперь проанализировать владельца и значение установить другое). А дальше заколдованный круг: устанавливаю значение отбора хоть в Настройках, хоть в пользовательских настройках, хоть в обоих сразу - но форма открывается игнорирую эти самы значения. При этом открываем настройки списка - все стоит так как переопределено при открытии формы! Все вступает в силу только по клику "Установить стандартные настройки".

Блин никак не догоню как с этими отборами теперь работать! Задрали по самого немогу - в документации 5 строчек про все!
1 EvgeniuXP
 
22.10.13
21:35
Динамический список? компоновщик настроек? ты што курил?
2 ChAlex
 
22.10.13
23:28
8.3 - если не в курсе
3 EvgeniuXP
 
22.10.13
23:46
(3) кури ДинамическийСписок.Отбор.
4 EvgeniuXP
 
22.10.13
23:48
а так, через параметры передают отбор :)
5 ChAlex
 
22.10.13
23:48
(3)- блин - вы бы хоть одним глазом на 8.3 посмотрели бы, прежде чем отсылать крить.
6 EvgeniuXP
 
22.10.13
23:49
ДинамическийСписок.Параметры.УстановитьЗначениеПараметра()

P.S. я в нем и работаю уже год.
7 ChAlex
 
22.10.13
23:49
(4) ну попробуйте передать через параметры например отбор по виду "Не в списке" или "не равно" ит.п.
8 ChAlex
 
22.10.13
23:51
а еще попробуйте поработать когда не нужен отбор, покувыркайтесь с тем как теперь убрать этот самый параметр - ну и придете к полному пониманию когда и чем делать отбор
9 EvgeniuXP
 
22.10.13
23:54
ну если КомпоновщикНастроек - а это СКД - кувыркаться там нечего - курить СКД :)
10 EvgeniuXP
 
22.10.13
23:54
на курсах про все эти настройки рассказывают.
11 ChAlex
 
22.10.13
23:59
уже тошнит от курева.
12 ChAlex
 
22.10.13
23:59
только просветления так и не наступает
13 Nexux
 
23.10.13
00:02
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора - если используете БСП
14 Apokalipsec
 
23.10.13
00:03
(12) на сервере создали уже форму и наложили отбор, соответственно при открытии надо проанализировать и либо сбросить установленные уже отборы и поставить новые, либо ничего не делать.
15 ChAlex
 
23.10.13
00:11
(14) - ну так я и устанавливаю новые (При открытии настроек списка эти самые установленные отборы и отображаются) - только список по этм отборам не фильтруется. Или здесь ключевое слово "СБРОСИТЬ"?
16 ChAlex
 
23.10.13
00:12
(13) - угу хоть и не используется БСП, но оттуда посмотрел и взял и устаноавливается аналогично как там
17 Apokalipsec
 
23.10.13
00:22
(15) именно сбросить.)
18 Apokalipsec
 
23.10.13
00:27
// Удаляет элементы группы отбора динамического списка.
//   Работает для платформы версии 8.3.
//
// Параметры:
//   ДинамическийСписок (ДинамическийСписок) Реквизит формы, для которого требуется установить отбор.
//   Остальные параметры - см. УдалитьЭлементыГруппыОтбора()
//
Процедура УдалитьЭлементыГруппыОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля = Неопределено, Представление = Неопределено) Экспорт
19 ChAlex
 
23.10.13
00:33
(18) - надо будет с утрица попробовать. Списибо за подсказку. Уже к этому интуитивно подбирался - только не позволила удалить элемен отбора - выдала "отбор используется в пользовательских настройках". Надо будет поковыряться в листинге.
20 ChAlex
 
23.10.13
12:33
После танцев с бубнами все-таки поборол таки отборы. Почти уверен что криво, но как-то дальше не охота экспериментировать.

Итак анализ разбора:

1. Если просто изменить значения отборов без их удаления - к эффекту данные действия не приводят - хоть и значения отборов переопределяются и отображаются в форме настроек списка но как их в таком случае программно заставить применить - не нашел. Только интерактивно через "Установить стандартные настройки".
2. Выход только в удалении отбора и повторного его создания. Но и тут есть грабли. Удаление и повторное создание должно проходить в одном контексте (либо на сервере, либо на клиенте) - Ибо если попробовать удалить отбор на сервере вызовом процедуры с клиента - получим "отбор не доступно для записи" (я так понимаю нечто подобное мутабельному значению). Не знаю правильно это или нет, но вывод один - делать все изменения нужно в одном контексте.

Не понимаю почему нельзя сделать простым переопределением элементов коллекции а приходится извращаться... дальше без комментариев