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


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

 

Общий принцип построения ссылки расписан в статье help (Справка \ Руководство по C/SIDE): Creating and Running Hyperlinks. На MSDN это статья http://msdn.microsoft.com/enus/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

Item — Hyperlinks.fob

Comments (3)

  1. Sancho:

    Алексей, день добрый!

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

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

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

    Item.GET('1151');

    RecRef.OPEN(DATABASE::Item);

    RecRef.SETPOSITION(Item.GETPOSITION);

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

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

    item.1151

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

    bookmark=224;GwAAAACJBDExNTE=

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

    с уважением,

    Санин Сергей

  2. Sancho:

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

    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]

    —————————

    ОК

    —————————

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