Článek: AN0002408Aktualizováno:: 15.01.2020
V níže uvedeném příkladu máme třídu Změny (change), která mj. obsahuje:
- sloupec Lokalita (locality) - typ sloupce: jednoduchý odkaz do jiné třídy (číselníku)
- sloupec Schvalovatel (responsible for assessment) - typ sloupec: jednoduchý odkaz na uživatele
Dále máme třídu Lokality (locality), která mj. obsahuje:
- sloupec Název (name) - typ sloupec: text, v příkladu níže nemá význam
- sloupec Schvalovatel (responsible for assessment) - typ sloupec: jednoduchý odkaz na uživatele
Datové schéma je tedy následující.
Při zakládání nového záznamu má uživatel možnost vyplnit Schvalovatele (a pak bude tento použit) nebo může ponechat dané pole prázdné (a pak aplikace sama doplní osobu dle třídy lokalit - u každé lokality je definován příslušný schalovatel).
Vše nám zajistí pravidlo typu Skript v události Před uložením nového záznamu ve třídě Změny (change).
/*
Cílem je při založení Změny stanovit pracovníka, pokud nebyl definován uživatelem, zodpovědného za posouzení proveditelnosti podle lokality.
Jde o uživatele OG, který je uveden ve sloupci responsible_for_assessment ve třídě locality.
*/
if (OG.IsNull(OGActualDataRow['responsible_for_assessment']))
{
var locality = OGActualDataRow.GetDR('locality');
var colCh_Lo = OG.Column.GetByCode( OGActualDataRow, 'locality');
var locId = OGActualDataRow.GetClassLink(colCh_Lo.Id);
if ( locId != null)
{
var clLoc = OG.ClassDef.GetByCode( OGActualDataRow, 'locality');
var dr = OG.DataRow.GetDataById( clLoc.Id, locId);
if ( dr != null)
{
var colResp = OG.Column.GetByCode( clLoc.Id , 'responsible_for_assessment');
var resp = dr.GetPerson( colResp.Id);
if ( resp != null)
{
var colCh_Resp = OG.Column.GetByCode( OGActualDataRow, 'responsible_for_assessment');
OGActualDataRow.SetPerson( colCh_Resp.Id, resp);
}
}
}
}