В данном разделе будут рассмотрены свойства, методы и события объекта Форма, с помощью которого можно управлять внешним видом и поведением формы средствами встроенного языка.
Формы обычно открываются системой автоматически, и разработчику не нужно прикладывать дополнительных усилий для открытия форм из пунктов меню, панелей инструментов или при заполнении реквизитов путем выбора элемента справочника или документа. Однако разработчик может программно открывать и закрывать формы, используя методы объекта Форма. Предварительно он должен получить форму нужного ему объекта, например:
Процедура ОткрытьФормуПодчиненногоСправочника()
СпрРасчСчета = Справочники.РасчетныеСчета;
//сначала получим основную форму списка справочника
//текущая форма будет являться владельцем для нее
ФормаРС = СпрРасчСчета.ПолучитьФормуСписка(,ЭтаФорма);
//если текущая форма будет закрыта,
//то и дочерние формы тоже закроются
ФормаРС.ЗакрыватьПриЗакрытииВладелыда = Истина;
//открыть новую форму или активизировать уже открытую
Если ФормаРС.Открыта() Тогда
ФормаРС.Активизировать();
Иначе
ФормаРС.Открыть();
КонецЕсли;
КонецПроцедуры
При открытии формы возникают события ПередОткрытием, ПриОткрытии или ПриПовторномОткрытии, если форма была уже открыта. При активизации уже открытой формы эти события не возникают. В процедурах-обработчиках этих событий разработчик может предусмотреть заполнение обязательных полей и других инициирующих действий. Например, он может установить параметр ТолькоПросмотр в значение Истина, и это приведет к тому, что пользователь не сможет изменить данные в форме.
Необходимо понимать разницу между событиями, возникающими при открытии формы:
ПередОткрытием
Событие возникает перед открытием формы, до показа ее на экране. В обработчике события можно отказаться как от открытия формы, так и от стандартной обработки при открытии объекта.
ПриОткрытии
Событие возникает при открытии формы, до показа окна пользователю. В обработчике этого события отказаться от открытия формы уже нельзя. Между событиями ПередОткрытием и ПриОткрытии выполняются различные стандартные системные действия, которые могут зависеть от основного реквизита формы. Наличие этих двух обработчиков позволяет выполнить какие-то действия до системных и после.
ПриПовторномОткрытии
Событие возникает при открытии уже открытой формы. При активизации открытой формы данное событие не возникает.
Форма может быть открыта в модальном режиме с использованием метода ОткрытьМодально. В этом случае пользователь должен сначала закрыть модальную форму, прежде чем продолжать работу с другими окнами. При этом работа программы будет приостановлена до закрытия модального окна, которое может быть закрыто интерактивно или автоматически по истечении установленного времени.
В модуле формы с помощью свойства МодальныйРежим можно определить, что форма открыта в модальном режиме. Ниже открывается в модальном режиме общая форма ВыборОснования.
При ее закрытии она возвращает объект ДокументСсылка, содержащий выбор пользователя.
ВыбЯок = ПолучитьОбщуюФорму("ВыборОснования").ОткрытьМодально();
Чтобы закрыть форму, можно вызвать метод Закрыть с указанием параметра закрытия. При закрытии формы возникают события ПередЗакрытием и ПриЗакрытии. В обработчике события ПередЗакрытием можно отказаться как от закрытия формы, так и от стандартной обработки при закрытии. Для форм, связанных, например, с типами ДокументОбъект и СправочникОбъект, стандартной обработкой является проверка модифицированности и задание вопроса о сохранении объекта. В обработчике события ПриЗакрытии отказаться от закрытия формы уже нельзя.
В метод Закрыть можно передать параметр закрытия, который будет
являться возвращаемым значением, если форма была открыта с помощью метода
ОткрытьМодально.
Формы для выбора
При заполнении реквизитов часто требуется выбрать один элемент справочника или документ. Для этого применяются формы для выбора, которые обычно открываются системой автоматически, но могут быть также открыты программно с помощью конструкций типа "ПолучитьФормуВыбора().Открыть()".
Обычно формы для выбора содержат табличное поле со списком элементов справочника или документов. При двойном щелчке на строке (или нажатии клавиши Enter) выбранное пользователем значение передается в родительскую форму.
Рассмотрим свойства, методы и события, имеющие важное значение для форм выбора:
• Свойство РежимВыбора определяет поведение формы при выборе элемента из главного списка формы, т.е. списка, связанного с ее основным реквизитом. Если оно установлено в значение Истина, то форма работает в режиме выбора, иначе — в обычном режиме.
• Свойство МножественныйВыбор разрешает или запрещает выбор нескольких строк из табличного поля. Несколько строк можно выделить мышью, удерживая клавишу Ctrl.
• Свойство НачальноеЗначениеВыбора содержит текущее выбранное значение элемента формы, который инициировал открытие формы для выбора. Если открытие формы выбора осуществляется из модуля, то начальное значение выбора необходимо устанавливать средствами языка до открытия формы выбора. При этом система производит попытку позиционирования списка, связанного с основным реквизитом формы(если он существует), на этом значении.
Свойство ЗакрыватьПриВыборе содержит признак того, что форму необходимо закрыть после осуществления выбора значения. Если это свойство установить в значение Ложь, то можно использовать форму для выбора нескольких значений.
Метод ОповеститьОВыборе посылает оповещение владельцу формы о выполнении выбора и передает ему выбранное значение. Данное действие аналогично интерактивному выбору пользователя.
Событие ОбработкаВыбора у формы возникает при выборе
объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм
метода ОповеститьОВыборе.
Внешний вид формы
При проектировании форм палитра свойств позволяет настраивать внешний вид формы. Эти же свойства могут быть считаны или установлены программно для изменения внешнего вида формы «на лету», при выполнении программы.
Рассмотрим основные свойства формы, определяющие ее внешний вид:
Заголовок
Содержит текст заголовка формы. Обратите внимание, что это свойство, а не метод, как было в версии 7.7.
АвтоЗаголовок
Если это свойство содержит значение Истина, то к заголовку формы будет автоматически добавляться информация, определяемая основным реквизитом формы.
Ширина, Высота,
Эти свойства определяют ширину и высоту формы в пунктах (логических единицах).
ИзменениеРазмера,
Разрешает или запрещает изменять размер.
ИзменениеРазмера,
Разрешает или запрещает изменять размер.
ИмяСохраненияПоложенияОкна,
Содержит имя для сохранения размеров и положения окна данной формы. Параметры окна, настроенные и сохраненные с данным именем, впоследствии восстанавливаются при следующем показе формы.
ПоложениеОкна,
Определяет положение окна в прикрепленном состоянии. Вариант прикрепления можно установить окну только в том случае, если он не был ранее сохранен в профиле.
СостояниеОкна,
Определяет состояние окна формы. Данное состояние можно
установить окну только в том случае, если состояние окна не было ранее
сохранено в профиле. Соединяемое Окно, Окно способно соединяться с другими
окнами.
Элементы формы
Форма позволяет обращаться к расположенным в ней элементам управления, для чего предназначено свойство ЭлементыФормы.
В 1C:Предприятии 8.0 можно даже программно добавлять и удалять элементы управления в форму при выполнении программы, чего не было в версии 7.7.
Обращение к элементу управления обычно производится по его имени через коллекцию ЭлементыФормы, например:
КнопкаОК = ЭлементыФормы.КнопкаОК;
тпСотр = ЭлементыФормы.ТабдичноеПолеСотрудникиСписок;
НадписьТипЦен = ЭлементыФормы["ТипЦен"];
С помощью методов Добавить, Удалить, Очистить можно редактировать список элементов управления «на лету». Переустанавливая свойства элементов управления, можно изменять их внешний вид и поведение.
Внимание! Индексация элементов
в коллекции начинается с 0.
У элементов управления, расположенных в форме, появляются
дополнительные свойства и методы. Ниже показаны наиболее важные дополнительные
свойства таких элементов управления:
Имя
Имя элемента управления, например, «КнопкаОК».
Данные
Это свойство содержит имя связанного реквизита формы или
реквизита объекта. Для элементов управления, связанных с реквизитами объектов,
изменение значения в элементе управления автоматически влечет изменение
значения связанного реквизита.
ТипЗначения
Это свойство описывает допустимые типы значений для элемента
управления.
АвтоКонтекстноеМеню
Если в этом свойстве содержится значение Истина, то для элемента
управления будет использовано автоматически сформированное контекстное меню, в
противном случае необходимо указать свойство КонтекстноеМеню.
КонтекстноеМеню
Значением свойства является элемент управления типа
КоманднаяПанель или одна из его кнопок-подменю.
НДС к вычету по импорту . бухгалтерский учет