Показать сообщение отдельно
Старый 08.12.2011, 23:14   #44  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,283 / 3491 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Добрался до компа
Итак, делаем следующие действия:
1. Создаем файлик link.html со следующим текстом:
Цитата:
<html><a href=Dynamics://ERP?DrillDown_546>Dynamics://ERP?DrillDown_546</a></html>
Что будет до знака вопроса никому особо неинтересно. Главное - чтобы что-то было и совпало со значением в модуле \Основное\Настройка\Оповещения\Параметры оповещений в поле "Цель поисково-аналитической работы" (по-русски - EventParameters.DrillDownGroupId). И когда формируется ссылка - то текст до знака вопроса подставляется из этого поля
2. Убеждаемся в винде, что у нас с протоколом Dynamics:// сопоставлен файл AXHLink.exe (см. мой пост выше)
3. Убеждаемся, что в конфигурационной утилите клиента АХ выбрана та конфигурация, откуда была сгенерирована ссылка.
4. Заходим в АХ, в метод \Classes\Info\startup и на строчке if (startupCommand) ставим точку останова (самый верх метода)
5. Щелкаем по ссылке и отвечаем на идиотский вопрос, что разрешаем доступ к клиенту AX
Название: AXHLinkAccess.PNG
Просмотров: 2051

Размер: 12.1 Кб
6. Анализируем строку startupCommand, которая была передана в АХ. У меня это:
Цитата:
drilldown_546?ERP
7. Заходим в метод \Classes\SysStartupCmd\construct, смотрим (вверху), как разбирается эта строка. Запоминаем, что попало в переменную parm (546?ERP). Убеждаемся в инициализации класса \Classes\SysStartUpCmdDrillDown
8. Заходим в метод \Classes\SysStartUpCmdDrillDown\infoRun и смотрим, как разбирается переменная parm. Видим, как в строке
X++:
str alertId = EventDrillDownPoller::parseAlertId(parm);
получается alertId. А в строках
X++:
str navigationMark = EventDrillDownPoller::parseDrillDownNavigationMark(parm);
и
X++:
EventDrillDownPoller::checkDrillDownNavigationMark(navigationMark)
получается и проверяется этот параметр DrillDownGroupId
9. В строке
X++:
alertRecord = EventInbox::find(str2int64(alertId));
понимаем, что alertId - это не что иное, как EventInboxId, т.е. код записи (InboxId) в таблице входящих оповещений (та, которая открывается по колокольчику)

Ну и отвечая на вопрос - правильный синтаксис запуска клиента АХ в этом случае будет такой:

Client\Bin\ax32.exe -startupcmd=drilldown_546?ERP
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: EVGL (5), mnt_dx (1).