Имя: Пароль:
1C
1С v8
Ограничить список выбора в Управляемой форме
0 Быдло замкадное
 
08.05.18
12:24
Привет, подскажите как по феншую сделать ограничение в управляемой форме.
Есть поле выбора, тип справочник, хочу ограничить значения выбора программно, заполняю "СписокВыбора"

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Элементы.Этап.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокЭтаповНаСервере());
    
КонецПроцедуры

В отладчике в Элементы.Этап.СписокВыбора вроде 2 элемента, все ОК.

Но в выпадающем списке все подряд, да еще и задвоения (всего в справочнике 3 элемента)

https://s8.hostingkartinok.com/uploads/images/2018/05/a5f0e2861d2a63ed04ee7b909591aa8c.jpg
1 Fragster
 
гуру
08.05.18
12:25
СтандартнаяОбработка = ложь
2 Быдло замкадное
 
08.05.18
12:26
я уж молчу о том что при нажатии на "стрелочку выбора" обработчики НачалоВыбора и НачалоВыбораИзСписка вообще не срабатывают по точке останова... Это вообще непонятно, какое событие отлавливать?

&НаКлиенте
Процедура ЭтапНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    //СтандартнаяОбработка = Ложь;
    //ДанныеВыбора = ПолучитьСписокЭтаповНаСервере();
    
КонецПроцедуры

&НаКлиенте
Процедура ЭтапНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    
    //СтандартнаяОбработка = Ложь;
    //Элемент.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокЭтаповНаСервере());
    
КонецПроцедуры
3 Быдло замкадное
 
08.05.18
12:30
(1) добавил, не помогло..
4 Fragster
 
гуру
08.05.18
12:32
а для (0) еще у элемента управления надо поставить галку "режим выбора из списка"
5 Fragster
 
гуру
08.05.18
12:32
а (1) не смотреть, да :)
6 Быдло замкадное
 
08.05.18
12:40
(4) Да! После установки галки и ПриСозданииНаСервере заработало. И точка останова в ЭтапНачалоВыбора!
Спасибо
7 Быдло замкадное
 
08.05.18
12:56
теперь новый прикол. Если выбрать значение то в поле пусто))
И при открытии поле пустое.

Я уже использую процедуру:

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

В выпадающем списке правильные 2 значения.
8 Buster007
 
08.05.18
13:08
ограничение выбора накладывается не списком выбора, а в параметрах выбора реквизита, или связях параметров выбора.
костыли это не круто.
9 Быдло замкадное
 
08.05.18
13:09
нашел тут решение
https://www.forum.mista.ru/topic.php?id=701819

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


Но оно у меня не работает! Выдает на выбор все 3 элемента. Эта 8.3 еще сырая...(с) банальное действие сделать не могу.
На обычных формах за минуту делается.
10 Быдло замкадное
 
08.05.18
13:10
(8) у меня эти значения хранятся в отдельном регистре сведений. А в параметрах выбора только реквизиты документа. Значит нельзя использовать параметры выбора?
11 Buster007
 
08.05.18
13:17
можно попробовать это проделать в процедуре ОбработкаПолученияДанныхВыбора() или как-то так. В параметры выбора надо передать значение по которому осуществлять отбор. Дальше сам разберешься
12 Быдло замкадное
 
08.05.18
13:50
(11) не пашел похожей процедуры.
Вобщем жесть эти УФ. Пока решения не нашел
13 Мыш
 
08.05.18
13:53
(12) Модуль менеджера того справочника, значения которого хочешь ограничить.
14 Fragster
 
гуру
08.05.18
14:01
(7) кроме режима выбора из списка и установки списка выбора все остальное убери
15 Fragster
 
гуру
08.05.18
14:01
(13)(11) это имеет смысл, если подобная конструкция используется более чем в одном поле ввода
16 Быдло замкадное
 
08.05.18
14:28
(14) да у меня так и есть. Только надо было Элемент.СписокВыбора использовать а не ДанныеВыбора.

У меня сработал только данный метод:
Галка режим выбора из списка

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Элементы.Этап.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокЭтаповНаСервере());
    
КонецПроцедуры

Про создании на сервере нужно что бы при открытии документа поле не было пустым... (Без данного кода в старых документах элемент при открытии пустой был.)

Это все в 1С:Предприятие 8.3 (8.3.10.2561)
Подозреваю что на более поздних платформах и по другому можно. И на 8.2
17 Buster007
 
08.05.18
14:37
(15) это конструкция создана для этих случаев и не важно в каком количестве мест это используется. Тем более, как обычно бывает, сегодня только в одном месте, а завтра в 2х. Короче, лепите как хотите )