Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Попробую ответить…
Общий принцип построения ссылки расписан в статье 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
Ага. Добавил ссылку с доп. инфой.