MenuSuite Analyser v1.03 (NAV)

AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
edited 2013-05-08 in Download section
MenuSuite Analyser (Navision)
Freeware, by Christophe Watrelot (cwatrelot@gesway.com), April 2006

Sure you've spent some time looking "Where is this $%#&£!!! function!"

1) ObjectDesigner, MenuSuite, select all MenuSuite objects then Export as txt.

2) Run form 89040 "Menu nodes", Functions, Import MenuSuite

You can choose a language with "Language Filter" flowfilter.

So, Don't worry, be happy!

http://www.mibuso.com/dlinfo.asp?FileID=585

Discuss this download here.

Comments

  • ara3nara3n Member Posts: 9,256
    Found a bug in it. He needs to increase the Name field in Menu Nodes to 50 characters. I got overflow error. Once increased everything worked. fine.
    Ahmed Rashed Amini
    Independent Consultant/Developer


    blog: https://dynamicsuser.net/nav/b/ara3n
  • mpsKingmpsKing Member Posts: 1
    Hi!

    Report 89040

    In function 'GetMenuNode(VAR pObject : Record Object)' add the following line ****

    WHILE GetToken('') <> '}' DO BEGIN
    Expected(';');

    CASE GetToken('') OF
    'Name' :
    Name := GetProperty();
    'CaptionML' :
    GetCaptionML(NodeID);
    'MemberOfMenu' :
    GetNodeProperty(MemberOfMenu);
    'RunObjectType' :
    CASE GetProperty() OF
    'Form' : RunObjectType := RunObjectType::Form;
    'Report' : RunObjectType := RunObjectType::Report;
    'Dataport' : RunObjectType := RunObjectType::Dataport;
    'Codeunit' : RunObjectType := RunObjectType::Codeunit;
    *** 'Table' : RunObjectType := RunObjectType::Table; ***

    ----

    Then it will work, if the menuegroup uses a table. Without that line there was an unespected error.

    Hope that helps.
  • annarannar Member Posts: 24
    Hi!


    The error message:
    ; was expected line ; position 4.

    Error is in:
    Expected(pToken : Text[30])
    IF Token <> pToken THEN
    ERROR(tExpected,pToken,LineNo,LinePos - STRLEN(Token));


    Something is wrong with customer menu suite part of the menu.
  • DoomhammerDoomhammer Member Posts: 211
    yep, I experienced problems with customer's menusuite too

    how to fix it, can please anybody help?
    Martin Bokůvka, AxiomProvis
  • vjacvjac Member Posts: 18
    The error Doomhammer and annar talk about is because of null value in Version list. It works if you write something in the Company menusuite Version list and do the menusuite export / import in analyzer after that.

    Cheers,
    vjac
  • AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
    MenuSuite Analyser v1.01 (NAV)
    Freeware, by Christophe Watrelot (cwatrelot@gesway.com), April 2006

    Sure you've spent some time looking "Where is this $%#&£!!! function!"

    1) ObjectDesigner, MenuSuite, select all MenuSuite objects then Export as txt.

    2) Run form 89040 "Menu nodes", Functions, Import MenuSuite

    You can choose a language with "Language Filter" flowfilter.

    So, Don't worry, be happy!

    Version 1.01:
    2008-10-13 Update by Davor Perkovac (davor.perkovac@gmail.com)

    Changes:
    -fix for importing menusuites containing table objects
    -for for importing menusuites with no version tag

    http://www.mibuso.com/dlinfo.asp?FileID=585

    Discuss this download here.
  • FDickschatFDickschat Member Posts: 380
    Great Tool.

    I increased the length of field name in Menu Nodes to 50, otherwise the import would stop.

    Question:

    Do you think it would be possible to export a menu (as text) based on the data which is in the tables? The problem I see with the menus is that they store every single change in them, although this would not be necessary.

    Example:
    When you delete an entry which is part of Menu 10 this is stored in Menu 90 and this information is necessary to correctly display the menu.
    When you first create a new entry in Menu 90 then delete that entry in error and last restore the same entry all 3 transactions (create, delete, create) are stored in Menu 90 and this information is simply redundant. In this case it would be enough to store only the last transaction in Menu 90.

    At a customer we once had a problem with lost items in the Sales & Marketing Menu and in the end I had to clear everything from the menu and then put it all back in which increased the size of Menu 90 from 230KB to 330KB.

    As this tool is available since 2006 did someone already create an export tool?
    Frank Dickschat
    FD Consulting
  • AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
    MenuSuite Analyser v1.02 (NAV)
    Freeware, by Christophe Watrelot (cwatrelot@gesway.com), April 2006

    Sure you've spent some time looking "Where is this $%#&£!!! function!"

    1) ObjectDesigner, MenuSuite, select all MenuSuite objects then Export as txt.

    2) Run form 89040 "Menu nodes", Functions, Import MenuSuite

    You can choose a language with "Language Filter" flowfilter.

    So, Don't worry, be happy!

    Version 1.02:
    Update by Nikolay Kruglov (nkruglov@stratsol.ru)
    Changes:
    - redisigned objects
    - separate import source texts with menusuites. It does not mention of menusuites order, replace exist, import only new
    - semigraph view
    - show changes history

    Version 1.01:
    2008-10-13 Update by Davor Perkovac (davor.perkovac@gmail.com)

    Changes:
    -fix for importing menusuites containing table objects
    -for for importing menusuites with no version tag

    http://www.mibuso.com/dlinfo.asp?FileID=585

    Discuss this download here.
  • KarenhKarenh Member Posts: 209
    Thank you for making this available.

    In your instructions, you indicate to run form 89040. I think you mean 89140.

    When I run it, I get an error There is no Menusuite Node caption within the filter. Filters: Node ID: ''

    I fixed the error. It was in form 89144, in the onformat trigger of the Caption texbox:


    // KHIG 04/11/08
    //lMenuSuiteNodeCaption.FINDFIRST;
    IF lMenuSuiteNodeCaption.FINDFIRST THEN;
    // KHIG end

    It would be nice to be have to option to sort by object number.
  • sanuychsanuych Member Posts: 4
    Karenh wrote:
    I fixed the error. It was in form 89144, in the onformat trigger of the Caption texbox:
    I think that the better to set the Property Editable=No in Forms 89143 and 89144.
    Karenh wrote:
    It would be nice to be have to option to sort by object number.
    Why not? Set
    - Sort (Sgift+F8) - Key=Object Type,Object ID
    - Field Filter - Object ID <> 0
  • FDickschatFDickschat Member Posts: 380
    I fixed another error in Form 89144, Function SetCursor. A customers menusuite would import but running the main form would bring an error like "The filter !_AAHBI|||||||||||||||||||||||||||||||||||_A|_B|_C..." is invalid
    GrowsFilter := pMenuSuiteNode."Scion ID";
    lMenuSuiteNode.SETCURRENTKEY("Line No.");
    lMenuSuiteNode.SETRANGE(Level,1);
    IF lMenuSuiteNode.FINDSET THEN BEGIN
      REPEAT
        //- fdi01
        //GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
        IF lMenuSuiteNode."Scion ID" <> '' THEN BEGIN
          IF GrowsFilter = '' THEN BEGIN
            GrowsFilter := lMenuSuiteNode."Scion ID";
          END ELSE BEGIN
            GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
          END;
        END;
        //+ fdi01
      UNTIL lMenuSuiteNode.NEXT = 0;
      lMenuSuiteNode := pMenuSuiteNode;
      WHILE lMenuSuiteNode.Level > 2 DO BEGIN
        lMenuSuiteNode.SETFILTER("Line No.",'..%1',lMenuSuiteNode."Line No.");
        lMenuSuiteNode.SETRANGE(Level,lMenuSuiteNode.Level - 1);
        lMenuSuiteNode.FINDLAST;
        //- fdi01
        //GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
        IF lMenuSuiteNode."Scion ID" <> '' THEN BEGIN
          IF GrowsFilter = '' THEN BEGIN
            GrowsFilter := lMenuSuiteNode."Scion ID";
          END ELSE BEGIN
            GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
          END;
        END;
        //+ fdi01
      END;
    END;
    SETFILTER("Scion ID",GrowsFilter);
    FINDFIRST;
    CurrForm.UPDATE(FALSE);
    Rec := pMenuSuiteNode;
    CurrForm.UPDATE(FALSE);
    
    Frank Dickschat
    FD Consulting
  • sanuychsanuych Member Posts: 4
    FDickschat wrote:
    I fixed another error in Form 89144, Function SetCursor. A customers menusuite would import but running the main form would bring an error like "The filter !_AAHBI|||||||||||||||||||||||||||||||||||_A|_B|_C..." is invalid
    We have this error message when we have the Node with Level=0 and NodeType=Root.
    To fix this error we need to change the Codeunit 89140 RUN trigger

    gRootNodeID := '00000000-0000-0000-0000-000000000000';
    IF lMenuSuiteNode.GET(gRootNodeID) THEN
    SetLineNo(lMenuSuiteNode);

    lMenuSuiteNode.SETRANGE("Line No.",0);
    // add new line
    lMenuSuiteNode.SETFILTER("Node Type",'<>%1',lMenuSuiteNode."Node Type"::Root);
    //
    lMenuSuiteNode.MODIFYALL("Show Node",TRUE);
    lMenuSuiteNode.MODIFYALL(Level,1);
    lMenuSuiteNode.MODIFYALL("Scions Filter",'~');
  • AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
    MenuSuite Analyser v1.03 (NAV)
    Freeware, by Christophe Watrelot (cwatrelot@gesway.com), April 2006

    Sure you've spent some time looking "Where is this $%#&£!!! function!"

    1) ObjectDesigner, MenuSuite, select all MenuSuite objects then Export as txt.

    2) Run form 89040 "Menu nodes", Functions, Import MenuSuite

    You can choose a language with "Language Filter" flowfilter.

    So, Don't worry, be happy!

    Version 1.03:
    Update by Nikolay Kruglov (nkruglov@stratsol.ru)

    Changes:
    - fixed error - open form with empty table
    - fixed error - import MenuSuite with "hung" Node
    Run form 89140 "MenuSuite Nodes"

    Version 1.02:
    Update by Nikolay Kruglov (nkruglov@stratsol.ru)

    Changes:
    - redesigned objects
    - separate import source texts with menusuites. It does not mention of menusuites order, replace exist, import only new
    - semigraph view
    - show changes history

    Version 1.01:
    2008-10-13 Update by Davor Perkovac (davor.perkovac@gmail.com)

    Changes:
    -fix for importing menusuites containing table objects
    -for for importing menusuites with no version tag

    http://www.mibuso.com/dlinfo.asp?FileID=585

    Discuss this download here.
  • BeniHochBeniHoch Member Posts: 15
    Hallo Christophe,

    Thank you for this create tool :D!

    I changed some of your forms to make them run with MenuSite with missing translations.
    89140 MenuSuite Nodes
    SourceExpr=Caption;
                                                     OnFormat=VAR
                                                                lMenuSuiteNodeCaption@1000 : Record 65427;
                                                                li@1001 : Integer;
                                                              BEGIN
                                                                IF Text = '' THEN BEGIN
                                                                  IF NOT lMenuSuiteNodeCaption.GET("Node ID",WINDOWSLANGUAGE) THEN
                                                                    IF NOT lMenuSuiteNodeCaption.GET("Node ID",1033) THEN BEGIN
                                                                      lMenuSuiteNodeCaption.SETRANGE("Node ID","Node ID");
                                                                      // Start kvs01.bh
                                                                      // lMenuSuiteNodeCaption.FINDFIRST;
                                                                      IF NOT lMenuSuiteNodeCaption.FINDFIRST THEN BEGIN
                                                                        lMenuSuiteNodeCaption.INIT;
                                                                      END;
                                                                    END;
                                                                  Text := STRSUBSTNO('<< %1 >>',lMenuSuiteNodeCaption.Caption);
    
    89144 MenuSuite Graph
    
    SourceExpr=Caption;
                                                     OnFormat=VAR
                                                                lMenuSuiteNodeCaption@1000 : Record 65427;
                                                                li@1001 : Integer;
                                                              BEGIN
                                                                IF Text = '' THEN BEGIN
                                                                  IF NOT lMenuSuiteNodeCaption.GET("Node ID",WINDOWSLANGUAGE) THEN
                                                                    IF NOT lMenuSuiteNodeCaption.GET("Node ID",1033) THEN BEGIN
                                                                      lMenuSuiteNodeCaption.SETRANGE("Node ID","Node ID");
                                                                      // Start kvs01.bh
                                                                      //lMenuSuiteNodeCaption.FINDFIRST;
                                                                      IF NOT lMenuSuiteNodeCaption.FINDFIRST THEN
                                                                        lMenuSuiteNodeCaption.INIT;
                                                                      // Stop kvs01.bh
                                                                    END;
                                                                  Text := STRSUBSTNO('<< %1 >>',lMenuSuiteNodeCaption.Caption);
    
    PROCEDURE SetCursor@1(pMenuSuiteNode@1000 : Record 65426);
          lMenuSuiteNode.SETRANGE(Level,1);
          // Start kvs01.bh
          lMenuSuiteNode.SETFILTER("Scion ID",'<>''''');
          // Stop kvs01.bh
          IF lMenuSuiteNode.FINDSET THEN BEGIN
            REPEAT
              // Start kvs01.bh
              //GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
              IF GrowsFilter <> '' THEN
                GrowsFilter += '|';
              GrowsFilter += lMenuSuiteNode."Scion ID";
              // Stop kvs01.bh
            UNTIL lMenuSuiteNode.NEXT = 0;
    
  • IngEolRuinIngEolRuin Member Posts: 23
    Hi folks.

    I incorporated the patches and changed the Record Size of some properties so it works with more exotic languages like "German".

    We Use "Nein" instead of "No" and other nice words.

    Tested with NAV 5.0 SP1, German Version

    BTW: What's a "Scion" ?

    Patched Objects attached as picture.
    =(there is no question that cannot be used if we use our brain)=
  • Thomas_Hviid_ThornThomas_Hviid_Thorn Member Posts: 92
    Hej

    I revoked this comment: Exported the Role Tailored Menu's too!! :oops:
    With Kind Regards
    Thoms Hviid Thorn
  • djkdjkdjkdjk Member Posts: 17
    Hi

    A stupid question. Is it possible to use this tool with the Menusuites of 2009 version?

    I get the following errormessage:
    ---------------------------
    Microsoft Dynamics NAV Classic
    ---------------------------
    The filter '|||||||||||||||||||||||||||||||||||||||||||||_A|_B|_C|_D|_E|_F|_G|_H|_I|_J|_K|_L|_M' is invalid.
    
    A value or an interval is missing in the filter in the Scion ID field in the MenuSuite Node table.
    
    ---------------------------
    OK   
    ---------------------------
    

    Or came this error from a other Issue?

    Best regards
    Jeannot Keiser
  • alex9alex9 Member Posts: 97
    I agree, it would be really nice to have this utility working with NAV2009. Current version is not working.
  • mdPartnerNLmdPartnerNL Member Posts: 802
    Can this one export it to a new txt file too?
  • danlindstromdanlindstrom Member Posts: 130
    djkdjk wrote:
    Hi

    A stupid question. Is it possible to use this tool with the Menusuites of 2009 version?

    I get the following errormessage:
    ---------------------------
    Microsoft Dynamics NAV Classic
    ---------------------------
    The filter '|||||||||||||||||||||||||||||||||||||||||||||_A|_B|_C|_D|_E|_F|_G|_H|_I|_J|_K|_L|_M' is invalid.
    
    A value or an interval is missing in the filter in the Scion ID field in the MenuSuite Node table.
    
    ---------------------------
    OK   
    ---------------------------
    

    Or came this error from a other Issue?

    Best regards
    Jeannot Keiser


    Form 89411
    SetCursor(pMenuSuiteNode : Record "MenuSuite Node")
    GrowsFilter := pMenuSuiteNode."Scion ID";
    <...>
        GrowsFilter := STRSUBSTNO('%1|%2',GrowsFilter,lMenuSuiteNode."Scion ID");
      END;
    END;
    
    GrowsFilter := DELCHR(GrowsFilter,'<>','|');       <<---- Add this
    GrowsFiltertemp:= '';
    FOR i := 1 TO STRLEN(GrowsFilter) DO BEGIN
      IF COPYSTR(GrowsFilter,i,2) <> '||' THEN
        GrowsFiltertemp += FORMAT(GrowsFilter[i]);
    END;
    GrowsFilter := GrowsFiltertemp;
    
    SETFILTER("Scion ID",GrowsFilter);
    FINDFIRST;
    <...>
    
    Regards
    Dan Lindström
    NCSD Navision 2.00 since 1999 (Navision Certified Solution Developer)
    MBSP Developer for Microsoft Dynamics NAV 2009
  • victor73victor73 Member Posts: 55
    Hello Christophe Watrelot and all of you
    this is a very nice tool but I receive an error when importing Company Menusuite 90
    as reported in the attached file, if I import other menu objects as 10,20 or 30 I don't receive any errors, but in this case I have a further question: if I drill down to the customers card (for example) and then push on Menusuite (button)->Where Used there is nothing the Where Used form, this happens with any other form, codeunit or report among all the objects of the Menusuite Node List
    So my questions is does the Where Used function work? In case can you tell me what am I doing wrong?

    Thank you in advance for your attention
    Regards
Sign In or Register to comment.