Часто бывает нужно открыть форму не интерактивно, а из встроенного языка. Как правило, при этом в зависимости от различных условий форма должна иметь тот или иной вид.
Чтобы открыть форму, используется метод глобального контекста ОткрытьФорму(). При этом в форму передаются параметры – стандартные или созданные разработчиком. Они используются для того, чтобы открыть форму в некотором нужном состоянии.
Параметры формы представляют собой структуру, каждый элемент которой описывает один параметр формы. Эта структура передается в метод ОткрытьФорму() вторым параметром, и в результате форма открывается за один серверный вызов в нужном состоянии.
Другим способом является получение формы методом ПолучитьФорму(). Используя возвращенное этим методом значение объекта УправляемаяФорма, можно обращаться к ее свойствам и методам, а также к свойствам и методам ее элементов, чтобы подготовить форму к открытию в нужном состоянии. И затем открыть форму методом Открыть().
Какой же способ наиболее эффективен? Рассмотрим пример.
Предположим, в конфигурации существуют иерархический справочник Товары и документ ПриходнаяНакладная с табличной частью Товары, содержащей перечень приходуемых товаров. При нажатии кнопки Подбор, расположенной в форме документа, должен производиться подбор товаров в табличную часть приходной накладной. При этом форма выбора из справочника Товары должна открываться в режиме множественного выбора, и иерархический список товаров должен быть представлен в виде дерева (рис. 4.38).

Рис. 4.38. Подбор товаров в табличную часть приходной накладной
Заметим, что если форма выбора всегда должна открываться в заданном виде, то можно задать свойства формы в конфигураторе и ничего не программировать. Однако форма выбора может открываться из разных мест конфигурации, и ее внешний вид может зависеть от различных условий. В таком случае нужно программно формировать внешний вид формы при ее открытии.
Последний случай мы сейчас рассмотрим и изучим, как всегда, возможные варианты решения этой задачи.