Имя: Пароль:
1C
1С v8
Изменить тип значения элемента управления на форме и отобразить список выбора
0 nikitaz
 
11.08.15
12:31
Есть реквизит Контрагент, который имеет составной тип данных: Строка, СправочникСсылка.Контрагенты

Есть форма, на которой есть элемент управления поле ввода "Контрагент". Этот элемент управления имеет свойство Данные = реквизит Контрагент. При открытии формы есть я устанавливаю значение реквизита = пустой строке.

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
     Контрагент = "";
КонецПроцедуры

Мне необходимо, чтобы при вводе произвольной строки в поле вводе "Контрагент" был выполнен поиск по справочнику "Контрагенты" (это я сделал), и если элемент найден, то тип данных в поле ввода менялся на "СправочникСсылка.Контрагенты", при этом отображался стандартный список выбора (т.е. список контрагентов, начинающихся на введенные символы).

Другими словами, если вводишь "Зав", а в справочнике "Контрагенты" есть "Завод бетона", "Завод электроники", то тип значения поля ввода должен меняться на "СправочникСсылка.Контрагенты", и должна запускаться стандартная обработка.

Как это сделать? Пока я сделал так, как ниже, но в моём варианте в поле ввода просто подставляется первый найденный элемент справочника "Контрагенты".

Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
    //Если можно найти контрагента, то подставляем контрагента из справочника
    спрсКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию(Текст, Ложь);
    Если ЗначениеЗаполнено(спрсКонтрагент) Тогда
        Элемент.Значение = спрсКонтрагент;
    Иначе
        Элемент.Значение = Текст;
    КонецЕсли;
КонецПроцедуры
1 D_E_S_131
 
11.08.15
12:35
А что нужно делать с этим элементом, если ввел "зав", а ни одного контрагента нет с таким началом наименования?
2 nikitaz
 
11.08.15
12:37
(1) Если контрагента нет, оставлять строку. Т.е. тип не менять.
3 nikitaz
 
11.08.15
18:17
Да неужели никто ничего больше не напишет?
4 runoff_runoff
 
11.08.15
19:13
может СтандартнаяОбработка = Ложь?..
5 nikitaz
 
11.08.15
20:49
(4) А что это изменит? Тип значения сейчас строка. Нужно, чтобы тип значения поменялся
6 D_E_S_131
 
11.08.15
22:48
(2) Т.е. так и оставить надпись "Зав"?
7 nikitaz
 
12.08.15
06:29
(6) Да