Параметры формы
Параметры формы
1. Общая информация
Параметры формы (закладка Параметры) служат двум целям:
● Описать набор данных, которые будут влиять на открытие формы (параметризация формы). Для этого нужно перечислить все необходимые параметры и указать их типы.
● Определить параметры, которые будут влиять на ключ уникальности формы. Для этого необходимо установить свойство Ключевой параметр у тех параметров, которые должны участвовать в формировании ключа уникальности формы. При попытке открыть форму система производит поиск существующей формы с помощью сформированного ключа уникальности формы. Если в системе существует форма с полученным ключом
уникальности, возвращается именно эта форма; если нет – создается новая форма.
При вызове формы значения параметров, созданных разработчиком, можно указывать в структуре параметров наряду с системными параметрами форм (если таковые имеются).
Параметры формы можно передать в форму в момент ее создания. Анализ переданных параметров можно выполнить в событии ПриСозданииНаСервере() (коллекция Параметры является свойством объекта УправляемаяФорма):
// В месте вызова.
// Формируем параметр формы.
Параметры = Новый Структура();
Параметры.Вставить(“Важность”, ПредопределенноеЗначение(“Перечисление.Важность.Важно”));
// Открываем форму с указанием параметров.
ОткрытьФорму(“ОбщаяФорма.ФормаПросмотра”, Параметры);
…
// В модуле формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Важность = Перечисления.Важность.Важно Тогда
…
КонецЕсли;
КонецПроцедуры
ВНИМАНИЕ! После вызова обработчика события ПриСозданииНаСервере все неключевые параметры формы удаляются из коллекции Параметры.
Совет. Неключевые параметры формы, необходимые для дальнейшей работы, нужно сохранять в данных формы.
2. Стандартные параметры формы
Для того чтобы поддерживать автоматическое взаимодействие между формами, система предоставляет ряд стандартных параметров, которые используются для управления формами при их открытии. С помощью этих параметров системой реализуется в полях форм выбор из форм выбора, открытие форм объектов, работа стандартных команд и т. д. То есть они обеспечивают различные заложенные в систему сценарии работы интерфейса.
Но разработчик также может использовать эти параметры во встроенном языке, передавая их при вызове метода ОткрытьФорму().
Перечень стандартных параметров форм в зависимости от вида расширения формы можно посмотреть в разделах Встроенный язык – Интерфейс
(управляемый) – Управляемая форма – Расширение… встроенной справки.
3. Пример работы с параметрами формы
Для демонстрации работы параметров формы рассмотрим реализацию выбора элемента в поле ввода. Сутью примера будет реализация механизма выбора элемента из списка на встроенном языке.
К моменту начала работы с примером нужно иметь конфигурацию, обладающую следующими свойствами:
● имеется справочник Товары с иерархией групп и элементов;
● имеется справочник Аналоги с реквизитом ВыбранныйТовар типа СправочникСсылка.Товары;
● оба справочника имеют формы элементов.
Теперь реализуем в этой конфигурации все механизмы, которые использует платформа для выбора элемента из списка, на встроенном языке. При этом мы увидим:
● как происходит использование стандартных параметров формы;
● каким образом их использует сама система;
● как их может использовать разработчик.
Добавим дополнительный параметр, который будет управлять закрытием формы выбора после выбора элемента. Назовем этот параметр ЗакрыватьПослеВыбора (тип Булево). Добавим его в качестве параметра формы ФормаВыбора справочника Товары.
Для того чтобы открыть форму выбора элемента, необходимо в форме элемента справочника Аналоги создать обработчик события НачалоВыбора у элемента формы ВыбранныйТовар.
&НаКлиенте
Процедура ВыбранныйТоварНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыВыбора = Новый Структура;
ПараметрыВыбора.Вставить(“РежимВыбора”, Истина);
ПараметрыВыбора.Вставить(“ВыборГруппИЭлементов”, ИспользованиеГруппИЭлементов.Элементы);
ПараметрыВыбора.Вставить(“РазрешитьВыборКорня”, Ложь);
ПараметрыВыбора.Вставить(“ТекущаяСтрока”, Объект.ВыбранныйТовар);
ПараметрыВыбора.Вставить(“ЗакрыватьПослеВыбора”, Ложь);
ОткрытьФорму(“Справочник.Товары.ФормаВыбора”, ПараметрыВыбора, Элементы.ВыбранныйТовар);
КонецПроцедуры
Следует отдельно остановиться на третьем параметре метода ОткрытьФорму(). Этот параметр определяет, кто будет владельцем формы выбора и кому будет приходить оповещение о сделанном выборе. В данном случае мы указали владельцем формы выбора сам элемент формы, но также мы можем указать этим параметром и саму форму. В этом случае будет необходимо реализовывать обработчик ОбработкаВыбора модуля формы и в нем решать, в какой реквизит формы помещать выбранные данные.
ПРИМЕЧАНИЕ. Если мы не будем реализовывать обработчик события НачалоВыбора, то его действия выполнит сама система. Это справедливо и для всех дальнейших обработчиков, которые использованы в примере.
Теперь необходимо обработать переданные параметры в форме выбора. Сделаем это в обработчике ПриСозданииНаСервере() модуля формы выбора.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов;
Элементы.Список.РазрешитьВыборКорня = Параметры.РазрешитьВыборКорня;
Элементы.Список.ТекущаяСтрока = Параметры.ТекущаяСтрока;
ЗакрыватьПриВыборе = Параметры.ЗакрыватьПослеВыбора;
КонецПроцедуры
Для того чтобы проверить работоспособность установленных нами параметров формы, установим, с помощью конфигуратора, у таблицы формы выбора Список свойство ВыборГруппИЭлементов в значение Группы (без применения параметра не будет доступен выбор элементов справочника).
ПРИМЕЧАНИЕ. Если у таблицы Список, отображающей список товаров, свойство РежимВыбора не будет установлено в значение Истина, то выбор товаров будет недоступен.
Теперь нам необходимо обработать выбор желаемого элемента в форме выбора. Для этого нужно определить обработчик события ВыборЗначения таблицы формы.
&НаКлиенте
Процедура СписокВыборЗначения(Элемент, СтандартнаяОбработка, Значение)
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(Значение);
КонецПроцедуры
Нам осталось реализовать обработку выбора элемента в самом поле ввода. Для этого необходимо обработать событие ОбработкаВыбора нашего поля ввода ВыбранныйТовар.
&НаКлиенте
Процедура ВыбранныйТоварОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Объект.ВыбранныйТовар = ВыбранноеЗначение;
КонецПроцедуры
Мы самостоятельно реализовали системный механизм выбора значения в поле ввода на форме.
ВНИМАНИЕ! Данный пример не является законченным. Его единственным назначением является демонстрация механизмов работы с параметрами формы.
Если при создании параметров (обработчик ВыбранныйТоварНачалоВыбора()) заменить строку:
ПараметрыВыбора.Вставить(“ЗакрыватьПослеВыбора”, Истина);
на строку:
ПараметрыВыбора.Вставить(“ЗакрыватьПослеВыбора”, Ложь);
то форма выбора перестанет закрываться после того, как будет осуществлен выбор. Это можно использовать, например, для реализации формы подбора (выбор нескольких товаров без закрытия формы выбора).
Именно то, что я искал. Большое спасибо.
Я бы хотел, чтобы для таких ресурсов, как здесь, был вариант на турецком или английском языке.