Как открыть форму существующего объекта?
При открытии формы существующего объекта необходимо кроме имени формы указать также и ссылку на тот объект, форма которого должна быть открыта. Для этого используется параметр формы Ключ и ссылка на интересующий нас объект.
Например, если из формы списка организаций нужно открыть форму той организации, на которой находится курсор, сделать это можно следующим способом:
Ссылку на интересующий элемент справочника мы получаем через текущую строку списка:
Параметры формы передаем в виде структуры, где имя элемента структуры соответствует имени параметра формы, а значение — это то значение, в которое мы хотим установить параметр формы.
Если требуется открыть не основную, а произвольную форму объекта, созданную в конфигураторе, вместо стандартного имени основной формы ( ФормаОбъекта ) указывается слово Форма и через точку за ним — имя формы, созданной в конфигураторе. Например:
Следует заметить, что в том случае, когда кроме ссылки на объект никакие параметры в открываемую форму передавать не нужно и нужна именно основная форма существующего объекта, можно использовать более простой способ — открывать форму с помощью функции глобального контекста ОткрытьЗначение() :
Такой способ обладает меньшей универсальностью, но в некоторых случаях он экономит время и силы. Например, в рассмотренном случае одна такая строка может заменить всю написанную нами ранее процедуру из трех строк.
Однако нужно внимательно относиться к использованию этого метода. В некоторых случаях он может вызывать дополнительные обращения к серверу, например, когда нужно открыть форму элемента иерархического справочника. При использовании этого метода платформа будет выполнять дополнительное обращение к серверу для того, чтобы определить, является ли элемент группой или нет, так как для элемента и для группы нужно открывать разные формы.
Справка
Функция ОткрытьФорму()
Открывает произвольную форму
Функция ОткрытьФорму() имеет несколько вариантов синтаксиса:
Вариант синтаксиса 1: По имени
Функция ОткрытьФорму() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров процедуры ОткрытьФорму() :
Имя параметра | Тип | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Описание | ||||||||||||
ИмяФормы | Строка | |||||||||||
Имя формы, образованное как полный путь к объекту Форма в дереве метаданных (например, «Справочник.Номенклатура.Форма.ФормаОбъекта», «ОбщаяФорма.ФормаПредупреждения») или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, «Справочник.Номенклатура.ФормаОбъекта»). Поддерживаются следующие формы по умолчанию: Применимо только для управляемой формы. | ||||||||||||
ОповещениеОЗакрытии (необязательный) | ОписаниеОповещения | |||||||||||
Содержит описание процедуры, расположенной в текущем или в общем модуле, которая будет вызвана при закрытии открываемой формы | ||||||||||||
РежимОткрытияОкна (необязательный) | РежимОткрытияОкнаФормы | |||||||||||
Указывает режим открытия окна управляемой формы. Используется только в управляемом приложении. Варианты значений: Возвращаемое значениеОписание варианта 1Вариант синтаксиса 2: По формеФункция ОткрытьФорму() имеет следующий синтаксис: А также альтернативный англоязычный синтаксис: ПараметрыОписание параметров процедуры ОткрытьФорму() :
Возвращаемое значениеОписание варианта 2Функция ОткрытьФорму() открывает форму, полученную ранее функциями ОткрытьФорму() или ПолучитьФорму() ДоступностьТонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент). Пример использованияПример кода с использованием процедуры ОткрытьФорму() : Как в 1с открыть форму программноВ статье будет рассказано о том, как в 1с открыть форму программно. Все описанное ниже, касается только управляемого приложения. Подробно рассмотрим метод глобального контекста ОткрытьФорму. Также можете ознакомиться с более простыми, но менее гибкими способами открыть форму по ссылке: Как в 1с открыть ссылку. Метод ОткрытьФорму по имениСамый гибкий и настраиваемый способ программного открытия формы в 1с 8. Рассмотрим подробно его параметры, а также разберем несколько примеров его использования. Следует заметить, что метод ОткрытьФорму является клиентским. Т.е его можно использовать либо в общих модулях с установленным флагом Клиент, либо в процедурах (функциях) форм с директивой &НаКлиенте. Рассмотрим параметры метода и приведем необходимые примеры. ИмяФормыСодержит полный путь к форме. Можно указать, как путь к форме по умолчанию, так и путь к произвольной форме объекта метаданных. Имя формы указывается в следующих двух форматах: Пример 1. Путь к форме выбора по умолчанию, справочника Номенклатура. Пример 2. Путь к форме СменаПочты справочника Пользователи, по ее имени. ПараметрыСодержит Структуру параметров, которые передаются в открываемую форму. Для каждого типа формы, существует набор стандартных параметров, которые не нужно дополнительно обрабатывать в самой форме. Также набор параметров может различаться и для объектов метаданных. Например, параметр Ключ, для форм объектов. В него можно передать ссылку на открываемый объект (если его не передать, будет открыта форма нового объекта). Также в структуру можно передавать произвольные параметры, которые можно обрабатывать программно, в открываемой форме. Например в обработчике события ПриСозданииНаСервере. Рассмотрим примеры открытия различных форм с использованием параметров. Пример 3. Открыть форму объекта справочника Пользователи, используя ссылку на объект. Пример 4. Открыть форму списка справочника Номенклатура с отбором по реквизиту ВидНоменклатуры и по списку родителей. Здесь Отбор — это стандартный параметр для форм, использующих в качестве основного реквизита Динамический список. Например, это формы списка и выбора. Он представляет из себя Структуру, в которую можно добавить значения элементов отбора. В Ключ — имя реквизита, в Значение — значение отбора. Данным способом можно отобрать значения, используя вид сравнения Равно или ВСписке. Для отбора ВСписке следует добавить в структуру Массив, ФиксированныйМассив, либо СписокЗначений. Следует заметить, что отбор ВИерархии установить данным способом не выйдет. ВладелецВ данный параметр передается элемент формы или форма клиентского приложения (управляемая форма) полностью. Используется для указания подчинения открываемой формы. Это может потребоваться для многих целей, например для: Пример 5. Реализовать программный выбор элемента Номенклатура, в поле ввода. В данном случае необходимо: Параметр ТекущаяСтрока, позволяет выделять ранее выбранный элемент в форме выбора. Стоит заменить, что в обычной ситуации такой метод выбора значений не применяется. Его применяют только тогда, когда нет возможности настроить форму выбора под условия задачи. УникальностьВ параметре можно задать ключ уникальности формы произвольного типа. При открытии формы, платформа будет анализировать, есть в текущем сеансе уже открытая форма, с таким же ключом уникальности. Если такая форма будет найдена, то она будет активизирована, а новая не откроется. Этот механизм работает только для одинаковых форм. Если вы будете открывать формы объекта разных документов с одинаковым ключом, то откроются обе. По умолчанию, платформа сама генерирует ключ уникальности. Поэтому помимо использования собственного ключа, в параметре Уникальность, можно регулировать использование стандартного. Если передать в него значение Ложь, то будет использован стандартный ключ, если значение Истина, то ключ не будет использоваться совсем. Т.е. будет создаваться новая форма, при каждом использовании метода ОткрытьФорму. Значением по умолчанию является Ложь, поэтому специально задавать его не требуется. Пример 6. Одновременно открыть две формы объекта справочника Пользователи, по одной и той же ссылке. В параметре можно указать окно, в котором будет открыта новая форма. Тип параметра ОкноКлиентскогоПриложения. Пример 7. Реализовать программный выбор элемента Номенклатура, в поле ввода. Реализовать выбор в окне формы, на которой расположено поле. В этом примере мы получаем окно текущей формы и используем его для открытия формы выбора справочника. НавигационнаяСсылкаПозволяет установить собственную навигационную ссылку для открываемой формы. Устанавливаемая навигационная ссылка должна иметь тип Строка. Значение по умолчанию: Неопределено, при использовании этого значения, навигационная ссылка задается автоматически. ОписаниеОповещенияОЗакрытииВ параметр передается описание процедуры, которая будет вызвана после закрытия открываемой формы. Тип параметра: ОписаниеОповещения. Пример 8. В 1с открыть форму программно. Использовать форму объекта справочника Пользователи. После ее закрытия сообщить, что карточка пользователя закрыта. Используемые в примере параметры описания оповещения: Описанная процедура обязательно должна иметь два параметра: Также описанная процедура должна быть экспортной. РежимОткрытияОкнаПозволяет указать режим открытия управляемой формы. По умолчанию Неопределено, вручную можно задать одно из значений системного перечисления РежимОткрытияОкнаФормы: Метод ОткрытьФорму по формеСуществует еще один вариант синтаксиса метода ОткрытьФорму. Используется, если вы уже получили форму, произвели с ней какие-то действия и теперь ее необходимо открыть. Пример 9. Получить форму списка справочника Номенклатура, а затем в 1с открыть форму программно. УФ. Как правильно открыть доп.форму редактируемого элемента справочника?Управляемые формы. 8.3.6 Что и как правильно передать открываемой форме? Тип: Форма; УправляемаяФорма. Тип: Форма; УправляемаяФорма. Открывает и возвращает форму или управляемую форму. В тонком и веб-клиенте только управляемую форму. Перед открытием осуществляется поиск уже открытой такой же формы. Поиск осуществляется по типу формы, значениям ключевых параметров формы, владельцу формы, пользовательскому ключу уникальности. Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). Для варианта «По названию» параметры вызова аналогичны параметрам метода ПолучитьФорму. Глобальный контекст, метод ПолучитьФорму ПолучитьФорму (1Cv82)СодержаниеДоступностьСинтаксисПараметры_(обязательный)»> (обязательный)Имя формы. Образуется как полный путь к объекту метаданных Форма (например, «Справочник.Контрагенты.Форма.ФормаОбъекта») или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, «Справочник.Товары.ФормаВыбора»). Имена форм по умолчанию: _(необязательный)»> (необязательный)Для того, чтобы поддерживать автоматическое взаимодействие между формами, система предоставляет ряд стандартных параметров, таких как: П = Новый Структура(«Ключ», Поставщик); Ф = ПолучитьФорму(«Справочник.Контрагенты.ФормаОбъекта», П); Ф.Открыть(); _(необязательный)»> (необязательный)_(необязательный)»> (необязательный)Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма. Если параметр не указан, сначала всегда будет искаться уже открытая форма. _(необязательный)»> (необязательный)Тип: ОкноКлиентскогоПриложения. Окно приложения, в котором будет открыта форма. Применимо только для управляемой формы. Окном может быть только основное окно приложения или вспомогательное окно формы. Возвращаемое значение:Тип: Форма; УправляемаяФорма. Описание:Получает форму или управляемую форму. Перед открытием осуществляется поиск уже открытой такой же формы. Поиск осуществляется по типу формы, значениям ключевых параметров формы, владельцу формы, пользовательскому ключу уникальности. Если в параметре передано значение Истина, то поиск уже открытых форм не осуществляется. Доступность: клиент, тонкий клиент, веб-клиент. Вызов метода выполняет обращение к серверу. В тонком и веб-клиенте получает только управляемую форму. Существует упрощённый аналог: ОткрытьЗначение(Ссылка); ОсобенностиПолучение формЕсли нужно получить конкретную, созданную в конфигураторе форму, то нужен описатель в виде «Справочник.ФизическоеЛицо.Форма.ИмяКонкретнойФормы» Если же нужно получить форму, заданную как «Форма списка» в конфигураторе, или автоматически сгенерированную форму, то описатель не включает «.Форма.» РежимОткрытияОкнаРежим открытия формы управляется специальным свойством – «Режим открытия окна». Данное свойство описывает, каким образом будет открыто окно: Данный режим предназначен для форм, в которых вводится мало информации и работа с которыми не требует длительного времени, например, для ввода элементов справочников, содержащих небольшое количество реквизитов. Этот режим внешне аналогичен модальному открытию формы, однако при открытии из встроенного языка работа модуля не останавливается на время работы открываемой формы. При этом все остальное взаимодействие с формой выполняется как с другими немодальными формами. Такая форма также открывается во вспомогательном окне. Этот режим по умолчанию установлен у следующих форм: Свойство «Режим открытия окна» не оказывает влияния на открытие формы, если она открывается в модальном режиме; при открытии в уже существующем основном или вспомогательном окне. ЗакрыватьПриЗакрытииВладельцаЗакрыватьПриЗакрытииВладельца (CloseOnOwnerClose) Использование: Чтение и запись. Тип: Булево. Содержит признак того, что форма должна закрываться при закрытии формы-владельца. Доступность: клиент, сервер, тонкий клиент, веб-клиент. Примечание: Изменение свойства на клиенте не требует обращения к серверу. Изменение не влияет на производительность при вызовах сервера |