... на самом деле для работы с элементом формы отбора СКД нам нужно всего 3 поля - Использование, ЛевоеЗначение И ПравоеЗначениеДляКраткогоОтображенияЭлемента.
Когда необходимо назначить назначить свои обработчики проще всего это делать динамически
Когда необходимо назначить назначить свои обработчики проще всего это делать динамически
Процедура ПриОткрытии() // Определение типов данных // Так как метод Получить() работает только спо индексу элемента необходимо использовать перебор Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если Строка(ЭлементОтбора.ЛевоеЗначение) = "Дирекция" Тогда Элемент.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"); Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Неопределено); КонецЕсли; КонецЦикла; // Установление обработчика колонке КолонкаПравоеЗначение = ЭлементыФормы.Отбор.Колонки.Найти("ПравоеЗначениеДляКраткогоОтображенияЭлемента"); ДействиеНачалоВыбора = Новый Действие("ОтборПравоеЗначениеДляКраткогоОтображенияЭлементаНачалоВыбора"); Колонка.ЭлементУправления.УстановитьДействие("НачалоВыбора", ДействиеНачалоВыбора); ДействиеОкончаниеВвода = Новый Действие("ОтборПравоеЗначениеДляКраткогоОтображенияЭлементаОкончаниеВводаТекста") Колонка.ЭлементУправления.УстановитьДействие("ОкончаниеВводаТекста", ДействиеОкончаниеВвода); КонецПроцедуры
Процедура ОтборПравоеЗначениеДляКраткогоОтображенияЭлементаНачалоВыбора(Элемент, СтандартнаяОбработка) ПолеКомпоновкиДанных = ЭлементыФормы.Отбор.ТекущаяСтрока.ЛевоеЗначение; Если Строка(ПолеКомпоновкиДанных) = "Дирекция" Тогда Элемент.ВыборПоВладельцу = ПВХДирекция; КонецЕсли; КонецПроцедуры Процедура ОтборПравоеЗначениеДляКраткогоОтображенияЭлементаОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) ПолеКомпоновкиДанных = ЭлементыФормы.Отбор.ТекущаяСтрока.ЛевоеЗначение; Если Строка(ПолеКомпоновкиДанных) = "Дирекция" Тогда СтандартнаяОбработка = Ложь; ОбработкаОкончанияВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры Процедура ОбработкаОкончанияВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Ссылка |ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Владелец = &Владелец | И ЗначенияСвойствОбъектов.Наименование ПОДОБНО &Наименование + ""%"""; Запрос.УстановитьПараметр("Владелец", ПВХДирекция); Запрос.УстановитьПараметр("Наименование", Текст); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка")); ЭлСписка = ЭтаФорма.ВыбратьИзСписка(Список, Элемент); Если ЭлСписка <> Неопределено Тогда Значение = ЭлСписка.Значение; КонецЕсли; Иначе Элемент.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"); Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Неопределено); КонецЕсли; КонецПроцедуры