Recueil de formules pour l'écriture de code cSharp dans les champs de formulaires
Utilisation sur les champs Calculé (cSharp)
Récupérer le contenu d'un autre champ :
Exemple : récupérer la référence
return doc.GetStringValue("Reference");
ou
returnValue = doc.GetStringValue("Reference");
Variante avec concaténation de texte et de dates :
string DateFiche = document.GetStringValue("DateFiche");
System.DateTime dt;
if (System.DateTime.TryParse(DateFiche, out dt))
returnValue = document.SetValues("title", document.GetStringValue("Nom") + " " + document.GetStringValue("Prenom") + " (" + string.Format("{0:dd/MM/yyyy}", dt) + ")");
else
returnValue = document.SetValues("title", document.GetStringValue("Nom") + " " + document.GetStringValue("Prenom"));
Récupérer l'année d'un champ date :
System.DateTime d;
string tmp = doc.GetStringValue("MonChampDate");
if (System.DateTime.TryParse(tmp, out d))
{
returnValue = d.Year.ToString();
}
else
{
returnValue = "";
}
Récupération du service du user inscrit dans un champ :
var utilisateur = doc.GetStringValue("Approbateur");
var apsUser = new Avanteam.Application.Security.APSUser( utilisateur );
var service = apsUser.Services[0];
returnValue= service;
ou
string em = doc.GetStringValue("Approbateur");
System.Collections.Generic.List<string>ss = (System.Collections.Generic.List<string>)ApplicationDataSource.DirectoryDataSource.GetPersonServices(em);
returnValue = string.Join(";",ss.ToArray());
Calculer l'abréviation du contenu d'un autre champ :
string s = doc.GetStringValue("SMSProcessus");
if (string.IsNullOrEmpty(s))
returnValue = "";
else
returnValue = ValueListGetAbbreviate("Processus", s);
Récupérer une liste de résultats issus d'une requête SQL/Oracle :
Avanteam.Documents.DataSource.DocumentManagerWrapper sqlDS = new Avanteam.Documents.DataSource.DocumentManagerWrapper();
return string.Join(";",
sqlDS.SQL_ExecuteScalarCollection<string>(@"select
coalesce(DR.cn_name,FRM_FLD.value) from
FRM_IS_FLD_INNOVATEUR FRM_FLD left outer join DirectoryResources DR
on DR.dn_name=FRM_FLD.value where id_document = '"+
doc.IdDocument +"' order by DR.cn_name asc "));
Récupérer l'étape courante du workflow (pour une base de donnée SQL) :
Avanteam.Documents.DataSource.DocumentManagerWrapper sqlDS = new Avanteam.Documents.DataSource.DocumentManagerWrapper();
string reqEtape = "select substring(current_activity, LEN(process_name) + 2, LEN(current_activity) ) from documentprocess where id_document = '{0}'";
object obj = sqlDS.SQL_ExecuteScalar(string.Format(reqEtape, doc.IdDocument));
returnValue = "";
if (obj != null)
{
if (obj.ToString() == "")
returnValue = "Fiche cloturée";
else
returnValue = obj.ToString();
}
Exécuter une opération de calcul (une addition dans cet exemple) :
double mnt1 = 0F;
double.TryParse( doc.GetStringValue( "monchampnumerique1" ), out mnt1 );
double mnt2 = 0F;
double.TryParse( doc.GetStringValue( "monchampnumerique2" ), out mnt2 );
double mnt3 = 0F;
double.TryParse( doc.GetStringValue( "monchampnumerique3" ), out mnt3 );
returnValue = string.Format( "{0:0.00}", mnt1 + mnt2 + mnt3);
Remplir un autre champ à partir d'un champ calculé :
Exemple2 : calculer le contenu du champ titre
doc.SetValues("title","Revue "+doc.GetStringValue("SMSProcessus"));
Néanmoins pour ce type d'utilisation, on préférera plutôt utiliser le contrôle disponible dans Process Studio : CopyFieldValue
Exemple2 : convertir le contenu du champ titre en MAJUSCULE
string titleMajuscule = doc.GetStringValue("Title").ToUpperInvariant() ;
doc.SetValues("Title", titleMajuscule);