Имя: Пароль:
1C
 
Научите открыть управляемую форму списка с установкой пользовательского отбора
0 TormozIT
 
гуру
28.04.16
18:09
Есть форма списка. Хочу открыть ее так, чтобы в ней сразу установился отбор Поле=Значение, доступный для отключения пользователю.
Как это сделать без изменения формы?
Если так сделать нельзя, то как сделать с изменением формы?
1 TormozIT
 
гуру
28.04.16
18:23
Предполагаю, что возможно получится через

Расширение управляемой формы для динамического списка (Managed form extension for dynamic lists)
ПользовательскиеНастройки (UserSettings)
Описание:

Тип: ПользовательскиеНастройкиКомпоновкиДанных.
Пользовательские настройки, которые будут использоваться в основном динамическом списке формы.

Но не смог найти примеров его использования в типовых конфигурациях. Есть большие сомнения что задача решается без изменения формы.
2 Карупян
 
28.04.16
18:39
нужно индетификатор пользовательских настроек задавать, тогда все ок
3 TormozIT
 
гуру
28.04.16
18:41
(2) Научи, как это сделать для формы списка, не меняя ее метаданные?
4 Карупян
 
28.04.16
18:42
для отчета знаю как
  Настройки = Новый НастройкиКомпоновкиДанных;
    Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар");
    Элемент.ИдентификаторПользовательскойНастройки = "Идентификатор";
    
    ПараметрыФормы = Новый Структура("Вариант", Настройки);
    ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы);
5 TormozIT
 
гуру
28.04.16
18:48
(4) Осталось понять, как идентификатор пользовательской настройки посадить в настройки компоновки динамического списка.
6 mszsuz
 
28.04.16
19:18
ФормаВыбораКонтрагента = ПолучитьФорму("Справочник.Контрагенты.ФормаВыбора");
    
    Список = ФормаВыбораКонтрагента.Список;
    Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
    ЭлементОтбора = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));    
    
    ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Код");
    ЭлементОтбора.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование    = Истина;
    ЭлементОтбора.ПравоеЗначение   = "00-000001";
    ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    
    Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки = Строка(Новый УникальныйИдентификатор);    
    
    ФормаВыбораКонтрагента.Открыть();

Отключить отбор можно в Ещё - Настройка списка
7 TormozIT
 
гуру
28.04.16
19:21
(6) Спасибо.
8 Барматолог
 
28.04.16
19:53
надо добавить в базу знаний
9 TormozIT
 
гуру
28.04.16
19:58
(6) Немного не универсально из-за того, что идет привязка к имени реквизита списка ("Список").

Еще вопрос. Как получить представление пользовательского и финального отбора? Желательно в виде пути к данным, чтобы сразу в поле формы можно было отобразить.
10 EvgeniuXP
 
29.04.16
00:02
если уф, можно было сразу передать в форму параметр "Отбор" :)
11 EvgeniuXP
 
29.04.16
00:04
хотя и в (6) отработает, но это для извращенцев :)
12 bazvan
 
29.04.16
00:13
(6) ипический верталет кто вернулся!!! Не уж то тот самый да еще на снеговика
13 mszsuz
 
29.04.16
02:44
(11) Согласен, через Параметры будет правильнее, потому что у формы в ПриСозданииНаСервере() могут выполняться доп.действия на основе полученного Параметры.Отбор
(12) я всегда тут )
14 sapphire
 
29.04.16
07:25
(8) Зачем? :)
15 TormozIT
 
гуру
29.04.16
08:28
(10),(13) Через параметры формы такая задача как я понял не решается. Поэтому способ (6) - единственный рабочий.
16 Franchiser
 
гуру
29.04.16
10:04
Закладка