В управляемом приложении в таблице формы поле с типом: Справочник.Номенклатура, Строка(Составное поле) не отрабатывает событие.
Ни очистка, ни вставка — как-будто вообще отключено, возможно связано с отключенным «Выбирать тип».
Решение
Воспользоваться событием «Автоподбор» — оно срабатывает не только на ссылочные типы.
Также имеет возможность сразу генерировать список выбора (что и требовалось в событии обработки выбора)
Получилось вот так:
&НаКлиенте Процедура НазначенияНазначениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Если Ожидание<>0 и Текст<>"" Тогда ДлинаТекста = СтрДлина(Текст); Если ДлинаТекста >3 Тогда РезультатПоиска = ПоискНоменклатуры(Текст,ВидЦены); АдресАвтоПоиска = ПоместитьВоВременноеХранилище(РезультатПоиска,?(АдресАвтоПоиска ="" или ЭтоАдресВременногоХранилища(АдресАвтоПоиска)= Ложь,Новый УникальныйИдентификатор,АдресАвтоПоиска)); Если РезультатПоиска.Количество>0 тогда СтандартнаяОбработка = Ложь; ДанныеВыбора = Новый СписокЗначений; Для каждого Эл из РезультатПоиска.Цены Цикл ДанныеВыбора.Добавить(Эл.Наименование+" ",Эл.Наименование+" = "+Эл.Цена+" "+эл.Валюта); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры
Обрабатываются текст с длиной более 3 символов, вызывается служебная функция ПоискНоменклатуры(), которая возвращает структуру с номенклатурой и ценами.
Далее, в событии «ПриИзменении» устанавливается цена в этой же строке.
&НаКлиенте Процедура НазначенияНазначениеПриИзменении(Элемент) тд = Элементы.Назначения.ТекущиеДанные; Если тд = Неопределено Тогда Возврат КонецЕсли; Если ЭтоАдресВременногоХранилища(АдресАвтоПоиска) тогда РезультатПоиска = ПолучитьИзВременногоХранилища(АдресАвтоПоиска); Для каждого Эл из РезультатПоиска.Цены Цикл Если тд.Назначение = (Эл.Наименование+" ") Тогда тд.Цена = Эл.Цена; //Не работает установка //Длина = СтрДлина(Эл.Наименование+" "); //Элемент.УстановитьГраницыВыделения(Длина,Длина); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
Женщина побеждает как реклама: повторяя одно и то же.