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