![]() |
#1 |
Участник
|
Попробую ответить…
Общий принцип построения ссылки расписан в статье help (Справка Руководство по C/SIDE): Creating and Running Hyperlinks. На MSDN это статья http://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 это статья http://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, советы по клиенту с новым ролевым интерфейсом и т.д. Подробнее... http://blogs.technet.com/b/alexef/ar...hyperlink.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
![]() |
#2 |
Administrator
|
и тут спрошу.
столкнулся с аналогичной проблемой. она может быть как-то еще решена, кроме как отчетом? повторил все, что было в отчете, в отдельной функции: Item.GET('1151'); RecRef.OPEN(DATABASE::Item); RecRef.SETPOSITION(Item.GETPOSITION); MESSAGE(FORMAT(RecRef.RECORDID,0,10)); выдает стандартный item.1151 вместо волшебного bookmark=224;GwAAAACJBDExNTE= боюсь непросто будет попытаться в фоновом режиме запустить отчет, выгрузить в Excel, скопировать ссылку в буфер и вставить в нужное место... должен быть какой-то путь покороче... |
|
![]() |
#3 |
Administrator
|
йоу!
какие они разные... одна и та же строчка кода: MESSAGE(FORMAT(RecRef.RECORDID,0,10)); Классика: --------------------------- Microsoft Dynamics NAV Classic --------------------------- Item: 1151 --------------------------- ОК --------------------------- RTC: Microsoft Dynamics NAV --------------------------- 224;GwAAAACJBDExNTE= --------------------------- ОК --------------------------- |
|
![]() |
#4 |
Участник
|
Да, FORMAT(RecordRef.RECORDID,0,10) возращает, при запуске в RTC, именно RTC ссылку. В классике будет другой возврат.
Доп. инфа: http://blogs.msdn.com/b/freddyk/arch...yperlinks.aspx |
|
![]() |
#5 |
Administrator
|
не подскажите, есть простой способ определить, какой клиент запущен?
|
|
![]() |
#6 |
MCTS
|
|
|
![]() |
#7 |
Administrator
|
коротко и по делу!
+1, Андрей! |
|