Как обработать выбор значения в поле ввода
30.05.2018
Теги: 1С:Предприятие • ОбработкаВыбора • ОповеститьОВыборе • УправляемаяФорма • ЭлементФормы
При выборе ссылочного значения в поле ввода иногда возникает необходимость специальным образом обработать выбирамемое значение. Например, в документе нужно выбрать поставщика. Но нужно вмешаться в процесс выбора значения и кроме ссылки на поставщика получить еще и другую информацию о поставщике. Например, его полное наименование и ИНН, которые являются реквизитами поставщика.
Для того, чтобы вмешаться в процесс выбора значения используется событие ОбработкаВыбора
элемента формы Поле
. Это событие поставляется расширением поля ввода. Обработчик этого события имеет такой синтаксис:
ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
В параметре ВыбранноеЗначение
платформа передает в обработчик то значение, которое выбрал пользователь. В данном случае это будет ссылка на поставщика. Но проблема заключается в том, что обработчик ОбработкаВыбора
исполняется на клиенте. А на клиенте возможности ссылки очень сильно ограничены. В частности, от нее нельзя через точку получить значения реквизитов.
Поэтому для того, чтобы в этой ситуации получить значения реквизитов ссылки, нужно из этого обработчика вызвать серверную функцию и в ней получить нужные реквизиты. Например так:
&НаКлиенте Процедура ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) ИНН = ПолучитьРеквизитВыбранногоЗначения(ВыбранноеЗначение); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьРеквизитВыбранногоЗначения(ВыбранноеЗначение) Возврат ВыбранноеЗначение.ИНН; КонецФункции
При этом следует иметь ввиду два момента:
- Во-первых, для получения реквизитов используется неконтекстный серверный вызов (
&НаСервереБезКонтекста
). Это важно, т.к. в этом обработчике нельзя использовать контекстные серверные вызовы (&НаСервере
). - Во-вторых, любое обращение к серверу требует дополнительных ресурсов системы и может замедлять работу пользователя, особенно в случае подключения по низкоскоростному каналу связи. Поэтому нужно прежде всего внимательно оценить, а так ли необходимо в этом месте получать реквизиты ссылки или можно обойтись без этого? И если нужно получать несколько реквизитов и при этом используется какой-то сложный алгоритм — нужно постараться реализовать его так, чтобы все необходимые данные получить за один серверный вызов, вернуть их на клиента и на клиенте только поместить их в нужные поля формы, не проводя каких-то сложных вычислений.
Справка
УправляемаяФорма.ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Параметры:
ВыбранноеЗначение
, типПроизвольный
. Результат выбора в подчиненной форме. В случае множественного выбора возвращается массив выбранных значений.ИсточникВыбора
, типПроизвольный
. Форма, где осуществлен выбор.
Описание:
- Возникает на клиенте при выборе объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода
ОповеститьОВыборе
.
УправляемаяФорма.ОповеститьОВыборе(ЗначениеВыбора)
Параметры:
ЗначениеВыбора
, обязательный, типПроизвольный
. Результат выбора.
Описание:
- Посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение. Закрывает форму в соответствии со значением свойства
ЗакрыватьПриВыборе
. Данное действие аналогично выполнению выбора в форме, открытой для выбора в поле ввода или ячейке табличного поля.
Доступность:
- Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
- Может применяться в случае, когда открытие формы выбора или подбора выполнено средствами языка.
Поиск: 1С:Предприятие • Обработка выбора • Оповестить о выборе • Управляемая форма • Элемент формы