共用方式為


Как сделать ссылку для открытия в 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

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 линкам:
https://blogs.msdn.com/b/freddyk/archive/2008/11/19/creating-and-running-hyperlinks.aspx

Item - Hyperlinks.fob

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
    Ага. Добавил ссылку с доп. инфой.