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