5. Глобальный контекст, в том числе неглобальные общие модули и экспортируемые функции и процедуры глобальных общих модулей.
5. Глобальный контекст, в том числе неглобальные общие модули и экспортируемые функции и процедуры глобальных общих модулей. В модуле формы можно получить системную дату, обратившись к встроенной функции ТекущаяДата(), листинг 5. 9.
листинг 5. 9. Модуль формы
Или получить историю работы пользователя, обратившись к свойству глобального контекста ИсторияРаботыПользователя (листинг 5. 10). листинг 5. 10. Модуль формы Если в глобальном общем модуле (например, ОбменДанными) опреде- лена экспортная процедура ПолучитьПрефиксНомера() (листинг 5. 11), то в модуле формы можно обращаться к ней по имени (листинг 5. 12). листинг 5. 11. Глобальный общий модуль
листинг 5. 12. Модуль формы Если такой общий модуль – неглобальный (например, РаботаСДо- кументами), то при обращении к процедуре ее имя нужно указывать через точку от имени модуля (листинг 5. 13). листинг 5. 13. Модуль формы Второй способ предпочтительнее, так как неглобальные общие модули компилируются по мере обращения к ним, а не при запуске системы, как глобальные. Естественно, при этом нужно обеспечивать согласованность того, как описана процедура в модуле формы (& НаКлиенте, & НаСервере и т. д. ), и того, какие флажки проставлены у общего модуля (клиент (управ- ляемое приложение), сервер и т. д. ).
6. Экспортируемые переменные, процедуры и функции модуля управляемого приложения. Если в модуле приложения определена экспортная процедура Тесто- воеСообщение() (листинг 5. 14), то в модуле формы можно обращаться к ней по имени (листинг 5. 15). листинг 5. 14. Модуль приложения
листинг 5. 15. Модуль формы
Форма как программный объект Помимо того что форма внутри своего модуля предоставляет доступ к различным частям конфигурации, она также доступна из других частей конфигурации как программный объект. При этом помимо стандартных свойств и методов объекта встроен- ного языка УправляемаяФорма у нее могут существовать и другие свойства и методы, определенные разработчиком. Например, если в модуле формы ФормаДокумента документа Приход- наяНакладная описана экспортируемая процедура МатериалыКоли- чествоПриИзменении() (листинг 5. 16), то может быть использован следующий вызов этой процедуры (листинг 5. 17). листинг 5. 16. Модуль формы листинг 5. 17. Модуль формы
Процедуры – обработчики событий в модуле формы Занятие 5 Помимо описания переменных и основной программы, модуль формы может содержать описание процедур – обработчиков событий, связанных с формой. Основными событиями, которые могут обраба- тываться в модуле формы, являются события открытия и закрытия окна формы (листинг 5. 18).
листинг 5. 18. Модуль формы Важным моментом здесь является то, что имена этих процедур не фиксированы, они могут иметь произвольные имена. Поэтому недостаточно, например, написать в модуле определения процедур с именами ПриСозда- нииНаСервере или ПриОт- крытии. Кроме этого, их обязательно нужно связать в конфигураторе с соот- ветствующими событиями формы (рис. 5. 17).
Рис. 5. 17. События формы Или можно выбрать их из выпадающего списка, доступного, когда вы находитесь в модуле формы (рис. 5. 19).
В этом случае система автоматически создаст определения этих процедур и свяжет их с соответствующими свойствами формы.
Как понять то, что написано в модуле формы Занятие 5 В заключение кратко опишем общий алгоритм, позволяющий разобраться с кодом, написанным в модуле формы. Рассматривать его будем на конкретном примере нашего обработчика события МатериалыКоличествоПриИзменении.
Допустим, в модуле формы нам встретилось выражение: СтрокаТаб- личнойЧасти = ЭлементыФормы. Материалы. ТекущиеДанные. Как понять, что такое СтрокаТабличнойЧасти? Нужно вспомнить, из чего состоит контекст формы (стр. 162): локальный контекст самого модуля формы; реквизиты формы, которой «принадлежит» модуль; свойства и методы объекта языка; УправляемаяФорма встроенного свойства и методы расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы; глобальный контекст, в том числе неглобальные общие модули и экспортируемые функции и процедуры глобальных общих модулей; экспортируемые переменные, процедуры и функции модуля управляемого приложения. Далее по порядку проверить: 1. Объявлена ли в модуле формы переменная СтрокаТаблич- нойЧасти? Нет. 2. Есть ли у формы реквизит СтрокаТабличнойЧасти? Нет. 3. Есть ли у объекта УправляемаяФорма свойство СтрокаТаблич- нойЧасти? Нет. 4. Есть ли у расширения формы свойство СтрокаТабличнойЧасти? Нет. 5. Есть ли свойство глобального контекста СтрокаТабличнойЧасти? Нет. 6. Есть ли в модуле управляемого приложения экспортная пере- менная СтрокаТабличнойЧасти? Нет. Значит СтрокаТабличнойЧасти – это локальная переменная, опреде- ляемая непосредственно в этом операторе присваивания.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|