Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамРазработка пользовательских…

1С:Предприятие 8.2 /
Разработчикам /
Разработка пользовательских интерфейсов

Оглавление

Открытие форм

Открытие форм объектов с помощью команды меню "Все функции"

Открытие параметризированных форм

Блокирующее или независимое открытие форм объектов

Особые случаи использования форм

 

1.1. Для открытия форм следует применять метод глобального контекста ОткрытьФорму (при использовании версии платформы 1С:Предприятие 8.2 и более ранних версий - также ОткрытьФормуМодально). Применение альтернативного способа, с получением формы и ее последующим открытием с помощью метода ПолучитьФорму, не рекомендуется. Исключения из этого правила возможны только в особых случаях (см. раздел ниже «Особые случаи использования форм»).

Рекомендация обусловлена соображениями

Кроме того, применение глобального метода ОткрытьФорму гарантирует выполнение инициализации формы на сервере в обработчике ПриСозданииНаСервере. Этот подход помогает сосредоточить весь код инициализации формы в одном месте и исключает "случайное" обращение к серверу, связанное с инициализацией формы, между строками кода

Форма = ПолучитьФорму(...)

и

Форма.ОткрытьФорму(...)

См. также: раздел «Открытие управляемой формы» статьи «Минимизация количества серверных вызовов»

1.2. В случаях когда форма требует параметризации при открытии, все ее параметры следует указывать в наборе параметров формы. Таким образом, набор параметров формы декларативно описывает возможности формы по ее параметризации.

Параметры формы из этого набора могут быть указаны в вызывающем коде при получении формы (ПолучитьФорму) или при открытии (ОткрытьФорму).

1.3. Не следует применять другие способы параметризации формы при открытии. Например, нужно избегать обращения к методам и свойствам формы после ее открытия.
Например, вместо

МояФорма = Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме");
МояФорма.Элементы.ГруппаШаг.ТекущаяСтраница = МойФорма.Элементы.ГруппаШаг.Страницы.Приветствие;

следует по той же причине использовать параметры формы:

Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));

1.4 Для получения результата работы формы, вместо непосредственного обращения к элементам и реквизитам формы

ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …

следует использовать процедуры-обработчики оповещений, которые будут вызваны при завершении работы пользователя с формой:

Оповещение = Новый ОписаниеОповещения("БольшеНеПоказыватьНапоминаниеЗавершение", ЭтотОбъект);
БольшеНеПоказыватьНапоминание = ОткрытьФорму("ОбщаяФорма.ФормаВопроса",,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс);
...
&НаКлиенте
Процедура БольшеНеПоказыватьНапоминаниеЗавершение(БольшеНеПоказыватьНапоминание, Параметры) Экспорт
	
	Если БольшеНеПоказыватьНапоминание =  Неопределено  Тогда
		Возврат;
	КонецЕсли;
	
	Если БольшеНеПоказыватьНапоминание Тогда
		// …
		
 КонецПроцедуры 

При этом возвращаемое значение формы формируется в коде модуля формы с помощью метода формы Закрыть.

См. также: Ограничения на использование экспортных процедур и функций

1.5. Другие ограничения:

Открытие форм объектов с помощью команды меню "Все функции"

2.1 Следующие виды форм должны быть всегда доступны пользователю в режиме 1С:Предприятия из меню "Все функции" вне зависимости от того, размещены ли соответствующие объекты в командном интерфейсе приложения или нет:

Открытие параметризированных форм

3.1 В случаях когда форма требует параметризации при открытии, предназначена для открытия только при помощи встроенного языка и, как следствие, не может быть открыта из пункта меню "Все функции", не следует назначать такую форму основной формой объекта.

3.2. Если же у объекта нет других форм, которые могли бы быть назначены основными, то следует сделать основной эту параметризированную форму. В обработчике ПриСозданииНаСервере модуля формы необходимо проверять параметры формы и, если они не заполнены, вызывать исключение. Текст исключения должен указывать пользователю причину, по которой форма не может быть открыта.

3.3. При этом не следует выдавать исключение в тех случаях, когда форма открывается с заданным параметром «АвтоТест». Наличие этого параметра означает, что получение формы выполняется специальным средством автоматизированного тестирования (например, 1С: Автоматизированная проверка конфигураций – для контроля соблюдения стандартов разработки). В этом случае, весь код обработчика ПриСозданииНаСервере должен отработать без ошибок времени выполнения (например, вследствие отсутствующих параметров формы, которые не передаются при таком способе получения формы).

Например:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	// Пример кода, который рассчитывает на заполненные параметры формы.
	Если Не ЗначениеЗаполнено(Параметры.Основание) Тогда
		ТекстСообщения = НСтр("ru='Непосредственное открытие этой формы не предусмотрено. Для открытия формы можно воспользоваться командой ""Подобрать товары"" в формах документов.'");
		ВызватьИсключение ТекстСообщения;
	КонецЕсли;
	
	// далее следует логика инициализации формы
	// …
	
КонецПроцедуры

Блокирующее или независимое открытие форм объектов

