Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Ограничить список выбора в Управляемой форме

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

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

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

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

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

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

    //ДанныеВыбора = ПолучитьСписокЭтаповНаСервере();

    
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует