Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-методическое пособие РЭИС.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
3.85 Mб
Скачать

4.6. Приемы программирования

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

4.6.1. Открытие и закрытие форм

Формы обычно открываются системой автоматически, и разработчику не нужно прикладывать дополнительных усилий для открытия форм из пунктов меню, панелей инструментов или при заполнении реквизитов путем выбора элемента справочника или документа. Однако разработчик может программно открывать и закрывать формы, используя методы объекта Форма. Предварительно он должен получить форму нужного ему объекта, например:

Процедура ОткрытьФормуПодчиненногоСправочника()

СпрРасчСчета = Справочники.РасчетныеСчета;

//сначала получим основную форму списка справочника

//текущая форма будет являться владельцем для нее

ФормаРС = СпрРасчСчета.ПолучитьФормуСписка(,ЭтаФорма);

//если текущая форма будет закрыта,

//то и дочерние формы тоже закроются

ФормаРС.ЗакрыватьПриЗакрытииВладелыда = Истина;

//открыть новую форму или активизировать уже открытую

Если ФормаРС.Открыта() Тогда

ФормаРС.Активизировать();

Иначе

ФормаРС.Открыть();

КонецЕсли;

КонецПроцедуры

 

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

Необходимо понимать разницу между событиями, возникающими при открытии формы:

ПередОткрытием

Событие возникает перед открытием формы, до показа ее на экране. В обработчике события можно отказаться как от открытия формы, так и от стандартной обработки при открытии объекта.

ПриОткрытии

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

ПриПовторномОткрытии

Событие возникает при открытии уже открытой формы. При активизации открытой формы данное событие не возникает.

Форма может быть открыта в модальном режиме с использованием метода ОткрытьМодально. В этом случае пользователь должен сначала закрыть модальную форму, прежде чем продолжать работу с другими окнами. При этом работа программы будет приостановлена до закрытия модального окна, которое может быть закрыто интерактивно или автоматически по истечении установленного времени.

В модуле формы с помощью свойства МодальныйРежим можно определить, что форма открыта в модальном режиме. Ниже открывается в модальном режиме общая форма ВыборОснования.

При ее закрытии она возвращает объект ДокументСсылка, содержащий выбор пользователя.

ВыбЯок = ПолучитьОбщуюФорму("ВыборОснования").ОткрытьМодально();

 

Чтобы закрыть форму, можно вызвать метод Закрыть с указанием параметра закрытия. При закрытии формы возникают события ПередЗакрытием и ПриЗакрытии. В обработчике события ПередЗакрытием можно отказаться как от закрытия формы, так и от стандартной обработки при закрытии. Для форм, связанных, например, с типами ДокументОбъект и СправочникОбъект, стандартной обработкой является проверка модифицированности и задание вопроса о сохранении объекта. В обработчике события ПриЗакрытии отказаться от закрытия формы уже нельзя.

В метод Закрыть можно передать параметр закрытия, который будет являться возвращаемым значением, если форма была открыта с помощью метода ОткрытьМодально.