Область применения: управляемое приложение, мобильное приложение.
1. Для открытия форм следует применять метод глобального контекста ОткрытьФорму (при использовании версии платформы 1С:Предприятие 8.2 и более ранних версий – также ОткрытьФормуМодально ). Применение альтернативного способа, с получением формы и ее последующим открытием с помощью метода ПолучитьФорму , не рекомендуется.
Рекомендация обусловлена соображениями
- повышения устойчивости кода, работающего с формой, за счет разделения программного интерфейса для работы с формой и деталей ее внутренней реализации,
- а также сохранения единой стилистики кода прикладных решений.
Кроме того, применение глобального метода ОткрытьФорму гарантирует выполнение инициализации формы на сервере в обработчике ПриСозданииНаСервере . Этот подход помогает сосредоточить весь код инициализации формы в одном месте и исключает "случайное" обращение к серверу, связанное с инициализацией формы, между строками кода
2. В случаях когда форма требует параметризации при открытии, все ее параметры следует указывать в наборе параметров формы. Таким образом, набор параметров формы декларативно описывает возможности формы по ее параметризации.
Параметры формы из этого набора могут быть указаны в вызывающем коде при открытии формы ( ОткрытьФорму ).
3. Не следует применять другие способы параметризации формы при открытии. Например, нужно избегать обращения к методам и свойствам формы после ее открытия.
Например, вместо
МояФорма = Форма.ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме");
МояФорма.Элементы.ГруппаШаг.ТекущаяСтраница = МойФорма.Элементы.ГруппаШаг.Страницы.Приветствие;
следует по той же причине использовать параметры формы:
ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));
4. Для получения результата работы формы, вместо непосредственного обращения к элементам и реквизитам формы
ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …
следует использовать процедуры-обработчики оповещений, которые будут вызваны при завершении работы пользователя с формой:
Оповещение = Новый ОписаниеОповещения("БольшеНеПоказыватьНапоминаниеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВопроса". Оповещение, РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс);
.
&НаКлиенте
Процедура БольшеНеПоказыватьНапоминаниеЗавершение(БольшеНеПоказыватьНапоминание, Параметры) Экспорт
Если БольшеНеПоказыватьНапоминание = Неопределено Тогда
Возврат;
КонецЕсли;
Если БольшеНеПоказыватьНапоминание Тогда
// …
При этом возвращаемое значение формы формируется в коде модуля формы с помощью метода формы Закрыть .
5. Другие ограничения:
- Обработчик события формы ПриОткрытии не должен содержать код по открытию какой-либо другой формы, так как это может привести к нарушению порядка отображения окон. В этом случае рекомендуется использовать обработчик ожидания на короткий интервал или открывать другие формы интерактивно, например, по нажатию на кнопку.
- Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.
- При использовании в конфигурации Библиотека стандартных подсистем и разработке форм (рабочих мест), предназначенных только для внешних пользователей, следует явно блокировать открытие таких форм в сеансах "обычных" пользователей. Для этого следует устанавливать параметр Отказ при создании формы на сервере с помощью функции ЭтоСеансВнешнегоПользователя общего модуля Пользователи или ПользователиКлиент :
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
…
КонецПроцедуры
6. Следующие виды форм должны быть всегда доступны пользователю в режиме 1С:Предприятия из меню "Все функции" вне зависимости от того, размещены ли соответствующие объекты в командном интерфейсе приложения или нет:
Практически для каждого отчета или печатной формы 1С не обойтись без метода «ПолучитьМакет()». Метод ПолучитьМакет() нельзя вызвать на сервере в модуле формы управляемого приложения. Как верно использовать его, я рассмотрю ниже.
В управляемой форме 1C для этого этого необходимо использовать следующую конструкцию в процедуре «&НаСервере»:
Связано это с тем, что на управляемой форме форме не доступны методы объекта. Получая объект и обращаясь методом «ПолучитьМакет()», система позволит нам получить нужные данные.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Статья решает задачи:
- Как передать параметр в открываемую программно форму;
- Как вернуть параметр из открываемой программно формы;
Исходные данные:
- Имеется общая форма — «НашаФорма», с реквизитами:
- «МножительА» — заполняется при открытии формы, по значению переданного параметра;
- «МножительБ» — заполняется вручную;
1. Пишем процедуру по открытию «НашаФорма» и передаче в нее параметра «МножительА»
2. Пишем процедуру, которая при открытии «Наша форма» (в обработчике ПриСозданииНаСервере) будет заполнять реквизит «МножительА» по полученному значению
3. Пишем процедуру по вычислению результата умножения и возврату значения