Имя: Пароль:
1C
1С v8
Помогите разобраться с полем ввода и режимом выбора из списка
0 Adeha
 
22.11.16
11:50
Уже сломал голову.

Есть форма, на ней поле ввода - ИмяПользователя, данные одноименные.
У поля стоит птичка РежимВыбораИзСписка.
При запуске процедуры ЗаполнитьИменаПоУмолчанию() список выбора заполняется значениями по умолчанию.
Но установить первый элемент из этого списка в само поле ввода не получается, что я только не перепробовал.
Самое интересное что
ИмяПользователя= СокрЛП(Элементы.ИмяПользователя.СписокВыбора.Получить(0).Значение);
Сообщить(ИмяПользователя); //выводит мне имя
Но если я обращаюсь после к этим данным, к примеру из другой процедуры, Сообщить(ИмяПользователя) уже выдает пустое значение, хотя к примеру Сообщить(Элементы.ИмяПользователя.ТекстРедактирования) выдает значение нужное...

Что я делаю не так, 2 дня ломаю голову уже. Не может же быть что программно нельзя установить значение в поле вводу с имеющимся списком выбора.

P.S. Если отключить список выбора все записывается и считывается как по маслу.
1 catena
 
22.11.16
11:54
(0)Убрать "птичку" РежимВыбораИзСписка, поставить "птичку" КнопкаСпискаВыбора.
2 Adeha
 
22.11.16
12:02
Спасибо, помогло. Как оно работает тогда при птичке РежимВыбораИзСписка? Почему не дает программно работать с полем ввода?
3 catena
 
22.11.16
12:25
(2)А вы списко в какой момент заполняете?
4 catena
 
22.11.16
12:27
при установленной галке "РежимВыбораИзСписка" сохраненные данные при отображении подвязываются к списку, т.е. значение реквизита ищется в списке и найденный элемент списка отображается в поле ввода. Если галка не установлена, то список существует как-бы сам по себе.

Поэтому заполнять его надо ДО того, как будет произведен вывод данных, например в процедуре ПередОткрытием(), а не перед выбором из списка.
5 RomaH
 
naïve
22.11.16
12:35
типы не совпадают
у вас вообще все смешалось
локальные переменные, реквизиты объекта и типы
6 RomaH
 
naïve
22.11.16
12:36
ИмяПользователя= СокрЛП(Элементы.ИмяПользователя.СписокВыбора.Получить(0).Значение);
Сообщить(ИмяПользователя);//выводит мне имя

естественно - потому-что вы объявили переменную и присвоили ей значение
7 Adeha
 
22.11.16
12:43
Эта переменная - в реквизитах формы и указана как данные для одноименного элемента формы "поле ввода".
Я ее не объявляю а записываю в нее значение первого элемента из списка выбора, что б данные из этой переменной отобразились в форме.

Заполняю я нажатием кнопки, после того как список заполнился хочу взять первый элемент из него и установить в поле ввода как умолчание.
8 Adeha
 
22.11.16
12:45
В рамках одной процедуры
9 d546
 
22.11.16
13:08
&НаКлиенте
Процедура Команда1(Команда)
    
    Элементы.Имя.СписокВыбора.Очистить();
    Элементы.Имя.СписокВыбора.Добавить("Сергей");
    Элементы.Имя.СписокВыбора.Добавить("Иван");
    Элементы.Имя.СписокВыбора.Добавить("Петр");
    
    Имя = Элементы.Имя.СписокВыбора.Получить(0).Значение;
    
КонецПроцедуры
10 d546
 
22.11.16
13:09
Имя - реквизит формы - строка(0)
11 Adeha
 
22.11.16
13:13
Да, и такая конструкция не работала, поле ввода оставалось пустым, а должно быть Сергей.
12 d546
 
22.11.16
13:16
у элемента стоит галка "Режим выбора из списка"?
типы реквизита формы = строка?

если все так, я не знаю чем помочь, попробуй нарисовать форму заново.
13 Adeha
 
22.11.16
13:36
Поставил режим КнопкаСпискаВыбора, в нем все так как нужно. Список заполняется, в поле ставится первый элемент.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший