Как сделать ссылку для открытия в Dynamics NAV (RTC интерфейс) конкретной товарной карточки?
Попробую ответить…
Общий принцип построения ссылки расписан в статье help (Справка \ Руководство по C/SIDE): Creating and Running Hyperlinks. На MSDN это статья https://msdn.microsoft.com/en-us/library/dd338670.aspx
Проблема в том, что в общую схему:
DynamicsNAV://server/service/company/runpage?page=22&bookmark=0ABA0700235752C7D1
надо подставлять сгенеренный автоматически bookmark.
Для получения bookmark надо воспользоваться механизмом, описанным в help: Walkthrough: Creating a Link from a Report to a Page. На MSDN это статья https://msdn.microsoft.com/en-us/library/dd301304.aspx
Я задался целью проверить это и вот что получилось…
Создал простейший отчет со списком товаров и с добавленными операциями по переменной ItemRecRef:
OBJECT Report 50000 Item - Hyperlinks
{
OBJECT-PROPERTIES
{
Date=16.02.12;
Time=[ 9:40:39];
Modified=Yes;
Version List=;
}
PROPERTIES
{
EnableHyperlinks=Yes;
}
DATAITEMS
{
{ PROPERTIES
{
DataItemTable=Table27;
DataItemTableView=SORTING(No.);
OnPreDataItem=BEGIN
ItemRecRef.OPEN(27);
END;
OnAfterGetRecord=BEGIN
ItemRecRef.SETPOSITION(Item.GETPOSITION);
END;
ReqFilterFields=No.;
GroupTotalFields=No.;
}
SECTIONS
{
{ PROPERTIES
{
SectionType=Header;
PrintOnEveryPage=Yes;
SectionWidth=18150;
SectionHeight=1692;
}
CONTROLS
{
<...>
}
}
{ PROPERTIES
{
SectionType=Header;
PrintOnEveryPage=Yes;
SectionWidth=18150;
SectionHeight=846;
}
CONTROLS
{
{ 1000000012;Label ;0 ;0 ;1500 ;846 ;ParentControl=1000000011;
VertAlign=Bottom;
FontBold=Yes;
MultiLine=Yes;
DataSetFieldName=Item__No__Caption }
{ 1000000015;Label ;1650 ;0 ;4500 ;846 ;ParentControl=1000000014;
VertAlign=Bottom;
FontBold=Yes;
MultiLine=Yes;
DataSetFieldName=Item_DescriptionCaption }
}
}
{ PROPERTIES
{
SectionType=Body;
SectionWidth=18150;
SectionHeight=423;
}
CONTROLS
{
{ 1000000011;TextBox;0 ;0 ;1500 ;423 ;HorzAlign=Left;
SourceExpr="No.";
DataSetFieldName=Item__No__ }
{ 1000000014;TextBox;1650 ;0 ;4500 ;423 ;HorzAlign=Left;
SourceExpr=Description;
DataSetFieldName=Item_Description }
{ 1000000000;TextBox;6450 ;0 ;150 ;423 ;Visible=No;
SourceExpr=FORMAT(ItemRecRef.RECORDID,0,10);
DataSetFieldName=FORMAT_ItemRecRef_RECORDID_0_10_ }
}
}
}
}
}
<...>
CODE
{
VAR
ItemRecRef@1000000002 : RecordRef;
BEGIN
END.
}
RDLDATA
<...>
Далее через Инструменты \ Create Layout Suggestion открыл Visual Studio и там выставил в Navigation \ Jump to URL полную ссылку:
="dynamicsnav://localhost/DynamicsNAV/CRONUS Россия ЗАО/runpage?page=30&mode=edit&bookmark="+Fields!FORMAT_ItemRecRef_RECORDID_0_10_.Value
Все сохранил и запускаю нужный отчет через Run:
dynamicsnav://localhost/DynamicsNAV/CRONUS Россия ЗАО/runreport?report=50000
Теперь если кликнуть в запущенном RTC отчете по названию товара, то открывается карточка конкретного товара:
Как же получить ссылки?
Сохраняю отчет в Excel и оттуда уже копировать можно ссылки:
Вот, например, ссылка на товар 1151:
dynamicsnav://localhost/DynamicsNAV/CRONUS%20%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%20%D0%97%D0%90%D0%9E/runpage?page=30&mode=edit&bookmark=224;GwAAAACJBDExNTE=
При ее запуске через Run откроется ссылка на карточку соответствующего товара.
Можно так же сделать на рабочем столе для открытия конкретной карточки товара соответствующий ярлык:
Файл объекта Item – Hyperlinks.fob прилагаю.
P.S.
15 полезных русских блог постов по NAV 2009, советы по клиенту с новым ролевым интерфейсом и т.д.
P.S. 2
Доп. инфа по RTC линкам:
https://blogs.msdn.com/b/freddyk/archive/2008/11/19/creating-and-running-hyperlinks.aspx
Comments
Anonymous
February 20, 2012
Алексей, день добрый! столкнулся с аналогичной проблемой. она может быть как-то еще решена, кроме как отчетом? повторил все, что было в отчете, в отдельной функции: Item.GET('1151'); RecRef.OPEN(DATABASE::Item); RecRef.SETPOSITION(Item.GETPOSITION); MESSAGE(FORMAT(RecRef.RECORDID,0,10)); выдает стандартный item.1151 вместо волшебного bookmark=224;GwAAAACJBDExNTE= боюсь непросто будет попытаться в фоновом режиме запустить отчет, выгрузить в Excel, скопировать ссылку в буфер и вставить в нужное место... должен быть какой-то путь покороче... с уважением, Санин СергейAnonymous
February 20, 2012
вопрос закрыт! :) blogs.msdn.com/.../creating-and-running-hyperlinks.aspx какие они разные... одна и та же строчка кода: MESSAGE(FORMAT(RecRef.RECORDID,0,10)); [b]Классика:[/b]
Microsoft Dynamics NAV Classic
[b]Item: 1151[/b]
ОК
[b]RTC:[/b] Microsoft Dynamics NAV
[b]224;GwAAAACJBDExNTE=[/b]
ОК
- Anonymous
February 21, 2012
Ага. Добавил ссылку с доп. инфой.