- •Лекция №7
- •Форма
- •Управляемые формы
- •Устройство управляемой формы
- •У конструктора управляемой формы 7 закладок:
- •Основные принципы работы управляемой формы
- •Что же означает клиентский контекст выполнения кода, а что – серверный?
- •На клиентской машине может быть установлено какое-то приложение 1С, которое запускается под толстым
- •Кластер серверов 1С не является чем-то единым целым, а представляет собой несколько запущенных
- •Вобычном приложении форма выполнялась полностью на стороне клиентского компьютера. Причем с формы можно
- •Форма это программный объект, который создается на сервере согласно настройкам сделанными в конфигураторе
- •Директиву компиляции следует указывать перед каждой функцией или процедурой в модуле формы, в
- •&НаКлиенте
- •&НаСервере
- •&НаСервереБезКонтекста
- •Управляемая форма это объект конфигурации 1С, который создается на сервер, а потом загружается
- •Реквизиты управляемой формы 1С 8.3
- •Основной реквизит формы 1С предназначен для определения:
- •У формы может быть указан только один «Основной реквизит», который служит для определения
- •Для назначения реквизита формы основным реквизитом необходимо:
- •При назначении основного реквизита формы происходит следующее:
- •Обращение к свойству объекта можно осуществлять через имя основного реквизита формы.
- •Таким образом, стандартное поведение формы и ее свойства будут дополнены в зависимости от
- •Обращение к реквизиту через переменную
- •произвольной обычной форме - заполнить свойство "Данные" формы, выбрав нужный реквизит формы (не
- •Простые реквизиты формы
- •В этой закладке сейчас только один реквизит – основной. Он нас пока не
- •После этого будет добавлен реквизит управляемой формы 1С с типом по умолчанию (строка)
- •В этой палитре мы можем установить имя, заголовок, а так же тип реквизита
- •Разместим реквизиты на форме.
- •После того, как мы «перетащили» реквизит в элементы, то на форме был создан
- •Если нажать на кнопку «…» свойства ПутьКДанным, то у разработчика есть возможность поменять
- •Выполнение кода на форме возможно под директивами &НаКлиенте &НаСервере и &НаСервереБезКонтекста. Доступ к
- •После создания команды, справа откроется палитра свойств новой команды, где мы зададим её
- •Команда – это выполнение некоторых действий на форме. Чтобы действия осуществились необходимо создать
- •После выбора места расположения обработчика, в модуле формы будет создана процедура под директивой
- •Обратите внимание, после создание процедуры в палитре свойств команды свойство Действие заполнилось названием
- •И последним шагом нам осталось нашу команду разместить на управляемой форме. Просто перетащим
- •При этом на форме появится кнопка.
- •Механизм основных форм
- •Наличие такого механизма позволяет разработчику не тратить время на создание форм для тестирования
- •Так, форма списка для справочника Клиенты будет создана как при интерактивном выборе в
- •Также примечательным фактом является то, что состав основных форм, определенных для объекта конфигурации,
- •Cостав основных форм определяется исходя из того, какое представление данных может понадобиться в
- •Обработчики событий
- •Фиксированный обработчик событий
- •Назначаемый обработчик событий
- •Любая процедура, расположенная в модуле формы, может быть назначена обработчиком любого события (или
- •Модули. Виды модулей
- •Модуль управляемого приложения
- •Чтобы открыть модуль управляемого приложения, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих)
- •Общие модули
- •Модули объектов
- •Чтобы открыть модуль объекта, нужно в окне редактирования объекта конфигурации перейти на закладку
- •Модули форм
- •Чтобы открыть модуль формы, нужно открыть подчиненный объект Форма нужного объекта конфигурации и
- •Модуль сеанса
- •Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих) и
- •Модуль внешнего соединения
- •Модуль менеджера
- •Чтобы открыть модуль менеджера, нужно в окне редактирования объекта конфигурации перейти на закладку
- •Модуль команды
- •Чтобы открыть модуль команды, подчиненной некоторому объекту конфигурации, нужно в окне редактирования объекта
- •Контекст модуля формы
- •Контекст модуля формы образуется:
- •Локальный контекст модуля формы
- •Или внутри модуля формы можно непосредственно обращаться по имени к переменной СлужебнаяПеременная, объявленной
- •Реквизиты формы, которой «принадлежит» модуль
- •Свойства и методы объекта «УправляемаяФорма»
- •К ним можно обращаться непосредственно по имени. Например, можно задать заголовок формы
- •Свойства и методы расширения формы, определяемого типом того объекта, данные которого содержатся в
- •А если это форма документа, то основной реквизит формы будет содержать данные объекта
- •Тут следует пояснить, почему в списке реквизитов тип основного реквизита указан в скобках:
- •ДанныеФормыСтруктура – это универсальный тип, который может содержать данные различных прикладных объектов. Поэтому,
- •От типа объекта, данные которого содержатся в основном реквизите формы, зависят некоторые особенности
- •В зависимости от того, какой тип имеет объект, данные которого содержатся в основном
- •Если основной реквизит – ДинамическийСписок, то в модуле формы становятся доступны свойства, методы
- •В модуле формы, где основной реквизит содержит данные документа, можно обратиться к свойству
- •Глобальный контекст, в том числе неглобальные общие модули и экспортируемые функции и процедуры
Вобычном приложении форма выполнялась полностью на стороне клиентского компьютера. Причем с формы можно было что угодно делать с базой данных: создавать новые объекты, редактировать их и т.п.
Вуправляемом приложении все кардинально поменялось. Теперь на стороне клиентского компьютера форма должна только прорисовывается. Связано это с возникновением тонкого и веб-клиента, которые осуществляют взаимодействие с серверной частью по средством сети Internet. Этот канал связи накладывает существенные ограничения на широту передаваемых данных. И если раньше мы могли на форме делать практически всё: обращаться к базе данных, создавать документы, справочники и т.п., то теперь это стало слишком дорогим удовольствием. Поэтому для нормального функционирования тонкого клиента и веб-клиента был существенно переделан механизм работы форм. Форма только прорисовывается на клиенте, а все обработки данных, вычисления и т.п. должны выполняться на
сервере.
Форма это программный объект, который создается на сервере согласно настройкам сделанными в конфигураторе (если формы нет в конфигураторе, то она генерируется автоматически платформой), а потом выводится в клиентском приложении. Таким образом, форма одновременно существует и на сервере и на клиенте! А как следствие у формы есть и серверный и клиентский контекст выполнения кода.
При разработке форм под управляемым приложением, разработчик должен сам указывать, какой код будет выполняться на сервере, а какой на клиенте. Делается это при помощи директив компиляции.
Директиву компиляции следует указывать перед каждой функцией или процедурой в модуле формы, в общем модуле или в модуле команды. Все директивы компиляции начинаются с символа амперсанд — &. И от них зависит, в каком контексте будет выполняться код в процедуре или функции. Всего их пять:
•&НаКлиенте
•&НаСервере
•&НаСервереБезКонтекста
•&НаКлиентеНаСервереБезКонтекста
•&НаКлиентеНаСервере
&НаКлиенте
&НаКлиенте – когда процедура или функция предварена этой директивой, то данный метод будет выполняться в клиентском контексте. Это значит, что он будет выполняться на той машине, где в данный момент функционирует клиентское приложение.
&НаСервере
&НаСервере — код процедуры или функции под этой директивой будет выполняться в серверном контексте, т.е. на машине, где запущен сервер 1С. Все данные формы будут передаваться на сервер, а потом обратно на форму, после завершения выполнения метода. Из процедуры под этой директивой будет доступен весь серверный контекст формы, т.е. все процедуры или функции, которые выполняются на сервере, можно вызвать из метода предваренного этой директивой.
&НаСервереБезКонтекста
&НаСервереБезКонтекста — код процедуры или функции под этой директивой как и в случае с директивой &НаСервере будет выполняться в серверном контексте, т.е. на машине, где запущен сервер 1С. Но в отличие от серверного вызова методов, при внеконтекстном серверном вызове, данные формы не будут передаваться на сервер.
Управляемая форма это объект конфигурации 1С, который создается на сервер, а потом загружается на клиентский компьютер. Основное взаимодействие пользователя с формой осуществляется посредством элементов формы, которые размещаются на форме. На форме могут храниться различные данные в реквизитах, а так же при помощи параметров можно передавать информацию с одной формы на другую при её открытии. Форма одновременно существует и в клиентском и серверном контексте, и при разработке программист должен самостоятельно решить какой код будет выполняться на сервере, а какой на клиенте.
Реквизиты управляемой формы 1С 8.3
Реквизиты - это данные, которые привязаны именно к форме: они создаются, хранятся, отображаются (по возможности) и редактируются на форме. Вне контекста формы эти данные не могут существовать. Сам по себе реквизит не может отображаться на форме. Для этого служат элементы формы, которые связаны с реквизитами форм.
Основной реквизит формы 1С предназначен для определения:
1.источника данных для формы в целом;
2.стандартных возможностей платформы для работы формы с данными типа, заданного у основного реквизита.
У формы может быть указан только один «Основной реквизит», который служит для определения источника данных для формы в целом и для определения стандартных возможностей формы при работе с данными, размещенными на ней. Основной реквизит всегда выделяется жирным начертанием.
Чтобы произвольной управляемой форме назначить основной реквизит, нужно в свойствах реквизита формы установить флаг «Основной реквизит».
