1. Value transfer to a new record from master detail relation

    Artikel: AN0002409Aktualisiert: 18.01.2020
    Die vorgegebene Sprachenversion vom Artikeltext wird angezeigt, weil es kein Text von der ausgewählten Sprache und Version gibt.

    In some cases we need to transfer data from the referred record when creating a new record from a master-detail relation.

    In the below example we have a class Project, that contains among others column Primary goal (primary_goal) and column Modified configuration items (modified-ci). These columns are highlighted together with a button for creating a new record in the master-detail relation in the below print screen.



    Our goal is to open a new record of Task after clicking on he button New, which will refer to the given Project and will contain in columns Goal and Modified items values from the project - exactly as we see it in the below print screen.


    There is entity-relationship diagram showing columns relevant for our example for more clarity:

    To achieve this behaviour we will set up in the corresponding master-detail relation of the class Project a variable, that will be added to URL and that will be identified in the rule Before displaying a new record in the detail of the class Task.

    We will set property Url variables for new record to "com=goal".

    Rule of type Script of the event  Before displaying new record in detail:

    var com = OG.QueryString.GetString('com');
    var proId = OG.QueryString.GetInt('Fi1v');

    if ( com == 'goal' && proId != null)
      var clPro = OGDataParent.Model.ClassDefs['project'];
      var drPro = OG.DataRow.GetDataById( clPro.Id, proId);

      if ( drPro != null)
        //read Primary goal
        var id = drPro['primary_goal'];
        if ( id != null)
          var clGoal = OGDataParent.Model.ClassDefs['goal'];
          OGActualDataRow['goal'] = OG.DataRow.GetDataById(clGoal.Id, id);

        //read Modified configuration items
        var clCi = OGDataParent.Model.ClassDefs['ci'];
        var cis = drPro['modified-ci'];
        if ( cis != null && cis.Count > 0)
          //OGActualDataRow['modified-ci'] = OG.DataRow.GetDataById(clCi.Id, cis[0].Id);