4.1 По умолчанию , при создании форм некоторых типов объектов (справочников, планов видов характеристик и др.) им устанавливается режим открытия с блокированием окна владельца (свойство РежимОткрытияОкна установлено в значение "Блокировать окно владельца"). Для таких форм предполагается, что работа с ними всегда выполняется "за один заход", без необходимости переключения в другие формы. Тем самым, предотвращается одновременное открытие нескольких форм такого типа, и как следствие, рабочее пространство пользователя не "замусоривается" лишними окнами.

4.2. Это умолчание платформы рекомендуется изменять в тех случаях, когда форма представляет из себя « рабочее место », т.е. с помощью нее осуществляется доступ к большому функциональному блоку. В частности, если при работе с формой в обычных сценариях работы может потребоваться

а также если в панели навигации формы

Для таких форм необходимо установить свойству РежимОткрытияОкна значение "Независимый".

См. также раздел Формы - выбор: блокирующая или независимая в руководстве по стилю.

Особые случаи использования форм

Действует для конфигураций, разрабатываемых на платформе 1С:Предприятие 8.2 и более ранних версий.

5.1. В отдельных, обоснованных случаях в целях ускорения работы клиентского приложения рекомендуется кешировать часто используемые формы, которые не считывают данные из информационной базы. Например, это формы типа «Вопрос при выполнении какого-то действия», формы с сообщениями или с предупреждениями.

В этих случаях рекомендуется разместить функцию для получения формы в общем модуле с повторным использованием возвращаемых значений на время сеанса .
Например:

// Возвращает форму, которая используется для информирования
// пользователей об особенностях  редактирования  файлов в веб-клиенте.
Функция ПолучитьФормуНапоминанияПриРедактировании() Экспорт
	Возврат ПолучитьФорму("ОбщаяФорма.НапоминанияПриРедактированииФайла");
 КонецФункции 

и вместо вызова метода ОткрытьФорму использовать конструкцию вида:

ФормаВопроса = РаботаСФайламиКлиентПовтИсп.ПолучитьФормуНапоминанияПриРедактировании();
ФормаВопроса.ОткрытьМодально();
// далее выполнить действие (получение файла для редактирования)
// …

Подобное кеширование дает значительное ускорение на медленных каналах связи между клиентским приложением и сервером 1С:Предприятия.

5.2. При необходимости параметризации кешируемых форм предлагается воспользоваться одним из двух вариантов.

а) В случае если число комбинаций значений параметров невелико, например, два-три значения, то следует кешировать два-три готовых экземпляра формы в «разрезе» ее параметров. Например, если у формы имеется параметр ПрименитьДляВсех типа Булево, то в общем модуле с повторным использованием возвращаемых значений на время сеанса размещается код вида:

Функция ПолучитьФормуНапоминанияПриРедактировании(Знач ПрименитьДляВсех) Экспорт
	Возврат ПолучитьФорму("ОбщаяФорма.НапоминанияПриРедактированииФайла", Новый Структура("ПрименитьДляВсех ", ПрименитьДляВсех));
КонецФункции

а для получения такой формы используется конструкция вида:

ФормаВопроса = РаботаСФайламиКлиентПовтИсп.ПолучитьФормуНапоминанияПриРедактировании(ПрименитьДляВсех);
Результат = ФормаВопроса.ОткрытьМодально();
// далее выполнить действие (получение файла для редактирования)
// …

В остальных случаях целесообразно разместить в модуле формы экспортную процедуру УстановитьПараметрыИспользования, с помощью которой параметризовать форму перед открытием. Например:

ФормаВопроса = РаботаСФайламиКлиентПовтИсп.ПолучитьФормуВопроса();
ФормаВопроса.УстановитьПараметрыИспользования(Текст, ПрименитьДляВсехФайлов, ДействиеПоУмолчанию);
Результат = ФормаВопроса.ОткрытьМодально();

При этом не следует применять какие-либо другие методы для кеширования форм и их параметризации перед открытием.

См. также: Ограничения на использование экспортных процедур и функций

5.3. В отдельных обоснованных случаях для снижения объема трафика между клиентским приложением и сервером 1С:Предприятия допускается альтернативный способ инициализации «клиентских» параметров формы при открытии. К таким параметрам относятся реквизиты и свойства элементов формы, которые могут быть гарантированно проинициализированы на клиенте без обращения на сервер.
В таких случаях необходимо разместить в модуле формы экспортную процедуру УстановитьПараметрыИспользования, пример использования которой приведен выше.
Такие случаи должны быть прокомментированы в коде.

См. также: Минимизация количества серверных вызовов


Нас находят: открытие формы в блокирующем режиме 1С, Параметры Свойство(АвтоТест), какой метод используется для открытия формы в 1с предприятия, как открыть форму на сервер в 1с, 1с открыть форму в сплывабщем окне, заполнение параметров формы перед открытием, 1с управляемая форма, управляемая форма форма открыта, _some_qunique_referrer_placeholder_, 1с управляемая форма открыть форму


Подписка на новости RSS

Мы на Facebook