AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2007, 23:51   #1  
Blog bot is offline
Blog bot
Участник
 
25,631 / 848 (80) +++++++
Регистрация: 28.10.2006
dax-dilettante: 15. System Classes \ The Global Session Classes
Источник: http://dax-dilettante.blogspot.com/2...hapter152.html
==============

(последнее обновление: 14.08.07)
(основной перевод: 10.08.07-14.08.07)


Класс Application

Наиболее важной особенностью класса Application является то, что он работает на сервере. Каждый клиентский сеанс имеет свой собственный экземпляр этого класса на сервере. Класс Application нельзя использовать для передачи сообщений между клиентами. Вам всегда доступен экземпляр этого класса в виде глобального объекта appl, вы никогда не должны создавать свои собственные экземпляры.

Вот пример использования объекта appl в X++:
appl.setDefaultCompany('DAT');
Метод setDefaultCompany изменяет текущую компанию для сеанса.

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

Класс Info

Класс Info выполняется на уровне клиента. Вам всегда доступен экземпляр этого класса под именем infolog, вы никогда не должны создавать свои собственные экземпляры этого класса.

Методы этого класса вызываются при открытии и закрытии формы, при изменении записи в источнике данных формы, а также при переходе клиента в режим ожидания (idle mode). Класс Info также обеспечивает визуализацию сообщений, посланных в подсистему отладочных сообщений Infolog. Когда возникает исключение или вызываются методы error, warning, info или checkFailed, сообщение помещается в очередь сообщений Infolog. Когда клиент входит в режим ожидания, он обрабатывает все сообщения и выводит их в форме Infolog. В классе Info вы сможете найти такие методы, как copy, cut, clear, add, import и export. Эти методы позволяют изменить очередь перед обработкой. Следующий пример демонстирует очередь:
container data;
print infolog.line(); //Prints 0

info("Post this information message to the Infolog queue");
warning("Post this warning message to the Infolog queue");
error("Post this error message to the Infolog queue");

print infolog.line(); //Prints 3
data = infolog.cut(2, 3); //From = 2, To = 3
print infolog.line(); //Prints 1
...
infolog.view(data);
Класс ClassFactory

Как видно из названия этого класса, ClassFactory - это "завод", "фабрика". Во время выполнения программы существуют два экземпляра этого класса и оба имеют одно и то же название classFactory. Несмотря на кажущуюся путаницу такой реализации, это мощная концепция. При вызове метода объекта classFactory из кода, работающего на клиенте, вызывается объект classFactory на уровне клиента, из кода на сервере - объект classFactory на уровне сервера. Таким образом, при вызове методов объекта classFactory никогда не происходит межуровненвых вызовов, понижающих прозводительность. Если объекты appl и infolog можно представить как "двоюродных братьев", находящихся на двух уровнях, то два объекта classFactory - "двойня".

Поскольку объекты the classFactory являются двумя разными экземплярами одного и того же класса, каждый из них имеет свои собственные переменные. Если установить значение какой-либо переменной в экземпляре на клиенте, то этим значением нельзя будет воспользоваться в экземпляре на сервере. Помните об этом при отладке класса ClassFactory.

Объекты classFactory вызываются во время выполнения для инициализации (создания экземпляров) форм, отчетов и некоторых системных диалогов, таких как "Поиск меток" (Label editor), "Запрос" (Query form) и "Сообщения компилятора" (Compiler Output form). Если нужно создать новый экземпляр формы или отчета, следует использовать "фабрику". Следующий код показывает, как правильно инициализировать форму:
Args args = new Args(formStr());
FormRun formRun = classFactory.formRunClass(args);
Инициализируя вся формы через одну и ту же "фабрику", можно замещать их и изменять во время выполнения. Это подробно рассматривается в главе 13 "Advanced MorphX Forms".

Источник: http://dax-dilettante.blogspot.com/2...hapter152.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxis: Dynamics Ax 4.0 Session Types Blog bot DAX Blogs 0 01.04.2009 18:05
Передача функции в качестве параметра lemchey_white DAX: Программирование 20 21.01.2008 22:51
dax-dilettante: Для некоторых общих целей Blog bot DAX Blogs 11 27.09.2007 19:02
dax-dilettante: 15. System Classes \ The Global Class Blog bot DAX Blogs 0 26.09.2007 23:51
dax-dilettante: 15. System Classes \ The Collection Classes Blog bot DAX Blogs 0 26.09.2007 23:51

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:01.