При работе с управляемыми формами платформы 1С:Предприятие часто возникает задача подменить стандартную форму выбора своей собственной. Особенно остро этот вопрос стоит при работе с колонками табличной части, реквизиты которых имеют составной тип данных. Рассмотрим, почему не удается сразу найти нужный обработчик и как правильно перехватить событие нажатия кнопки выбора.
В управляемых формах события вызова форм выбора привязаны непосредственно к элементам формы (полям ввода в колонках таблицы), а не к реквизитам объекта или самой табличной части. Если пытаться найти событие выбора в свойствах реквизита или в контекстном меню самой таблицы, нужный обработчик отображаться не будет.
Разберем по шагам, как правильно назначить событие:
F4).НачалоВыбора и нажмем лупу для создания клиентского обработчика.Проанализируем особенности работы составных типов данных. По умолчанию при клике на кнопку выбора в ячейке с составным типом 1С сначала выводит системное окно выбора типа данных, а затем открывает стандартную форму списка выбранного объекта. Чтобы полностью перехватить этот процесс и запустить свою форму, необходимо отменить стандартные действия платформы.
Для этого в обработчике события НачалоВыбора устанавливают флаг СтандартнаяОбработка = Ложь. При открытии своей формы через процедуру ОткрытьФорму в качестве третьего параметра (владельца) обязательного передают текущий элемент Элемент. В этом случае платформа автоматически подставит выбранное пользователем значение в ячейку табличной части.
Рассмотрим пример кода обработчика события НачалоВыбора:
&НаКлиенте
Процедура ТабличнаяЧастьРеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Отключаем стандартный диалог выбора типа и стандартную форму списка
СтандартнаяОбработка = Ложь;
// Подготавливаем параметры для открытия кастомной формы
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗакрытиеПриВыборе", Истина);
// Открываем произвольную форму выбора и указываем Элемент в качестве владельца
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
Посмотрим на другие варианты работы с кнопкой выбора в ячейках табличной части, которые помогут оптимизировать разработку без лишнего кода:
ВыборТипа вместо НачалоВыбора.ОграничениеТипа, передав объект типа ОписаниеТипов.ПараметрыВыбора или СвязиПараметровВыбора в палитре свойств колонки.Таким образом, правильное использование события НачалоВыбора на элементе колонки с отключением СтандартнаяОбработка = Ложь позволяет полностью контролировать процесс выбора значений в управляемых формах 1С.