Ako nastaviť dynamický editor
Dynamický editor je možné nastaviť pomocou JSON stringu v potrebnom formáte. Očakávajú sa nasledovné parametre:
- @E1DynamicEditor – parameter, kde bude JSON s definíciou dynamického editora. Hodnota tam môže byť vpísaná priamo, získaná cez getter, alebo zo stĺpca podriadeného dátového zdroja
- @E1DynamicEditorData – do tohto parametra budú vrátené hodnoty z editora tiež vo forme JSON string-u
Ukážka JSON stringu s definíciou dynamického editora
[
{
"ParName": "@Email",
"ValName": "__currusername",
"Val": "pavol.farkas@erpio.sk",
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@Email",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@Login",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@Login",
"IDSrcObject": 35296,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@CisloZam",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@CisloZam",
"IDSrcObject": 35296,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@Databaza",
"ValName": "__srcmodify",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@Databaza",
"IDSrcObject": 35296,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@Zakazka",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 30,
"DataType": null,
"ParCaption": "Zákazka",
"IDSrcObject": null,
"SpecParams": {
"IDAction": 98593,
"MapParCol": [
{
"SrcName": "CisloZakazky",
"DstName": "@Zakazka",
"Hidden": false
},
{
"SrcName": "Databaza",
"DstName": "@ZakazkaDatabaza",
"Hidden": true
},
{
"SrcName": "PopisZakazky",
"DstName": "@ZakazkaNazev",
"Hidden": false
}
]
},
"ExtConfig": [
{
"SysName": "Required",
"Val": true
},
{
"SysName": "Cols",
"Val": 5
},
{
"SysName": "EvOnChanged",
"Val": ""
}
]
},
{
"ParName": "@ZakazkaDatabaza",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@ZakazkaDatabaza",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@ZakazkaNazev",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@ZakazkaNazev",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@Kategoria",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 30,
"DataType": null,
"ParCaption": "Činnosť",
"IDSrcObject": 35296,
"SpecParams": {
"IDAction": 98594,
"MapParCol": [
{
"SrcName": "Cislo",
"DstName": "@Kategoria",
"Hidden": false
},
{
"SrcName": "Poznamka",
"DstName": "@KategoriaPopis",
"Hidden": false
}
]
},
"ExtConfig": [
{
"SysName": "Required",
"Val": true
},
{
"SysName": "Cols",
"Val": 5
},
{
"SysName": "IsHidden",
"Val": false
},
{
"SysName": "MaxLength",
"Val": 0
},
{
"SysName": "MinLength",
"Val": 0
}
]
},
{
"ParName": "@KategoriaPopis",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 0,
"DataType": null,
"ParCaption": "@KategoriaPopis",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "IsHidden",
"Val": true
}
]
},
{
"ParName": "@NaviacPrace",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 2,
"DataType": null,
"ParCaption": "Naviac práce",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "Cols",
"Val": 2
}
]
},
{
"ParName": "@Trvanie",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 6,
"DataType": null,
"ParCaption": "Trvanie (h)",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "Cols",
"Val": 2
},
{
"SysName": "EvOnChanged",
"Val": ""
}
]
},
{
"ParName": "@DatumOd",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 3,
"DataType": null,
"ParCaption": "Od",
"IDSrcObject": 35296,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "Cols",
"Val": 5
}
]
},
{
"ParName": "@DatumDo",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 3,
"DataType": null,
"ParCaption": "Do",
"IDSrcObject": 35296,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "Cols",
"Val": 5
}
]
},
{
"ParName": "@Poznamka",
"ValName": "__dummy",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": true,
"EditType": 1,
"DataType": null,
"ParCaption": "Popis práce",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": [
{
"SysName": "Required",
"Val": true
},
{
"SysName": "ShowRows",
"Val": 3
}
]
},
{
"ParName": "@StartTime",
"ValName": "DatumProvedeniOd",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 100,
"DataType": 9,
"ParCaption": "Od",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": []
},
{
"ParName": "@EndTime",
"ValName": "DatumProvedeniDo",
"Val": null,
"Cond": null,
"DstCol": null,
"ParEdit": false,
"EditType": 100,
"DataType": 9,
"ParCaption": "Do",
"IDSrcObject": null,
"SpecParams": null,
"ExtConfig": []
}
]
Úvodné hodnoty už musia byť súčasťou JSON stringu, nerobí sa žiadne ďalšie dopĺňanie hodnôt.
EditType
cAuto = 0,
cTextBox = 1,
cCheckBox = 2,
cDateTime = 3,
cDate = 4,
cInteger = 5,
cDecimal = 6,
cSET = 30,
cCamera = 32,
cGallery = 33,
cFile = 34,
cGPS = 35,
cBarCode = 36,
cSignature = 37,
cInvis = 99,
cHideAll = 100
DataType
String = 0,
Boolean = 1,
Byte = 2,
Int16 = 3,
Int32 = 4,
Int64 = 5,
Decimal = 6,
Float = 7,
Double = 8,
DateTime = 9,
ByteArray = 10,
Int = 11
Príklad vrátenej hodnoty do parametru @E1DynamicEditorData
[{"Key":"@Email","Value":"pavol.farkas@erpio.sk"},{"Key":"@Login","Value":""},{"Key":"@CisloZam","Value":""},{"Key":"@Databaza","Value":""},{"Key":"@Zakazka","Value":"ERP ABC"},{"Key":"@ZakazkaDatabaza","Value":"Helios003"},{"Key":"@ZakazkaNazev","Value":"ERP pre ABC Klímy (ERP ABC) "},{"Key":"@Kategoria","Value":"INE"},{"Key":"@KategoriaPopis","Value":"Iné"},{"Key":"@NaviacPrace","Value":"False"},{"Key":"@Trvanie","Value":"2"},{"Key":"@DatumOd","Value":"1. 2. 2025 15:00:00"},{"Key":"@DatumDo","Value":""},{"Key":"@Poznamka","Value":"abdafdfadffefefae"},{"Key":"@StartTime","Value":""},{"Key":"@EndTime","Value":""}]
Príklad parsovania hodnoty:
DECLARE @json NVARCHAR(MAX) = N'[{"Key":"@Email","Value":"pavol.farkas@erpio.sk"},{"Key":"@Login","Value":""},{"Key":"@CisloZam","Value":""},{"Key":"@Databaza","Value":""},{"Key":"@Zakazka","Value":"ERP ABC"},{"Key":"@ZakazkaDatabaza","Value":"Helios003"},{"Key":"@ZakazkaNazev","Value":"ERP pre ABC Klímy (ERP ABC) "},{"Key":"@Kategoria","Value":"INE"},{"Key":"@KategoriaPopis","Value":"Iné"},{"Key":"@NaviacPrace","Value":"False"},{"Key":"@Trvanie","Value":"2"},{"Key":"@DatumOd","Value":"1. 2. 2025 15:00:00"},{"Key":"@DatumDo","Value":""},{"Key":"@Poznamka","Value":"abdafdfadffefefae"},{"Key":"@StartTime","Value":""},{"Key":"@EndTime","Value":""}]';
SELECT
KeyName,
KeyValue
FROM OPENJSON(@json)
WITH (
KeyName NVARCHAR(100) '$.Key',
KeyValue NVARCHAR(MAX) '$.Value'
);
-- More robust approach with explicit casting and error handling:
BEGIN TRY
SELECT
KeyName,
KeyValue,
CASE
WHEN KeyName = '@Trvanie' THEN CAST(KeyValue AS INT) -- Example: Casting to INT
WHEN KeyName = '@NaviacPrace' THEN CAST(KeyValue AS BIT) -- Example: Casting to BIT
WHEN KeyName LIKE '@Datum%' THEN TRY_CONVERT(DATETIME2, KeyValue, 104) -- Date format 104 = dd.mm.yyyy
ELSE KeyValue -- Keep as string for other values
END AS TypedValue
FROM OPENJSON(@json)
WITH (
KeyName NVARCHAR(100) '$.Key',
KeyValue NVARCHAR(MAX) '$.Value'
);
END TRY
BEGIN CATCH
-- Handle JSON parsing errors (e.g., log, return an error result)
SELECT ERROR_MESSAGE() AS ErrorMessage;
-- Or raise an error:
--THROW 50000, 'Error parsing JSON.', 1;
END CATCH;