gifts2017

НЕКОТОРЫЕ ОСОБЕННОСТИ УПРАВЛЯЕМЫХ ФОРМ

Опубликовал Julia (afcm) в раздел Программирование - Работа с интерфейсом

Рассмотрены  следующие отличительные особенности управляемых форм:
•    Форма существует и на клиенте и на сервере.
Она осуществляет клиент-серверное взаимодействие

•    Форма не работает с прикладными объектами
В форме используются специальные универсальные объекты ДанныеФормы

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

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

 Допустимы следующие директивы:

&НаКлиенте — Означает, что метод выполняется на стороне клиента, а переменная существует все время жизни клиентской части формы. Клиентская процедура исполняется в среде клиентского приложения. Доступны: Свойства и методы глобального контекста, доступные на клиенте; экспортные переменные; процедуры и функции модуля управляемого приложения, общих модулей скомпилированных на клиенте, общих модулей скомпилированных на сервере, если у них установлено свойство «Вызов Сервера»; свойства и методы расширения формы, определяемого основным реквизитом; свойства и методы объекта встроенного языка УправляемаяФорма; реквизиты формы; локальный контекст модуля.

&НаСервере — Означает, что метод выполняется на стороне сервера, а переменная существует только во время выполнения серверного вызова, при каждом серверном вызове значение переменной сбрасывается. Для серверных методов допустимы вызовы серверных, серверных внеконтекстных и клиент-серверных внеконтекстных методов. Контекст так же образуется свойствами и методами глобального контекста,  экспортными процедурами и функциями общих модулей скомпилированных на сервере, свойствами и методами расширения формы, определяемого основным реквизитом, свойствами  и методами объекта встроенного языка УправляемаяФорма, реквизитами формы. Клиентские процедуры, функции и переменные  недоступны.

&НаСервереБезКонтекста — определяет серверную процедуру, исполняемую вне контекста формы. Переменные не могут предваряться такой директивой. Серверная процедура, исполняемая вне контекста формы, (внеконтекстная) исполняется в среде серверного приложения. В такой процедуре не доступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных процедур. При вызове этих процедур не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных процедур позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры из среды клиентского приложения.

&НаКлиентеНаСервереБезКонтекста — используется, когда к процедуре необходимо обращаться как с клиента, так и с сервера. Означает, что метод исполняется как на клиенте, так и на сервере вне контекста формы. Переменные не могут предваряться такой директивой.

Таким образом, разработчик должен понимать, что он фактически работает с двумя контекстами исполнения: серверным и клиентским, и между ними происходит обмен данными

При этом нужно учитывать, что на клиенте поддерживается лишь ограниченный набор типов данных и  интерфейсные функции. На клиенте не допускается непосредственная работа с базой данных, работа непосредственно с прикладными объектами, использование запросов, таблиц значений. Доступность описана в синтакс-помошнике и ее необходимо проверять.

При разработке необходимо заботиться об оптимизации клиент-серверного взаимодействия:

  •          Основные вычисления должны выполняться в серверных процедурах;
  •         Нужно уменьшать количество серверных вызовов, когда из процедур &НаКлиенте вызываются процедуры &НаСервереБезКонтекста и &НаСервере;
  •          Количество контекстных серверных вызовов нужно минимизировать, лучше использовать процедуры &НаСервереБезКонтекста и передавать значения через параметры

 

Еще одна важная особенность управляемой формы состоит в том, что в ней происходит лишь отображение объекта. Основным ее реквизитом является не сам объект, а данные формы, в которые он преобразуется.

Элементами данных формы могут быть

  • ДанныеФормаСтруктура (СправочникОбъект, ДокументОбъект)
  • ДанныеФормыКоллекция (Табличные части)
  • ДанныеФормыСтруктураСКоллекцией (НаборЗаписейРегистра).

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

Реквизит формы может быть преобразован в объект и обратно путем использования функций ДанныеФормыВЗначение() и ЗначениеВДанныеФормы(). Также он может быть преобразован в значение и обратно парой методов – РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы(). Преобразование прикладных объектов в данные формы и обратно выполняется автоматически при выполнении стандартных действий формы и должно вызываться разработчиком при написании собственных алгоритмов.

Во время разработки конфигурации важно помнить, что прикладные объекты доступны только на сервере, в то время как объектами данных форм можно пользоваться и на сервере, и на клиенте.



См. также

Подписаться Добавить вознаграждение

Комментарии

2. Сергей Рудаков (fishca) 10.09.10 22:47
(1)Автор: © afcm

(Информация с ресурса http://infostart.ru)
Обновлено 10.09.2010 14:22

внизу на страничке ;)
3. Валерий Гайдабура (director04) 14.09.10 19:21
Блин... так можно всего Радченко по страничкам опубликовать... В чем особенность то данной статьи? Что она может дать не читавшему документацию? Или это способ лишний раз повториться, для тех, кто уже все это знает?
4. Николай Клементьев (Rusmus) 15.09.10 17:15
За "&НаКлиентеНаСервереБезКонтекста" спасибо.
adhocprog; +1 Ответить
5. Дмитрий К (ll13) 16.09.10 18:51
Зачем Вы перепечатали книгу ?
6. Julia (afcm) 21.09.10 15:29
С Радченко не переписывала, очевидно он брал из того же источника, что и я. Это 1С документация. Просто там это все в разных главах. Статью писала, т.к. было задание дистанционного курса spec8 опубликовать статью. Удивило, на форумах непонимание этого вопроса. А как мне кажется это очень просто, но нужно всегда помнить про ЭТИ ДВА момента. Т.ч. не скрою - основное переписано из документации - нового ничего не придумано. Просто собрано в одном месте.
SvetaSe; w-divin; +2 Ответить
7. o.nikolaev.infostart (o.nikolaev) 23.09.10 22:08
Не понимаю, зачем публиковать то что написано в документации? -
8. Олег Шалимов (CaSH_2004) 08.09.11 21:38
Думаю было бы правильно указать источники откуда перепечатка, тогда у народа не будет вопросов откуда все, а также указать причину выкладки - это все экономит время на ответы на естественные вопросы.
9. Павел С (pavel_pss) 08.08.14 15:25
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа