Имя: Пароль:
1C
 
История выбора при вводе - Как отфильтровать?
0 constantinevio
 
07.12.15
12:32
Итак, есть форма создания документа, на ней поле выбора из справочника. В этом справочнике часть значений принадлежит к "основной группе" а часть - нет (определяется по реквизиту типа булево). Так вот, в зависимости от одного из реквизитов формы нужно, чтобы в форме выбора и самое главное - в истории при быстром выборе (маленькое выпадающее окошко, где написано нажать F4 для просмотра всего списка) был отбор, и отображалась либо одна группа значений справочника, любо другая.

Форму выбора справочника я смог отфильтровать так:

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

Однако, в истории (окошко быстрого выбора) все равно либо лезет все подряд, либо она отключается полностью...

Существует ли какой-нибудь способ отфильтровать список истории выбранных значений и при этом не лезть на сервер большим запросом, и если да, то как?
1 Steini
 
07.12.15
13:05
В интернетах сто раз обсуждалось. Главный вопрос был от программистов разработчикам, ну вот как можно было сделать такую ерунду ненастраиваемой. На что был ответ, мол, так это ж такая крутая фича, ну кому в голову придет отключать её!??!?!

Начиная то ли с 8.3.6 у поля элемента добавили флажок, мол, неиспользовать историю. Но он все равно работает в 50% случаев)
2 Steini
 
07.12.15
13:13
Короче, отфильтровать нельзя, можно только отключить. Отключаться должно так:
ПолеИнициаторПроцесса.ИсторияВыбораПриВводе     = ИсторияВыбораПриВводе.НеИспользовать;
Но не всегда работает, разбираться нет времени, тем более на упр. формах платформа писана на костылях.

Поэтому можно использовать целый зоопарк настроек:

ПолеИнициаторПроцесса.КнопкаВыпадающегоСписка     = Ложь;
    ПолеИнициаторПроцесса.КнопкаВыбора                 = Истина;
    ПолеИнициаторПроцесса.КнопкаОчистки             = Ложь;
    ПолеИнициаторПроцесса.КнопкаОткрытия             = Ложь;
    ПолеИнициаторПроцесса.РедактированиеТекста         = Ложь;
    ПолеИнициаторПроцесса.КнопкаСоздания             = Ложь;
    ПолеИнициаторПроцесса.ОтображениеКнопкиВыбора     = ОтображениеКнопкиВыбора.ОтображатьВПолеВвода;
    ПолеИнициаторПроцесса.АвтоВыборНезаполненного     = Ложь;
    ПолеИнициаторПроцесса.БыстрыйВыбор                = Ложь;        
    ПолеИнициаторПроцесса.КнопкаСпискаВыбора        = Ложь;        
    ПолеИнициаторПроцесса.ИсторияВыбораПриВводе     = ИсторияВыбораПриВводе.НеИспользовать;        
    ПолеИнициаторПроцесса.СписокВыбора.Очистить();

Самое действенное - последняя строка.
3 constantinevio
 
07.12.15
13:13
Весь интернет перерыл... Нигде ничего внятного не нашел... ..т.е. никак?
4 constantinevio
 
07.12.15
13:15
Ясно... Печально. Спасибо за ответ!
5 Steini
 
07.12.15
13:16
+ тот же самый вопрос, но только про фильтрацию с использованием RLS, видел на партнерском форуме. На что ихенный разработчик честно ответил, что такой филтр к выпадающей истории применит абсолютно никак нельзя, и, по-видимому, не получится в будущих версиях платформы. типо отключайте этот список.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.