Článek: AN0002409Aktualizováno:: 18.01.2020
V některých případech chceme při zakládání nového záznamu z master-detail relace přenášet hodnoty z odkazovaného záznamu do nově zakládaného záznamu.
V příkladu níže máme třídu Projekt, která obsahuje mj. sloupec Primární cíl (primary_goal) a sloupec Modifikované položky (modified-ci). Na obrazovce níže jsou tyto sloupce zvýrazněny spolu s tlačítkem pro založení nového záznamu v master-detail relaci.
Naším cílem je, aby po kliku na tlačítko Nový došlo k otevření nového záznamu s Úkolem, který se bude odkazovat na daný Projekt a navíc bude mít ve sloupcích Cíl a Modifikované položky předvyplněné hodnoty převzaté z projektu - tak jak to vidíme na obrázku níže.
Pro větší jasnost ještě uvádíme entity-relationship diagram zobrazující sloupce relevantní pro náš příklad.
Pro dosažení tohoto chování nastavíme v příslušné master-detail relaci třídy Projekt proměnnou, která bude přidána do URL a kterou pak identifikujeme v pravidle Před zobrazením nového záznamu v detailu třídy Úkol.
Vlastnost Url proměnné pro nový záznam nastavíme na "com=goal".
Pravidlo typu Skript události Před zobrazením nového záznamu v detailu:
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)
{
//nacist Primární cíl
var id = drPro['primary_goal'];
if ( id != null)
{
var clGoal = OGDataParent.Model.ClassDefs['goal'];
OGActualDataRow['goal'] = OG.DataRow.GetDataById(clGoal.Id, id);
}
//nacist Modifikované konfiguracni polozky
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);
OGActualDataRow['modified-ci'].AddRange(cis);
}
}
}