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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.04.2006, 11:19   #1  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от sukhanchik
... RunBase - несмотря на то, что создается на сервере - он сам делает клиентскую копию себя, откуда и работает с формой. А данные просто передает через контейнер между экземплярами классов.
Хм... Думаю, что RunBase (вернее его наследник) делает клиентскую копию себя только если "Run on" равно "Called from" и экземпляр RunBase создан на сервере. Это можно увидеть в RunBase.PrompPrim():
Код:
...
// Move prompt to client when running on server and the class is swappable
if (isRunningOnServer() && this.canSwapBetweenCS() && this.canSwapBetweenCSPrim())
{
    [clientPrompt,clientPacked] = runbase::promptOnClient(classidget(this),this.promptPack());
    this.promptUnpack(clientPacked,clientPrompt);
    return clientPrompt;
}
...
Если "Run on" равно "Server", то создается клиентская копия Dialog - см. Dialog.doRun() и Dialog::runOnClient(). Соответственно в метод RunBase.dialogPostRun() передается серверный Dialog у которого формы нет, а клиентский (c формой) остается 'в тени'.
Цитата:
Сообщение от oip
Т.е. если класс выполняется на сервере, то ничего не поделаешь?
IMHO лучше "Run on" выставлять в "Called from" и создавать экземпляр RunBase на сервере принудительно. Получим и Dialog на клиенте (со всеми DialogField и формой) и выполнение RunBase.run() на сервере.
Старый 05.04.2006, 11:48   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от vallys
Хм... Думаю, что RunBase (вернее его наследник) делает клиентскую копию себя только если "Run on" равно "Called from" и экземпляр RunBase создан на сервере. Это можно увидеть в RunBase.PrompPrim():
Код:
...
// Move prompt to client when running on server and the class is swappable
if (isRunningOnServer() && this.canSwapBetweenCS() && this.canSwapBetweenCSPrim())
{
    [clientPrompt,clientPacked] = runbase::promptOnClient(classidget(this),this.promptPack());
    this.promptUnpack(clientPacked,clientPrompt);
    return clientPrompt;
}
...
ага ... согласен... только тут нигде нет упоминание свойства RunOn. Только проверка - создан ли экземпляр класса на сервере или нет. А значит без разницы - какое значение принимает свойство RunOn - лишь бы оно позволло создать класс на сервере
__________________
Возможно сделать все. Вопрос времени
Старый 05.04.2006, 11:51   #3  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от sukhanchik
ага ... согласен... только тут нигде нет упоминание свойства RunOn. Только проверка - создан ли экземпляр класса на сервере или нет. А значит без разницы - какое значение принимает свойство RunOn - лишь бы оно позволло создать класс на сервере
Есть проверка - в RunBase.canSwapBetweenCSPrim
Код:
/*
Returns whether it is possible to pack the class, reinstantiate a new class, and unpack it on the "other" side.
*/
private boolean canSwapBetweenCSPrim()
{
    return new dictClass(classIdget(this)).runMode() == ClassRunMode::Called;
}
Старый 05.04.2006, 12:43   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от vallys
Есть проверка - в RunBase.canSwapBetweenCSPrim
Код:
/*
Returns whether it is possible to pack the class, reinstantiate a new class, and unpack it on the "other" side.
*/
private boolean canSwapBetweenCSPrim()
{
    return new dictClass(classIdget(this)).runMode() == ClassRunMode::Called;
}
Эх... придется посыпать голову пеплом.... по крайней мере сейчас - и повнимательнее посмотреть RunBase....
В общем - был неправ.
__________________
Возможно сделать все. Вопрос времени
Теги
dialog, runbase

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема с путями к шаблонам Deep Dreamer DAX: Программирование 10 22.11.2005 14:49
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Формат даты на сервере и клиенте bio_unit DAX: Администрирование 2 25.08.2004 16:44
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20

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

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

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