Имя: Пароль:
1C
1С v8
ОкончаниеВводаТекста ПолеВвода
,
0 Powerfool
 
01.08.13
11:14
Добрый день! У меня такая задача, надо при вводе слова в поле ввода выдавать список из которого пользователь выбирает нужный элемент и этот элемент далее заносится в реквизит документа. Проблема только, в процедуре поля ввода ОкончаниеВводаТекста пишу код

Выбор = ВыбратьИзСписка(Список, Элемент);    
Если Выбор = Неопределено Тогда
   Контрагент = Текст;
Иначе
   Контрагент = Выбор.Значение;
КонецЕсли;

Этот код отрабатывает на ура, и Контрагент дейтсвительно становиться тем кого выбрал пользователь, но вот потом че то происходит и по итогув реквизите уже лежит не тот кого выбрали, а послений элемент из того самого выпадающего списка. Как мне эту ерунду поправить, кто сталкивался?
1 butterbean
 
01.08.13
11:16
в отладчик
2 Powerfool
 
01.08.13
11:16
Забыл сказать с полем ввода связан реквизит документа, который имеет составной тип: строка и справочникссылка. Может это как то поможет
3 Powerfool
 
01.08.13
11:19
(1) Ещё раз: в отладчике смотрю, что после выполнения кода в (0) Контрагент - это тот кого выбрал пользователь, далее смотрю в другой процедуре при отладке что контрагент уже поменялся. Я грешу на какую нибудь стандартную процедуру, которую как всегда хрен поймаешь, вот и решил написать, мож кто уже побеждал такое?
4 Powerfool
 
01.08.13
11:21
Кстати в событии АвтоПодборТекста все работает так как надо, только меня раздражает что ввод текста постоянно обрывается этой процедурой и появлением списка, когда не надо
5 Широкий
 
01.08.13
11:22
СтандартнаяОбработка=ЛОЖЬ?
6 Powerfool
 
01.08.13
11:25
(5) Да. В первую очередь проверил. Я даже пробовал во всех собятиях этого поля проставлял СтандартнаяОбработка=ЛОЖЬ. Результат = 0
7 Infsams654
 
01.08.13
11:27
(4) так надо еще у элемента формы установить значение,
типа
Элемент.Значение = ЭлементСписка.Значение;
8 Powerfool
 
01.08.13
11:30
(7) Так элемент с этими данные связан, ну тоесть у этого ПолеВвода.Данные = Контрагент.
9 Powerfool
 
01.08.13
11:38
ап
10 Infsams654
 
01.08.13
11:44
(8) так у него ж есть список выбора, вот с ним и надо подработать, чтоб на форме элемент правильно отображался.
Тут, имхо, в 1С платформе что-то не так
11 Euguln
 
01.08.13
11:49
(3) Внимательно пройди отладчиком F11.
Может где-то есть еще присвоение "Контрагент ="
12 Powerfool
 
01.08.13
11:58
(11) Да тут вообще финт ушами, у меня присвается не абы какое значение, а именно последнее из выпадающего списка. Ну тоесть например выпадает список с тремя значениями "1", "2" и "3". Пользователь выбирает "1", в отладчике я вижу это сразу после кода из (0). Смотрю дальше, а там уже не "1", а "3". Вот такие вот у нас платформа задачи ставит
13 Euguln
 
01.08.13
12:00
В (0) Элемент.Значение меняется?
14 Powerfool
 
01.08.13
12:03
(13) угу
15 Powerfool
 
02.08.13
04:31
Наверное поставлю точку. Ничего умней придумать не смог и сделал так: завел переменную лобальную лКонтрагента. Код из (0) поменял так:

   Если Выбор = Неопределено Тогда
       лКонтрагент = Текст;
   Иначе
       лКонтрагент = Выбор.Значение;
   КонецЕсли;

А потом сделал так:

   Если Не лКонтрагент = Неопределено Тогда
       Если Не Контрагент = лКонтрагент Тогда
           Контрагент = лКонтрагент;
       КонецЕсли;
   КонецЕсли;

Вроде взлетело но как то уж больно по индийски. Надеюсь кому то поможет. Кстати вопрос по прежнему открыт, если у кого что есть добавить ...
16 Powerfool
 
02.08.13
04:32
(15) не совсем так, а вот так:

Процедура ПолеВвода1ПриИзменении(Элемент)
   Если Не лКонтрагент = Неопределено Тогда
       Если Не Контрагент = лКонтрагент Тогда
           Контрагент = лКонтрагент;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры