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