Как сделать ссылку для открытия в Dynamics NAV (RTC интерфейс) конкретной товарной карточки?

Как сделать ссылку для открытия в Dynamics NAV (RTC интерфейс) конкретной товарной карточки?

  • Comments 3
  • Likes

Попробую ответить…

 

Общий принцип построения ссылки расписан в статье 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

ItemHyperlinks01

Все сохранил и запускаю нужный отчет через Run:

dynamicsnav://localhost/DynamicsNAV/CRONUS Россия ЗАО/runreport?report=50000

Теперь если кликнуть в запущенном RTC отчете по названию товара, то открывается карточка конкретного товара:

ItemHyperlinks02

 

Как же получить ссылки?

Сохраняю отчет в Excel и оттуда уже копировать можно ссылки:

ItemHyperlinks03

 

Вот, например, ссылка на товар 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 откроется ссылка на карточку соответствующего товара.

 

Можно так же сделать на рабочем столе для открытия конкретной карточки товара соответствующий ярлык:

ItemHyperlinks04

 

Файл объекта Item – Hyperlinks.fob прилагаю.

 

P.S.

15 полезных русских блог постов по NAV 2009, советы по клиенту с новым ролевым интерфейсом и т.д.

 

P.S. 2

Доп. инфа по RTC линкам:
http://blogs.msdn.com/b/freddyk/archive/2008/11/19/creating-and-running-hyperlinks.aspx

Attachment: Item - Hyperlinks.fob
Comments
  • Алексей, день добрый!

    столкнулся с аналогичной проблемой.

    она может быть как-то еще решена, кроме как отчетом?

    повторил все, что было в отчете, в отдельной функции:

    Item.GET('1151');

    RecRef.OPEN(DATABASE::Item);

    RecRef.SETPOSITION(Item.GETPOSITION);

    MESSAGE(FORMAT(RecRef.RECORDID,0,10));

    выдает стандартный

    item.1151

    вместо волшебного

    bookmark=224;GwAAAACJBDExNTE=

    боюсь непросто будет попытаться в фоновом режиме запустить отчет, выгрузить в Excel, скопировать ссылку в буфер и вставить в нужное место... должен быть какой-то путь покороче...

    с уважением,

    Санин Сергей

  • вопрос закрыт! :)

    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]

    ---------------------------

    ОК

    ---------------------------

  • Ага. Добавил ссылку с доп. инфой.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment