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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2009, 11:13   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Открытие форм с сервера с использованием MenuFunction
Не так давно потребовалось из класса, отрабатывающего на сервере, запускать форму, отображающую некоторые результаты его работы. Для формы есть пункт меню, запускающий ее на клиенте. Оказалось, что решение "в лоб" вовсе не обязательно приведет к желаемому эффекту:
X++:
MenuFunction menuFunc = new MenuFunction( menuitemdisplaystr(SomeForm), MenuItemType::Display );
Args         args     = new Args();
// ...
menuFunc.run( args );
Несмотря на то, что, опять же, в пункте меню явно прописано запускать форму на клиенте, никакого видимого эффекта в результате выполнения этого кода не наблюдалось. Опытным путем было выяснено, что для 3-ки и MenuFunction, и Args должны создаваться на клиенте, иначе форма не откроется. Для 4-ки вроде бы MenuFunction отрабатывает и с сервера, но в любом случае объект Args должен создаваться на клиенте - иначе клиент вообще сваливается. Для 3-ки дополнительные неудобства еще создает то, что конструктор MenuFunction требует передачи параметров, так что через какой-нить classFactory соотв. объект на нужном уровне не создашь; пришлось создавать через infolog:
X++:
MenuFunction menuFunc = infolog.getNode( UtilElementType::DisplayTool, menuitemdisplaystr(SomeForm) );
Args         args     = classFactory::makeObjectOnClient( classnum(Args) );
// ...
menuFunc.run( args );
Во вложении - небольшой проект для 4-ки с job'ом и пунктом меню для запуска его на сервере, демонстрирующий указанный эффект; в принципе, его можно и на 3-ке загрузить, только надо пункт меню для запуска job'а проверить и при необходимости подправить, чтобы запускался именно job, а не одноименная форма. В job'е в качестве тестовой формы открывается AddressTrans_RU через одноименный пункт меню, поскольку он - один из немногих, где для формы штатно прописано RunOn Client; обычно для форм в пунктах меню стандартного приложения прописано RunOn Called from.

На форуме уже встречалась похожая тема Проблема с программным открытием форм, но в моем случае вариант "запускать класс на клиенте" был неприемлем.

PS. Axapta 3.0.1951.7669, также проверялось на AX 4.0.2501.116.
Вложения
Тип файла: xpo TestServerMenuFunction.xpo (3.6 Кб, 290 просмотров)
За это сообщение автора поблагодарили: samolalex (3).
Теги
баг, ошибка, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пользовательские настройки и модификация форм olesh DAX: Программирование 6 30.03.2017 10:54
Как получить метки всех элементов всех форм (DAX 4) Qaz Qwerty DAX: Программирование 1 09.08.2008 05:39
Управление настройками форм LTA DAX: Программирование 11 11.12.2003 14:20
Исполнение методов класса на стороне сервера (AOS)? SnowMan DAX: Программирование 11 28.08.2003 16:15
Настройка форм для групп пользователей Роман Кошелев DAX: Функционал 14 05.08.2002 16:32

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.