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