Skip to main content
Version: Next

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 image.png

Exemple2 : convertir le contenu du champ titre en MAJUSCULE

string titleMajuscule = doc.GetStringValue("Title").ToUpperInvariant() ;
doc.SetValues("Title", titleMajuscule);