https://frp.sage.fr/wiki1000/api.php?action=feedcontributions&user=Tdymon&feedformat=atomWiki1000 - Contributions de l'utilisateur [fr]2024-03-29T07:13:11ZContributions de l'utilisateurMediaWiki 1.18.6https://frp.sage.fr/wiki1000/index.php/Objets_m%C3%A9tiers_(code)Objets métiers (code)2019-09-02T12:31:19Z<p>Tdymon : /* Identifiant d’objet */</p>
<hr />
<div>===Introduction===<br />
Un objet est une entité métier.<br />
<br />
Une instance est la représentation technique d’un objet dans un contexte d’exécution.<br />
<br />
A un instant « t » il peut exister plusieurs instances d’un même objet sur une ou plusieurs machines.<br />
<br />
===Identifiant d’objet===<br />
Le framework de la Ligne 1000 utilise un système d’identification des objets métiers basé sur un identifiant d’objet appelé « OID » (pour « object identifier »). Grâce à cette identification il est possible d’implémenter des mécanismes génériques de manipulation et de navigations entre les objets.<br />
L’identifiant d’objet est constitué de plusieurs sections :<br />
*Identifiant de serveur.<br />
*Identifiant de base de données.<br />
*Identifiant de classe.<br />
*Incrément global.<br />
*Incrément.<br />
<br />
Ce codage garanti l’unicité des identifiants d’objet.<br />
<br />
Il n’est pas nécessaire de retenir les détails de cette codification, toutefois sachez que :<br />
*L’identifiant de serveur identifie le serveur ; il s’agit d’une partie de l’adresse MAC de la machine ayant créée la base de données.<br />
*L’identifiant de base de données identifie la base de données à l’intérieur d’un serveur.<br />
*L’identifiant de classe identifie la classe à laquelle appartient l’objet.<br />
*L’incrément global (32bits) est incrémenté lorsque l’application démarre ou lorsque l’incrément dépasse son étendu.<br />
*L’incrément (16bits) est incrémenté à chaque création d’objet.<br />
<br />
Les identifiants d’objet sont manipulés dans le script comme des chaînes de caractères.<br />
<br />
{{warning|Il est dangereux de présumer du format de stockage de l'identifiant d'objet dans la base de données; suivant le pilote utilisé les identifiants peuvent être encodés différemment.}}<br />
<br />
Un objet métier possède deux attributs frameworks dédiés à la gestion de l'identifiant:<br />
<br />
{|class="wikitable"<br />
|-<br />
!Attribut<br />
!Signification<br />
|-<br />
|OID<br />
|Attribut persistant contenant la valeur de l’identifiant. Lorsque l’objet est en cours de création, son identifiant OID est vide (les identifiants étant manipulés comme des chaînes de caractères la valeur vide est ‘’) ; il sera déterminé lors de la mise à jour de l’objet.<br />
|-<br />
|InstanceOID<br />
|Attribut non persistant qui retourne la valeur de l’identifiant si l’attribut n’est pas en cours de création, ou la valeur de l’OID qui sera utilisée si l’objet est en cours de création.<br />
|}<br />
<br />
Les valeurs de ces attributs en fonction de l'état de l'instance :<br />
<br />
{| class="wikitable"<br />
|-<br />
!Etat de l'objet<br />
!OID<br />
!InstanceOID<br />
|-<br />
|Objet en création<br />
|vide<br />
|OID du futur l'objet<br />
|-<br />
|Objet existant<br />
|OID de l'objet<br />
|OID de l'objet<br />
|}<br />
<br />
Exemple<br />
<source lang='delphi'><br />
begin<br />
if OID<>'' then<br />
begin<br />
// Cette instance est en création<br />
end;<br />
end;<br />
</source><br />
<br />
===Création d’une instance d’un objet===<br />
Pour créer une instance d’un objet existant dont vous connaissez l’identifiant, utilisez la fonction CreateInstance et affecter l’identifiant.<br />
<source lang='delphi'><br />
var obj:MaClasse;<br />
begin<br />
obj := ClassManager.CreateInstance('MaClasse');<br />
obj.oid := aOID;<br />
...<br />
end;<br />
</source><br />
<br />
===Création d’un nouvel objet===<br />
Pour créer un nouvel objet, créez une nouvelle instance et modifiez-la.<br />
<br />
Exemple<br />
<source lang='delphi'><br />
var obj:MaClasse;<br />
begin<br />
obj := ClassManager.CreateInstance('MaClasse');<br />
ClassManager.BeginTran;<br />
try<br />
// L'objet est inséré dans la transaction<br />
obj.Code := aCode ;<br />
obj.Caption := aCaption ;<br />
ClassManager.Commit;<br />
except<br />
ClassManager.RollBack ;<br />
end;<br />
end;<br />
</source><br />
<br />
===Suppression d’un objet===<br />
Pour supprimer un objet, créez une instance de cet objet et positionnez l’attribut « deleted » à TRUE.<br />
<br />
Exemple<br />
<source lang='delphi'><br />
var obj:MaClasse;<br />
begin<br />
obj := ClassManager.CreateInstance('MaClasse');<br />
ClassManager.BeginTran;<br />
try<br />
Obj.OID := aOID;<br />
Obj.Deleted := TRUE;<br />
ClassManager.Commit;<br />
except<br />
ClassManager.RollBack ;<br />
end;<br />
end;<br />
</source><br />
<br />
{{Footer|Code métier}}<br />
[[category:Code métier]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Montant_en_devise_(type)Montant en devise (type)2019-08-14T16:57:36Z<p>Tdymon : /* Montant en devise */</p>
<hr />
<div>===Montant en devise===<br />
Le type de données « Montant en devise » (TMoney) est utilisé pour représenter des montants. Il associe une valeur monétaire et une [[TdbfCurrency (class)|devise]]. <br />
<br />
La valeur du montant est arrondie automatiquement au nombre de décimales de la devise.<br />
<br />
===Attributs===<br />
Les attributs d’un objet montant en devise sont :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
!Type<br />
!Colonne SQL<br />
|-<br />
|Valeur<br />
|La valeur du montant<br />
|Currency<br />
|<NomAttribut><br />
|-<br />
|CodeDevise<br />
|Le code de la devise du montant<br />
|Chaîne<br />
|<NomAttribut>_CodeDevise<br />
|-<br />
|Devise<br />
|Référence sur la devise du montant<br />
|Référence<br />
|<non stockée><br />
|}<br />
<br />
===Propriétés===<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[Value (money type)|Value]]<br />
|La valeur du montant.<br />
|-<br />
|[[CodeDevise (money type)|CodeDevise]]<br />
|Le code de la devise du montant.<br />
|-<br />
|[[oidDevise (money type)|oidDevise]]<br />
|L'identifiant de la devise du montant.<br />
|-<br />
|[[Devise (money type)|Devise]]<br />
|Référence sur la devise du montant.<br />
|-<br />
|[[ValueAsLiteral (money type)|ValueAsLiteral]]<br />
|La valeur littérale du montant (ie en lettre).<br />
|-<br />
|[[IsAccountKeeping (money type)|IsAccountKeeping]]<br />
|Retourne true si la devise du montant est la devise de tenu de compte. {{Version650}}<br />
|}<br />
<br />
===Méthodes===<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[SetToAccountKeeping (money type)|SetToAccountKeeping]]<br />
|Change la devise à la devise de tenu de compte.{{Version650}}<br />
|-<br />
|[[ReverseSign (money type)|ReverseSign]]<br />
|Inverse le sens du montant.{{Version710}}<br />
|}<br />
<br />
===Paramétrage===<br />
Pour le montant en devise, la devise par défaut est la devise stockée dans le paramètre « DeviseTC » de la [[TdbfParam (class)|classe des paramètres]]. En comptabilité cette devise est la devise de tenue de compte de la société.<br />
<br />
La devise peut être ensuite renseignée par une règle valeur initiale ou par une règle valeur par défaut.<br />
<br />
Voir aussi :<br />
<br />
*[[Montant de transaction (type)|Montant de transaction]]<br />
<br />
[[category:Types]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Montant_de_transaction_(type)Montant de transaction (type)2019-08-14T16:56:59Z<p>Tdymon : /* Montant de transaction */</p>
<hr />
<div>===Montant de transaction===<br />
<br />
Hérite de [[Montant en devise (type)|Montant en devise]]<br />
<br />
Le type de données « Montant de transaction » (TMoneyDT) est utilisé pour le stockage des montants dans le cadre d’une transaction. Un montant de transaction enregistre une valeur monétaire à une date ainsi que ses contreparties dans les devises de tenu de compte et de reporting.<br />
<br />
===Attributs===<br />
Les attributs d'un montant de transaction sont (outre ses attributs hérités) :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
!Type<br />
!Colonne SQL<br />
|-<br />
|Date<br />
|La date de la transaction<br />
|TDatetime<br />
|<NomAttribut>_Date<br />
|-<br />
|TCValue<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|Currency<br />
|<NomAttribut>_TCValue<br />
|-<br />
|TCConv<br />
|Le cours de conversion en devise de tenu de compte.<br />
|Chaîne<br />
|<NomAttribut>_TCConv<br />
|-<br />
|RPValue<br />
|La valeur du montant dans la devise de reporting.<br />
|Currency<br />
|<NomAttribut>_RPValue<br />
|-<br />
|RPConv<br />
|Le cours de conversion en devise de tenu de reporting.<br />
|Chaîne<br />
|<NomAttribut>_RPConv<br />
|}<br />
<br />
{{info|Les cours sont conservés sous forme d'une liste de quotation et stockés sous forme de chaîne.}}<br />
<br />
===Propriétés===<br />
Les propriétés d'un montant de transaction :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[Date (moneydt type)|Date]]<br />
|La date de la transaction<br />
|-<br />
|[[TCValue (moneydt type)|TCValue]]<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|-<br />
|[[TCRate (moneydt type)|TCRate]]<br />
|Retourne le taux de conversion en devise de tenu de compte (non modifiable).<br />
|-<br />
|[[RPValue (moneydt type)|RPValue]]<br />
|La valeur du montant dans la devise de reporting.<br />
|-<br />
|[[RPRate (moneydt type)|RPRate]]<br />
|Retourne le taux de conversion en devise de tenu de reporting (non modifiable).<br />
|-<br />
|[[TCValueAsLiteral (moneydt type)|TCValueAsLiteral]]<br />
|La valeur de tenu compte littérale (ie en lettre)<br />
|-<br />
|[[RPValueAsLiteral (moneydt type)|RPValueAsLiteral]]<br />
|La valeur de reporting littérale (ie en lettre)<br />
|}<br />
<br />
===Méthodes===<br />
{|class="wikitable"<br />
|-<br />
|[[Convert (moneydt type)|Convert]]<br />
|Convertit le montant dans une devise.<br />
|-<br />
|[[ValueInDevise (moneydt type)|ValueInDevise]]<br />
|Retourne la valeur du montant dans une devise.<br />
|-<br />
|[[SetValues (moneydt type)|SetValues]]<br />
|Affecte les propriétés du montant.<br />
|-<br />
|[[AssignQuotationList (moneydt type)|AssignQuotationList]]<br />
|Affecte la liste de quotation du montant.<br />
|-<br />
|[[InitializeQuotationList (moneydt type)|InitializeQuotationList]]<br />
|Initialise la liste de quotation du montant.<br />
|}<br />
<br />
===Paramétrage===<br />
Les devises de tenu de compte et de reporting par défaut sont les devises dont les codes ISO sont stockés dans les paramètres « DeviseTC » et « DeviseRP » de la [[TdbfParam (class)|classe des paramètres]]. <br />
<br />
===Observations===<br />
*Si on modifie la valeur d’un montant en transaction, alors les valeurs de contrepartie seront automatiquement modifiées.<br />
*Si on modifie les valeurs de contrepartie, les cours stockés dans l'objet seront recalculés, sans affecter le cours de la [[TdbfCurrency (class)|classe des devises]].<br />
*Si on modifie les cours de conversion, la [[TdbfCurrency (class)|classe des devises]] n’est pas affectée.<br />
*Les cours de conversion peuvent être actuellement modifiés individuellement pour un montant donné grâce à la boîte de dialogue UNIQUEMENT.<br />
<br />
[[category:Types]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Montant_de_transaction_(type)Montant de transaction (type)2019-08-01T10:27:14Z<p>Tdymon : /* Observations */</p>
<hr />
<div>===Montant de transaction===<br />
<br />
Hérite de [[Montant en devise (type)|Montant en devise]]<br />
<br />
Le type de données « Montant de transaction » est utilisé pour le stockage des montants dans le cadre d’une transaction. Un montant de transaction enregistre une valeur monétaire à une date ainsi que ses contreparties dans les devises de tenu de compte et de reporting.<br />
<br />
===Attributs===<br />
Les attributs d'un montant de transaction sont (outre ses attributs hérités) :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
!Type<br />
!Colonne SQL<br />
|-<br />
|Date<br />
|La date de la transaction<br />
|TDatetime<br />
|<NomAttribut>_Date<br />
|-<br />
|TCValue<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|Currency<br />
|<NomAttribut>_TCValue<br />
|-<br />
|TCConv<br />
|Le cours de conversion en devise de tenu de compte.<br />
|Chaîne<br />
|<NomAttribut>_TCConv<br />
|-<br />
|RPValue<br />
|La valeur du montant dans la devise de reporting.<br />
|Currency<br />
|<NomAttribut>_RPValue<br />
|-<br />
|RPConv<br />
|Le cours de conversion en devise de tenu de reporting.<br />
|Chaîne<br />
|<NomAttribut>_RPConv<br />
|}<br />
<br />
{{info|Les cours sont conservés sous forme d'une liste de quotation et stockés sous forme de chaîne.}}<br />
<br />
===Propriétés===<br />
Les propriétés d'un montant de transaction :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[Date (moneydt type)|Date]]<br />
|La date de la transaction<br />
|-<br />
|[[TCValue (moneydt type)|TCValue]]<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|-<br />
|[[TCRate (moneydt type)|TCRate]]<br />
|Retourne le taux de conversion en devise de tenu de compte (non modifiable).<br />
|-<br />
|[[RPValue (moneydt type)|RPValue]]<br />
|La valeur du montant dans la devise de reporting.<br />
|-<br />
|[[RPRate (moneydt type)|RPRate]]<br />
|Retourne le taux de conversion en devise de tenu de reporting (non modifiable).<br />
|-<br />
|[[TCValueAsLiteral (moneydt type)|TCValueAsLiteral]]<br />
|La valeur de tenu compte littérale (ie en lettre)<br />
|-<br />
|[[RPValueAsLiteral (moneydt type)|RPValueAsLiteral]]<br />
|La valeur de reporting littérale (ie en lettre)<br />
|}<br />
<br />
===Méthodes===<br />
{|class="wikitable"<br />
|-<br />
|[[Convert (moneydt type)|Convert]]<br />
|Convertit le montant dans une devise.<br />
|-<br />
|[[ValueInDevise (moneydt type)|ValueInDevise]]<br />
|Retourne la valeur du montant dans une devise.<br />
|-<br />
|[[SetValues (moneydt type)|SetValues]]<br />
|Affecte les propriétés du montant.<br />
|-<br />
|[[AssignQuotationList (moneydt type)|AssignQuotationList]]<br />
|Affecte la liste de quotation du montant.<br />
|-<br />
|[[InitializeQuotationList (moneydt type)|InitializeQuotationList]]<br />
|Initialise la liste de quotation du montant.<br />
|}<br />
<br />
===Paramétrage===<br />
Les devises de tenu de compte et de reporting par défaut sont les devises dont les codes ISO sont stockés dans les paramètres « DeviseTC » et « DeviseRP » de la [[TdbfParam (class)|classe des paramètres]]. <br />
<br />
===Observations===<br />
*Si on modifie la valeur d’un montant en transaction, alors les valeurs de contrepartie seront automatiquement modifiées.<br />
*Si on modifie les valeurs de contrepartie, les cours stockés dans l'objet seront recalculés, sans affecter le cours de la [[TdbfCurrency (class)|classe des devises]].<br />
*Si on modifie les cours de conversion, la [[TdbfCurrency (class)|classe des devises]] n’est pas affectée.<br />
*Les cours de conversion peuvent être actuellement modifiés individuellement pour un montant donné grâce à la boîte de dialogue UNIQUEMENT.<br />
<br />
[[category:Types]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Montant_de_transaction_(type)Montant de transaction (type)2019-08-01T10:26:43Z<p>Tdymon : /* Observations */</p>
<hr />
<div>===Montant de transaction===<br />
<br />
Hérite de [[Montant en devise (type)|Montant en devise]]<br />
<br />
Le type de données « Montant de transaction » est utilisé pour le stockage des montants dans le cadre d’une transaction. Un montant de transaction enregistre une valeur monétaire à une date ainsi que ses contreparties dans les devises de tenu de compte et de reporting.<br />
<br />
===Attributs===<br />
Les attributs d'un montant de transaction sont (outre ses attributs hérités) :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
!Type<br />
!Colonne SQL<br />
|-<br />
|Date<br />
|La date de la transaction<br />
|TDatetime<br />
|<NomAttribut>_Date<br />
|-<br />
|TCValue<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|Currency<br />
|<NomAttribut>_TCValue<br />
|-<br />
|TCConv<br />
|Le cours de conversion en devise de tenu de compte.<br />
|Chaîne<br />
|<NomAttribut>_TCConv<br />
|-<br />
|RPValue<br />
|La valeur du montant dans la devise de reporting.<br />
|Currency<br />
|<NomAttribut>_RPValue<br />
|-<br />
|RPConv<br />
|Le cours de conversion en devise de tenu de reporting.<br />
|Chaîne<br />
|<NomAttribut>_RPConv<br />
|}<br />
<br />
{{info|Les cours sont conservés sous forme d'une liste de quotation et stockés sous forme de chaîne.}}<br />
<br />
===Propriétés===<br />
Les propriétés d'un montant de transaction :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[Date (moneydt type)|Date]]<br />
|La date de la transaction<br />
|-<br />
|[[TCValue (moneydt type)|TCValue]]<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|-<br />
|[[TCRate (moneydt type)|TCRate]]<br />
|Retourne le taux de conversion en devise de tenu de compte (non modifiable).<br />
|-<br />
|[[RPValue (moneydt type)|RPValue]]<br />
|La valeur du montant dans la devise de reporting.<br />
|-<br />
|[[RPRate (moneydt type)|RPRate]]<br />
|Retourne le taux de conversion en devise de tenu de reporting (non modifiable).<br />
|-<br />
|[[TCValueAsLiteral (moneydt type)|TCValueAsLiteral]]<br />
|La valeur de tenu compte littérale (ie en lettre)<br />
|-<br />
|[[RPValueAsLiteral (moneydt type)|RPValueAsLiteral]]<br />
|La valeur de reporting littérale (ie en lettre)<br />
|}<br />
<br />
===Méthodes===<br />
{|class="wikitable"<br />
|-<br />
|[[Convert (moneydt type)|Convert]]<br />
|Convertit le montant dans une devise.<br />
|-<br />
|[[ValueInDevise (moneydt type)|ValueInDevise]]<br />
|Retourne la valeur du montant dans une devise.<br />
|-<br />
|[[SetValues (moneydt type)|SetValues]]<br />
|Affecte les propriétés du montant.<br />
|-<br />
|[[AssignQuotationList (moneydt type)|AssignQuotationList]]<br />
|Affecte la liste de quotation du montant.<br />
|-<br />
|[[InitializeQuotationList (moneydt type)|InitializeQuotationList]]<br />
|Initialise la liste de quotation du montant.<br />
|}<br />
<br />
===Paramétrage===<br />
Les devises de tenu de compte et de reporting par défaut sont les devises dont les codes ISO sont stockés dans les paramètres « DeviseTC » et « DeviseRP » de la [[TdbfParam (class)|classe des paramètres]]. <br />
<br />
===Observations===<br />
*Si on modifie la valeur d’un montant en transaction, alors les valeurs de contrepartie seront automatiquement modifiées.<br />
*Si on modifie les valeurs de contrepartie, les cours stockés dans l'objet seront recalculés, sans affecter le cours de la [[TdbfCurrency (class)|classe des devises]].<br />
*Si on modifie les cours de conversion, la [[TdbfCurrency (class)|classe des devises]] n’est pas affectée.<br />
*Les cours de conversion peuvent être actuellement modifiés individuellement pour un montant de donnée grâce à la boîte de dialogue UNIQUEMENT.<br />
<br />
[[category:Types]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Montant_de_transaction_(type)Montant de transaction (type)2019-08-01T10:25:16Z<p>Tdymon : /* Propriétés */</p>
<hr />
<div>===Montant de transaction===<br />
<br />
Hérite de [[Montant en devise (type)|Montant en devise]]<br />
<br />
Le type de données « Montant de transaction » est utilisé pour le stockage des montants dans le cadre d’une transaction. Un montant de transaction enregistre une valeur monétaire à une date ainsi que ses contreparties dans les devises de tenu de compte et de reporting.<br />
<br />
===Attributs===<br />
Les attributs d'un montant de transaction sont (outre ses attributs hérités) :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
!Type<br />
!Colonne SQL<br />
|-<br />
|Date<br />
|La date de la transaction<br />
|TDatetime<br />
|<NomAttribut>_Date<br />
|-<br />
|TCValue<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|Currency<br />
|<NomAttribut>_TCValue<br />
|-<br />
|TCConv<br />
|Le cours de conversion en devise de tenu de compte.<br />
|Chaîne<br />
|<NomAttribut>_TCConv<br />
|-<br />
|RPValue<br />
|La valeur du montant dans la devise de reporting.<br />
|Currency<br />
|<NomAttribut>_RPValue<br />
|-<br />
|RPConv<br />
|Le cours de conversion en devise de tenu de reporting.<br />
|Chaîne<br />
|<NomAttribut>_RPConv<br />
|}<br />
<br />
{{info|Les cours sont conservés sous forme d'une liste de quotation et stockés sous forme de chaîne.}}<br />
<br />
===Propriétés===<br />
Les propriétés d'un montant de transaction :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Description<br />
|-<br />
|[[Date (moneydt type)|Date]]<br />
|La date de la transaction<br />
|-<br />
|[[TCValue (moneydt type)|TCValue]]<br />
|La valeur du montant dans la devise de tenu de compte.<br />
|-<br />
|[[TCRate (moneydt type)|TCRate]]<br />
|Retourne le taux de conversion en devise de tenu de compte (non modifiable).<br />
|-<br />
|[[RPValue (moneydt type)|RPValue]]<br />
|La valeur du montant dans la devise de reporting.<br />
|-<br />
|[[RPRate (moneydt type)|RPRate]]<br />
|Retourne le taux de conversion en devise de tenu de reporting (non modifiable).<br />
|-<br />
|[[TCValueAsLiteral (moneydt type)|TCValueAsLiteral]]<br />
|La valeur de tenu compte littérale (ie en lettre)<br />
|-<br />
|[[RPValueAsLiteral (moneydt type)|RPValueAsLiteral]]<br />
|La valeur de reporting littérale (ie en lettre)<br />
|}<br />
<br />
===Méthodes===<br />
{|class="wikitable"<br />
|-<br />
|[[Convert (moneydt type)|Convert]]<br />
|Convertit le montant dans une devise.<br />
|-<br />
|[[ValueInDevise (moneydt type)|ValueInDevise]]<br />
|Retourne la valeur du montant dans une devise.<br />
|-<br />
|[[SetValues (moneydt type)|SetValues]]<br />
|Affecte les propriétés du montant.<br />
|-<br />
|[[AssignQuotationList (moneydt type)|AssignQuotationList]]<br />
|Affecte la liste de quotation du montant.<br />
|-<br />
|[[InitializeQuotationList (moneydt type)|InitializeQuotationList]]<br />
|Initialise la liste de quotation du montant.<br />
|}<br />
<br />
===Paramétrage===<br />
Les devises de tenu de compte et de reporting par défaut sont les devises dont les codes ISO sont stockés dans les paramètres « DeviseTC » et « DeviseRP » de la [[TdbfParam (class)|classe des paramètres]]. <br />
<br />
===Observations===<br />
*Si on modifie la valeur d’un montant en transaction, alors les valeurs de contrepartie seront automatiquement modifiées.<br />
*Si on modifie les valeurs de contrepartie, les cours stockés dans l'objet seront recalculés, sans affecter le cours de la [[TdbfCurrency (class)|classe des devises]].<br />
*Si on modifie les cours de conversion, la [[TdbfCurrency (class)|classe des devises]] n’est pas affectée.<br />
<br />
<br />
[[category:Types]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Attributs_(model)Attributs (model)2019-07-31T11:15:22Z<p>Tdymon : /* Création et modification des attributs */</p>
<hr />
<div>===Attributs===<br />
Les attributs peuvent être classés en trois catégroies :<br />
#Les attributs framework.<br />
#Les attributs de type simple<br />
#Les attributs de type métier.<br />
<br />
====Attributs framework====<br />
Ce sont des attributs créés et gérés par le framework en fonction du stéréotype de la classe. <br />
<br />
Toutes les classes ont un ensemble communs d'attributs framework :<br />
<br />
{| class="wikitable"<br />
|-<br />
!Attribut<br />
!Type<br />
!Accès<br />
!Usage<br />
|-<br />
|oid<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|InstanceOID<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|Caption<br />
|Chaîne<br />
|Lecture/Ecriture<br />
|Libellé identifiant l'objet<br />
|-<br />
|ObjectClassName<br />
|Chaîne<br />
|Lecture<br />
|Nom de la classe de l'objet<br />
|-<br />
|ObjectClassLabel<br />
|Chaîne<br />
|Lecture<br />
|Libellé de la classe de l'objet<br />
|}<br />
<br />
D'autre attributs framework peuvent exister en fonction du stéréotype de la classe.<br />
<br />
====Attributs de type simple====<br />
Les types simples sont des types de données primaires définis dans le framework.<br />
<br />
Les attributs de type simple peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type<br />
!Usage<br />
!Taille<br />
!Codage<br />
|-<br />
|String<br />
|Chaîne<br />
|Variable<br />
|ANSI<br />
|-<br />
|Integer<br />
|Entier<br />
|4<br />
|32 bits signés<br />
|-<br />
|LongInt<br />
|Entier long<br />
|8<br />
|64 bits signés<br />
|-<br />
|TDatetime<br />
|Date et heure<br />
|8<br />
|Double<br />
|-<br />
|Date<br />
|Date<br />
|8<br />
|Double<br />
|-<br />
|Time<br />
|Heure<br />
|8<br />
|Double<br />
|-<br />
|Boolean<br />
|Logique<br />
|4<br />
|0 ou 1<br />
|-<br />
|Double<br />
|Flottant double précision<br />
|8<br />
|<br />
|-<br />
|Currency<br />
|Valeur monaitaire<br />
|8<br />
|Entier 64 bits signé<br />
Virgule fixe 4 positions<br />
|}<br />
<br />
====Attributs de type métier====<br />
Les types métiers sont des [[:category:Types|types de données]] souvent composites présentant un ensemble de comportements permettant de gérer une problématique métier.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Description<br />
!Type de stockage<br />
|-<br />
|[[Montant en devise (type)|Montant en devise]]<br />
|Monétaire<br />
|-<br />
|[[Montant de transaction (type)|Montant de transaction]]<br />
|Monétaire<br />
|-<br />
|[[Numérique (type)|Numérique]]<br />
|Numérique<br />
|-<br />
|[[Quantité (type)|Quantité]]<br />
|Numérique<br />
|-<br />
|[[Quantité avec référence (type)|Quantité avec référence]]<br />
|Numérique<br />
|-<br />
|[[Compteur (type)|Compteur alphanumérique]]<br />
|Chaîne<br />
|-<br />
|[[Référénce d'objet (type)|Référence d'objet]]<br />
|Chaîne<br />
|-<br />
|[[Identité (type)|Identité]]<br />
|Compteur numérique<br />
|-<br />
|[[Identité SQL (type)|Identité SQL]]<br />
|Compteur SQL<br />
|-<br />
|[[Enuméré (type)|Enuméré]]<br />
|Entier<br />
|-<br />
|[[Mémo (type)|Mémo]]<br />
|Texte<br />
|-<br />
|[[Image (type)|Image]]<br />
|Binaire<br />
|-<br />
|[[Binaire (type)|Binaire]]<br />
|Binaire<br />
|-<br />
|[[Marque (type)|Marque de traitement]]<br />
|Date<br />
|-<br />
|[[Contrôleur (type)|Contrôleur]]<br />
|Chaîne<br />
|-<br />
|[[Liste de date (type)|Liste de date]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'entier (type)|Liste d'entier]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'objet (type)|Liste d'objet]]<br />
|<non stocké><br />
|-<br />
|[[Curseur (type)|Curseur]]<br />
|<non stocké><br />
|-<br />
|[[Curseur d'importation(type)|Curseur d'importation]]<br />
|<non stocké><br />
|-<br />
|[[Document XML (type)|Document XML]]<br />
|Binaire<br />
|-<br />
|[[Document XSL (type)|Document XSL]]<br />
|Binaire<br />
|}<br />
<br />
====Attributs sérialisés====<br />
Les types sérialisés sont des types de données numériques pouvant être utilisés dans les cumuls et permettant une mise à jour incrémentale. Ces types permettent d'éviter les verrouillages lors des mises à jour de cumuls.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type sérialisé<br />
!Type équivalent<br />
|-<br />
|Entier sérialisé<br />
|Integer 32 bits<br />
|-<br />
|Valeur flottante sérialisée<br />
|Double<br />
|-<br />
|Valeur monétaire sérialisé<br />
|Currency<br />
|-<br />
|Quantité sérialisée<br />
|Quantity<br />
|}<br />
<br />
===Attributs dérivés===<br />
Les attributs dérivées sont des attributs dont la valeur n'est pas stockée dans l'instance de l'objet mais calculée par une opération appelée [[Règles de dérivation (rule)|règle de dérivation]].<br />
<br />
===Attributs dérivés calculés===<br />
Les attributs dérivés calculés, sont des attributs dérivés persistants. Lors de la mise à jour de l’objet, ils sont stockés en base de données.<br />
<br />
Un attribut dérivé stocké est considéré comme valide après la lecture de l’objet ; au moment de l’écriture, il est recalculé si nécessaire pour assurer de stocker une valeur valide.<br />
<br />
{{info|Les attributs dérivés stockés permettent de rendre accessible en SQL des attributs dérivés.}}<br />
<br />
===Attributs tableaux===<br />
Les attributs peuvent être déclarés sous forme de tableau multi-dimensionnel. Cet usage peut être utile dans certain cas pour dénormaliser le modèle et améliorer les performances, néanmoins l'usage de tableau ne correspondant pas à une approche objet de la conception.<br />
<br />
Un attribut tableau est défini comme un attribut ordinaire, la case à cocher Attribut tableau étant cochée dans l’onglet Propriété :<br />
<br />
{{#images:image2-1.png|dsm/modele/attribut}}<br />
<br />
Pour paramétrer un attribut tableau, spécifiez le type des valeurs et les dimensions. Tous les types de données, excepté les blobs (image, binaire, texte …) et les rôles, sont utilisables. Le nombre de dimension n’est pas limité.<br />
<br />
*Les dimensions sont numérotées à partir de 1.<br />
*Les indices de dimension sont numérotés à partir de 0.<br />
<br />
Un attribut tableau est représenté dans la base de données par un nombre de colonnes égal au produit des dimensions du tableau.<br />
Par exemple un attribut tableau « ATT » à deux dimensions [0..1, 0..2] sera stocké dans la table SQL dans les colonnes ATT_0_0, ATT_0_1, ATT_0-2, ATT_1_0, ATT_1_1, ATT_1_2. Il existe une limite au nombre de colonnes qu’une table SQL peut contenir, consulter la documentation du serveur.<br />
<br />
====Attributs tableaux non persistant====<br />
La règle de dérivation est appelée pour chaque indice du tableau ; elle doit tenir compte des indices de l’élément calculé.<br />
Il existe une propriété « Indices » disponible dans les règles de dérivation qui retourne l’indice en cours pour une dimension donnée :<br />
<br />
Property Indices[iDimension :Integer] :Integer ;<br />
<br />
Exemple :<br />
<pre class="wikicode"><br />
Begin<br />
// Retourne l’indice de la dimension 1<br />
Result := Indices[1] ;<br />
end;<br />
</pre><br />
<br />
{{info|Les attributs tableaux non persistants sont invalidés dans leur ensemble.}}<br />
<br />
===Variables===<br />
Una variable est un attributs non persistant qui n'est pas stocké dans la base de données.<br />
<br />
===Création et modification des attributs===<br />
Les attributs sont créés dans le dialogue de proriété de la classe et modifié dans le dialogue de propriété d'un attribut.<br />
<br />
{{#images:image1.png|dsm/modele/attribut}}<br />
<br />
*Alias<br />
:Une liste d'alias du nom de l'attribut ; les alias servent dans le cas ou un attribut est renommé.<br />
*Libellé<br />
:Le libellé associé à l'attribut<br />
*Bulle d'aide<br />
:Une information supplémentaire affichée sous forme de bulle d'aide dans l'interface utilisateur.<br />
<br />
{{#images:image2.png|dsm/modele/attribut}}<br />
<br />
*Masque de saisie, longueur, justification<br />
:Informations de saisie associées à l'attribut ; ces informations peuvent être surchargé par le paramétrage défini dans l'administrateur ou le paramétrage défini dans l'interface <br />
utilisateur.<br />
Pour plus de précision sur le format du masque, se référer à [[Console_d'administration_(admin)#Syntaxe_de_saisie_d.E2.80.99un_masque|Syntaxe d'un masque de saisie]].<br />
*Attribut tableau.<br />
:Voir ci-dessus<br />
*Persistant<br />
:L'attribut est persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Non persistant<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Calculé<br />
:L'attribut est persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Variable<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Partagé<br />
L'attribut est partagé dans le cadre du partage (Information de partage)<br />
<br />
{{Footer|Modèle}}<br />
[[category:Modèle]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Attributs_(model)Attributs (model)2019-07-31T11:14:03Z<p>Tdymon : /* Création et modification des attributs */</p>
<hr />
<div>===Attributs===<br />
Les attributs peuvent être classés en trois catégroies :<br />
#Les attributs framework.<br />
#Les attributs de type simple<br />
#Les attributs de type métier.<br />
<br />
====Attributs framework====<br />
Ce sont des attributs créés et gérés par le framework en fonction du stéréotype de la classe. <br />
<br />
Toutes les classes ont un ensemble communs d'attributs framework :<br />
<br />
{| class="wikitable"<br />
|-<br />
!Attribut<br />
!Type<br />
!Accès<br />
!Usage<br />
|-<br />
|oid<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|InstanceOID<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|Caption<br />
|Chaîne<br />
|Lecture/Ecriture<br />
|Libellé identifiant l'objet<br />
|-<br />
|ObjectClassName<br />
|Chaîne<br />
|Lecture<br />
|Nom de la classe de l'objet<br />
|-<br />
|ObjectClassLabel<br />
|Chaîne<br />
|Lecture<br />
|Libellé de la classe de l'objet<br />
|}<br />
<br />
D'autre attributs framework peuvent exister en fonction du stéréotype de la classe.<br />
<br />
====Attributs de type simple====<br />
Les types simples sont des types de données primaires définis dans le framework.<br />
<br />
Les attributs de type simple peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type<br />
!Usage<br />
!Taille<br />
!Codage<br />
|-<br />
|String<br />
|Chaîne<br />
|Variable<br />
|ANSI<br />
|-<br />
|Integer<br />
|Entier<br />
|4<br />
|32 bits signés<br />
|-<br />
|LongInt<br />
|Entier long<br />
|8<br />
|64 bits signés<br />
|-<br />
|TDatetime<br />
|Date et heure<br />
|8<br />
|Double<br />
|-<br />
|Date<br />
|Date<br />
|8<br />
|Double<br />
|-<br />
|Time<br />
|Heure<br />
|8<br />
|Double<br />
|-<br />
|Boolean<br />
|Logique<br />
|4<br />
|0 ou 1<br />
|-<br />
|Double<br />
|Flottant double précision<br />
|8<br />
|<br />
|-<br />
|Currency<br />
|Valeur monaitaire<br />
|8<br />
|Entier 64 bits signé<br />
Virgule fixe 4 positions<br />
|}<br />
<br />
====Attributs de type métier====<br />
Les types métiers sont des [[:category:Types|types de données]] souvent composites présentant un ensemble de comportements permettant de gérer une problématique métier.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Description<br />
!Type de stockage<br />
|-<br />
|[[Montant en devise (type)|Montant en devise]]<br />
|Monétaire<br />
|-<br />
|[[Montant de transaction (type)|Montant de transaction]]<br />
|Monétaire<br />
|-<br />
|[[Numérique (type)|Numérique]]<br />
|Numérique<br />
|-<br />
|[[Quantité (type)|Quantité]]<br />
|Numérique<br />
|-<br />
|[[Quantité avec référence (type)|Quantité avec référence]]<br />
|Numérique<br />
|-<br />
|[[Compteur (type)|Compteur alphanumérique]]<br />
|Chaîne<br />
|-<br />
|[[Référénce d'objet (type)|Référence d'objet]]<br />
|Chaîne<br />
|-<br />
|[[Identité (type)|Identité]]<br />
|Compteur numérique<br />
|-<br />
|[[Identité SQL (type)|Identité SQL]]<br />
|Compteur SQL<br />
|-<br />
|[[Enuméré (type)|Enuméré]]<br />
|Entier<br />
|-<br />
|[[Mémo (type)|Mémo]]<br />
|Texte<br />
|-<br />
|[[Image (type)|Image]]<br />
|Binaire<br />
|-<br />
|[[Binaire (type)|Binaire]]<br />
|Binaire<br />
|-<br />
|[[Marque (type)|Marque de traitement]]<br />
|Date<br />
|-<br />
|[[Contrôleur (type)|Contrôleur]]<br />
|Chaîne<br />
|-<br />
|[[Liste de date (type)|Liste de date]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'entier (type)|Liste d'entier]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'objet (type)|Liste d'objet]]<br />
|<non stocké><br />
|-<br />
|[[Curseur (type)|Curseur]]<br />
|<non stocké><br />
|-<br />
|[[Curseur d'importation(type)|Curseur d'importation]]<br />
|<non stocké><br />
|-<br />
|[[Document XML (type)|Document XML]]<br />
|Binaire<br />
|-<br />
|[[Document XSL (type)|Document XSL]]<br />
|Binaire<br />
|}<br />
<br />
====Attributs sérialisés====<br />
Les types sérialisés sont des types de données numériques pouvant être utilisés dans les cumuls et permettant une mise à jour incrémentale. Ces types permettent d'éviter les verrouillages lors des mises à jour de cumuls.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type sérialisé<br />
!Type équivalent<br />
|-<br />
|Entier sérialisé<br />
|Integer 32 bits<br />
|-<br />
|Valeur flottante sérialisée<br />
|Double<br />
|-<br />
|Valeur monétaire sérialisé<br />
|Currency<br />
|-<br />
|Quantité sérialisée<br />
|Quantity<br />
|}<br />
<br />
===Attributs dérivés===<br />
Les attributs dérivées sont des attributs dont la valeur n'est pas stockée dans l'instance de l'objet mais calculée par une opération appelée [[Règles de dérivation (rule)|règle de dérivation]].<br />
<br />
===Attributs dérivés calculés===<br />
Les attributs dérivés calculés, sont des attributs dérivés persistants. Lors de la mise à jour de l’objet, ils sont stockés en base de données.<br />
<br />
Un attribut dérivé stocké est considéré comme valide après la lecture de l’objet ; au moment de l’écriture, il est recalculé si nécessaire pour assurer de stocker une valeur valide.<br />
<br />
{{info|Les attributs dérivés stockés permettent de rendre accessible en SQL des attributs dérivés.}}<br />
<br />
===Attributs tableaux===<br />
Les attributs peuvent être déclarés sous forme de tableau multi-dimensionnel. Cet usage peut être utile dans certain cas pour dénormaliser le modèle et améliorer les performances, néanmoins l'usage de tableau ne correspondant pas à une approche objet de la conception.<br />
<br />
Un attribut tableau est défini comme un attribut ordinaire, la case à cocher Attribut tableau étant cochée dans l’onglet Propriété :<br />
<br />
{{#images:image2-1.png|dsm/modele/attribut}}<br />
<br />
Pour paramétrer un attribut tableau, spécifiez le type des valeurs et les dimensions. Tous les types de données, excepté les blobs (image, binaire, texte …) et les rôles, sont utilisables. Le nombre de dimension n’est pas limité.<br />
<br />
*Les dimensions sont numérotées à partir de 1.<br />
*Les indices de dimension sont numérotés à partir de 0.<br />
<br />
Un attribut tableau est représenté dans la base de données par un nombre de colonnes égal au produit des dimensions du tableau.<br />
Par exemple un attribut tableau « ATT » à deux dimensions [0..1, 0..2] sera stocké dans la table SQL dans les colonnes ATT_0_0, ATT_0_1, ATT_0-2, ATT_1_0, ATT_1_1, ATT_1_2. Il existe une limite au nombre de colonnes qu’une table SQL peut contenir, consulter la documentation du serveur.<br />
<br />
====Attributs tableaux non persistant====<br />
La règle de dérivation est appelée pour chaque indice du tableau ; elle doit tenir compte des indices de l’élément calculé.<br />
Il existe une propriété « Indices » disponible dans les règles de dérivation qui retourne l’indice en cours pour une dimension donnée :<br />
<br />
Property Indices[iDimension :Integer] :Integer ;<br />
<br />
Exemple :<br />
<pre class="wikicode"><br />
Begin<br />
// Retourne l’indice de la dimension 1<br />
Result := Indices[1] ;<br />
end;<br />
</pre><br />
<br />
{{info|Les attributs tableaux non persistants sont invalidés dans leur ensemble.}}<br />
<br />
===Variables===<br />
Una variable est un attributs non persistant qui n'est pas stocké dans la base de données.<br />
<br />
===Création et modification des attributs===<br />
Les attributs sont créés dans le dialogue de proriété de la classe et modifié dans le dialogue de propriété d'un attribut.<br />
<br />
{{#images:image1.png|dsm/modele/attribut}}<br />
<br />
*Alias<br />
:Une liste d'alias du nom de l'attribut ; les alias servent dans le cas ou un attribut est renommé.<br />
*Libellé<br />
:Le libellé associé à l'attribut<br />
*Bulle d'aide<br />
:Une information supplémentaire affichée sous forme de bulle d'aide dans l'interface utilisateur.<br />
<br />
{{#images:image2.png|dsm/modele/attribut}}<br />
<br />
*Masque de saisie, longueur, justification<br />
:Informations de saisie associées à l'attribut ; ces informations peuvent être surchargé par le paramétrage défini dans l'administrateur ou le paramétrage défini dans l'interface <br />
utilisateur. Pour plus de précision sur le format du masque, se référer à [[Console_d'administration_(admin)#Syntaxe_de_saisie_d.E2.80.99un_masque|Syntaxe d'un masque de saisie]].<br />
*Attribut tableau.<br />
:Voir ci-dessus<br />
*Persistant<br />
:L'attribut est persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Non persistant<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Calculé<br />
:L'attribut est persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Variable<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Partagé<br />
L'attribut est partagé dans le cadre du partage (Information de partage)<br />
<br />
{{Footer|Modèle}}<br />
[[category:Modèle]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Attributs_(model)Attributs (model)2019-07-31T11:12:50Z<p>Tdymon : /* Création et modification des attributs */</p>
<hr />
<div>===Attributs===<br />
Les attributs peuvent être classés en trois catégroies :<br />
#Les attributs framework.<br />
#Les attributs de type simple<br />
#Les attributs de type métier.<br />
<br />
====Attributs framework====<br />
Ce sont des attributs créés et gérés par le framework en fonction du stéréotype de la classe. <br />
<br />
Toutes les classes ont un ensemble communs d'attributs framework :<br />
<br />
{| class="wikitable"<br />
|-<br />
!Attribut<br />
!Type<br />
!Accès<br />
!Usage<br />
|-<br />
|oid<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|InstanceOID<br />
|Chaîne de 32 caractères<br />
|Lecture<br />
|[[Identificateur d'objet]]<br />
|-<br />
|Caption<br />
|Chaîne<br />
|Lecture/Ecriture<br />
|Libellé identifiant l'objet<br />
|-<br />
|ObjectClassName<br />
|Chaîne<br />
|Lecture<br />
|Nom de la classe de l'objet<br />
|-<br />
|ObjectClassLabel<br />
|Chaîne<br />
|Lecture<br />
|Libellé de la classe de l'objet<br />
|}<br />
<br />
D'autre attributs framework peuvent exister en fonction du stéréotype de la classe.<br />
<br />
====Attributs de type simple====<br />
Les types simples sont des types de données primaires définis dans le framework.<br />
<br />
Les attributs de type simple peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type<br />
!Usage<br />
!Taille<br />
!Codage<br />
|-<br />
|String<br />
|Chaîne<br />
|Variable<br />
|ANSI<br />
|-<br />
|Integer<br />
|Entier<br />
|4<br />
|32 bits signés<br />
|-<br />
|LongInt<br />
|Entier long<br />
|8<br />
|64 bits signés<br />
|-<br />
|TDatetime<br />
|Date et heure<br />
|8<br />
|Double<br />
|-<br />
|Date<br />
|Date<br />
|8<br />
|Double<br />
|-<br />
|Time<br />
|Heure<br />
|8<br />
|Double<br />
|-<br />
|Boolean<br />
|Logique<br />
|4<br />
|0 ou 1<br />
|-<br />
|Double<br />
|Flottant double précision<br />
|8<br />
|<br />
|-<br />
|Currency<br />
|Valeur monaitaire<br />
|8<br />
|Entier 64 bits signé<br />
Virgule fixe 4 positions<br />
|}<br />
<br />
====Attributs de type métier====<br />
Les types métiers sont des [[:category:Types|types de données]] souvent composites présentant un ensemble de comportements permettant de gérer une problématique métier.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Description<br />
!Type de stockage<br />
|-<br />
|[[Montant en devise (type)|Montant en devise]]<br />
|Monétaire<br />
|-<br />
|[[Montant de transaction (type)|Montant de transaction]]<br />
|Monétaire<br />
|-<br />
|[[Numérique (type)|Numérique]]<br />
|Numérique<br />
|-<br />
|[[Quantité (type)|Quantité]]<br />
|Numérique<br />
|-<br />
|[[Quantité avec référence (type)|Quantité avec référence]]<br />
|Numérique<br />
|-<br />
|[[Compteur (type)|Compteur alphanumérique]]<br />
|Chaîne<br />
|-<br />
|[[Référénce d'objet (type)|Référence d'objet]]<br />
|Chaîne<br />
|-<br />
|[[Identité (type)|Identité]]<br />
|Compteur numérique<br />
|-<br />
|[[Identité SQL (type)|Identité SQL]]<br />
|Compteur SQL<br />
|-<br />
|[[Enuméré (type)|Enuméré]]<br />
|Entier<br />
|-<br />
|[[Mémo (type)|Mémo]]<br />
|Texte<br />
|-<br />
|[[Image (type)|Image]]<br />
|Binaire<br />
|-<br />
|[[Binaire (type)|Binaire]]<br />
|Binaire<br />
|-<br />
|[[Marque (type)|Marque de traitement]]<br />
|Date<br />
|-<br />
|[[Contrôleur (type)|Contrôleur]]<br />
|Chaîne<br />
|-<br />
|[[Liste de date (type)|Liste de date]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'entier (type)|Liste d'entier]]<br />
|Chaîne<br />
|-<br />
|[[Liste d'objet (type)|Liste d'objet]]<br />
|<non stocké><br />
|-<br />
|[[Curseur (type)|Curseur]]<br />
|<non stocké><br />
|-<br />
|[[Curseur d'importation(type)|Curseur d'importation]]<br />
|<non stocké><br />
|-<br />
|[[Document XML (type)|Document XML]]<br />
|Binaire<br />
|-<br />
|[[Document XSL (type)|Document XSL]]<br />
|Binaire<br />
|}<br />
<br />
====Attributs sérialisés====<br />
Les types sérialisés sont des types de données numériques pouvant être utilisés dans les cumuls et permettant une mise à jour incrémentale. Ces types permettent d'éviter les verrouillages lors des mises à jour de cumuls.<br />
<br />
Les attributs de type métiers peuvent être d'un type suivant :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Type sérialisé<br />
!Type équivalent<br />
|-<br />
|Entier sérialisé<br />
|Integer 32 bits<br />
|-<br />
|Valeur flottante sérialisée<br />
|Double<br />
|-<br />
|Valeur monétaire sérialisé<br />
|Currency<br />
|-<br />
|Quantité sérialisée<br />
|Quantity<br />
|}<br />
<br />
===Attributs dérivés===<br />
Les attributs dérivées sont des attributs dont la valeur n'est pas stockée dans l'instance de l'objet mais calculée par une opération appelée [[Règles de dérivation (rule)|règle de dérivation]].<br />
<br />
===Attributs dérivés calculés===<br />
Les attributs dérivés calculés, sont des attributs dérivés persistants. Lors de la mise à jour de l’objet, ils sont stockés en base de données.<br />
<br />
Un attribut dérivé stocké est considéré comme valide après la lecture de l’objet ; au moment de l’écriture, il est recalculé si nécessaire pour assurer de stocker une valeur valide.<br />
<br />
{{info|Les attributs dérivés stockés permettent de rendre accessible en SQL des attributs dérivés.}}<br />
<br />
===Attributs tableaux===<br />
Les attributs peuvent être déclarés sous forme de tableau multi-dimensionnel. Cet usage peut être utile dans certain cas pour dénormaliser le modèle et améliorer les performances, néanmoins l'usage de tableau ne correspondant pas à une approche objet de la conception.<br />
<br />
Un attribut tableau est défini comme un attribut ordinaire, la case à cocher Attribut tableau étant cochée dans l’onglet Propriété :<br />
<br />
{{#images:image2-1.png|dsm/modele/attribut}}<br />
<br />
Pour paramétrer un attribut tableau, spécifiez le type des valeurs et les dimensions. Tous les types de données, excepté les blobs (image, binaire, texte …) et les rôles, sont utilisables. Le nombre de dimension n’est pas limité.<br />
<br />
*Les dimensions sont numérotées à partir de 1.<br />
*Les indices de dimension sont numérotés à partir de 0.<br />
<br />
Un attribut tableau est représenté dans la base de données par un nombre de colonnes égal au produit des dimensions du tableau.<br />
Par exemple un attribut tableau « ATT » à deux dimensions [0..1, 0..2] sera stocké dans la table SQL dans les colonnes ATT_0_0, ATT_0_1, ATT_0-2, ATT_1_0, ATT_1_1, ATT_1_2. Il existe une limite au nombre de colonnes qu’une table SQL peut contenir, consulter la documentation du serveur.<br />
<br />
====Attributs tableaux non persistant====<br />
La règle de dérivation est appelée pour chaque indice du tableau ; elle doit tenir compte des indices de l’élément calculé.<br />
Il existe une propriété « Indices » disponible dans les règles de dérivation qui retourne l’indice en cours pour une dimension donnée :<br />
<br />
Property Indices[iDimension :Integer] :Integer ;<br />
<br />
Exemple :<br />
<pre class="wikicode"><br />
Begin<br />
// Retourne l’indice de la dimension 1<br />
Result := Indices[1] ;<br />
end;<br />
</pre><br />
<br />
{{info|Les attributs tableaux non persistants sont invalidés dans leur ensemble.}}<br />
<br />
===Variables===<br />
Una variable est un attributs non persistant qui n'est pas stocké dans la base de données.<br />
<br />
===Création et modification des attributs===<br />
Les attributs sont créés dans le dialogue de proriété de la classe et modifié dans le dialogue de propriété d'un attribut.<br />
<br />
{{#images:image1.png|dsm/modele/attribut}}<br />
<br />
*Alias<br />
:Une liste d'alias du nom de l'attribut ; les alias servent dans le cas ou un attribut est renommé.<br />
*Libellé<br />
:Le libellé associé à l'attribut<br />
*Bulle d'aide<br />
:Une information supplémentaire affichée sous forme de bulle d'aide dans l'interface utilisateur.<br />
<br />
{{#images:image2.png|dsm/modele/attribut}}<br />
<br />
*Masque de saisie, longueur, justification<br />
:Informations de saisie associées à l'attribut ; ces informations peuvent être surchargé par le paramétrage défini dans l'administrateur ou le paramétrage défini dans l'interface <br />
utilisateur. Pour plus de précision sur le format du masque, se référer à [[ZConsole_d'administration_(admin)#Syntaxe_de_saisie_d.E2.80.99un_masque|Console_d'administration_(admin)#Syntaxe_de_saisie_d.E2.80.99un_masque]].<br />
*Attribut tableau.<br />
:Voir ci-dessus<br />
*Persistant<br />
:L'attribut est persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Non persistant<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Calculé<br />
:L'attribut est persistant et la valeur de l'attribut est calculé par une [[Règles de dérivation (rule)|règle de dérivation]].<br />
*Variable<br />
:L'attribut n'est pas persistant et la valeur de l'attribut est stockée dans l'instance de l'objet.<br />
*Partagé<br />
L'attribut est partagé dans le cadre du partage (Information de partage)<br />
<br />
{{Footer|Modèle}}<br />
[[category:Modèle]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Expressions_objets_(code)Expressions objets (code)2019-06-20T11:23:26Z<p>Tdymon : </p>
<hr />
<div>=== Introduction ===<br />
Le framework 1000 utilise des expressions objets pour exprimer sous forme objets des conditions utilisées dans les requêtes objets. Ces expressions objets sont ensuite traduites en clauses dans les requêtes SQL ou évaluées directement sur les objets métiers.<br />
<br />
La syntaxe de ces expressions est généralement identique à leur équivalent dans le langage 1000, des fonctionnalités suplémentaires ont été introduites pour utiliser les possibilités offertes par les bases de données.<br />
<br />
=== Notation ===<br />
Les expressions objets utilisent la notation pointée et la syntaxe Pascal.<br />
<br />
=== Arguments ===<br />
Les expressions peuvent être paramétrés par des arguments généralement passés sous forme d'un tableau de variant ou placés dans une propriété tableau.<br />
<br />
La référence aux arguments se fait par le signe % suivi du numéro de l'argument.<br />
<br />
La numérotation des arguments commence à 1.<br />
<br />
Exemple :<br />
<br />
'(code=%1) and (date>%2) and (date<%3)', ['FRF',Now-1,Now+1]<br />
<br />
=== Opérateurs ===<br />
Les opérateurs de comparaison et les opérateurs logiques du langage sont utilisables dans les expressions objets.<br />
<br />
{|class="wikitable"<br />
|-<br />
!Opérateur<br />
!Usage<br />
|-<br />
|=<br />
|Egalité<br />
|-<br />
|eq<br />
|Egalité<br />
|-<br />
|<><br />
|Différence<br />
|-<br />
|ne<br />
|Différence<br />
|-<br />
|><br />
|Supérieur<br />
|-<br />
|gt<br />
|Supérieur<br />
|-<br />
|<<br />
|Inférieur<br />
|-<br />
|lt<br />
|Inférieur<br />
|-<br />
|>=<br />
|Supérieur ou égale<br />
|-<br />
|ge<br />
|Supérieur ou égale<br />
|-<br />
|<=<br />
|Inférieur ou égale<br />
|-<br />
|le<br />
|Inférieur ou égale<br />
|-<br />
|OR<br />
|Ou logique<br />
|-<br />
|AND<br />
|Et logique<br />
|-<br />
|NOT<br />
|Non logique<br />
|-<br />
|like<br />
|L'opérande de gauche vérifie le modèle contenu dans l'opérande de droite<br />
Les caractères % et _ sont des caractères jokers du modèle<br />
|-<br />
|in<br />
|L'opérande de gauche est contenu dans l'opérande de droite<br />
L'opérande de droite est une liste de valeur (chaîne ou nombre) séparées par des virgules placée entre parenthèses<br />
|}<br />
<br />
Exemple<br />
<br />
codeCompte like '10%'<br />
<br />
codePays in ('FR','EN','US')<br />
<br />
codePays in %1<br />
<br />
typeCompte.value = compteBilan<br />
<br />
=== Fonctions ===<br />
Certaines fonctions peuvent être utilisées dans les expressions objets :<br />
<br />
{|class="wikitable"<br />
|-<br />
|[[CountObjectsWhere (exp)|CountObjectsWhere]]<br />
|Compte le nombre d'objet de iClassName vérifiant iExpression. <br />
|-<br />
|[[ExistsObjectsWhere (exp)|ExistsObjectsWhere]]<br />
|Retourne 1 si il existe au moins un objet de iClassName vérifiant iExpression; retourne 0 sinon.<br />
|-<br />
|[[DatePart (exp)|DatePart]]<br />
|Retourne la partie de la date indiquée par PartOfDate de la valeur de l'attribut Attribute<br />
|-<br />
|[[Round (exp)|Round]]<br />
|Arrondi le nombre flottant value à la longueur len.<br />
|-<br />
|[[Assigned (exp)|Assigned]]<br />
|Retourne True si l'objet contenu dans l'argument value est affecté<br />
|-<br />
|[[True (exp)|True]]<br />
|Retourne la valeur constante Vrai.<br />
|-<br />
|[[Haversine (exp)|Haversine]]<br />
|Retourne la distance entre un attribut Geolocation et un jeu de coordonnées.<br />
|-<br />
|[[lowerCase (exp)|lowerCase]]<br />
|Retourne la valeur en minuscule du paramètre chaine<br />
|-<br />
|[[upperCase (exp)|upperCase]]<br />
|Retourne la valeur en majuscule du paramètre chaine<br />
|}<br />
<br />
=== Jointures ===<br />
La traversée d’un rôle se traduit en terme SQL par une jointure. <br />
<br />
Un certain nombre d’extensions ont été ajoutées à cette notation pour permettre de spécifier certaines caractéristiques supplémentaires :<br />
<br />
{|class="wikitable"<br />
|-<br />
!Signe<br />
!Usage<br />
|-<br />
|«.»<br />
|jointure simple.<br />
|-<br />
|«.+»<br />
|jointure externe.<br />
|-<br />
|«^»<br />
|jointure simple sur la classe d'association de la relation.<br />
|-<br />
|«^+»<br />
|jointure externe sur la classe d'association de la relation.<br />
|}<br />
<br />
=== Ordre de tri ===<br />
{|class="wikitable"<br />
|-<br />
!Signe<br />
!Usage<br />
|-<br />
|«-»<br />
|placé devant un attribut placé dans un critère de tri indique un tri décroissant.<br />
|}<br />
<br />
{{Footer|Code métier}}<br />
[[category:Code métier]]<br />
[[Category:Expressions]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Condition_(Concepteur_de_requ%C3%AAtes)Condition (Concepteur de requêtes)2019-05-22T13:13:40Z<p>Tdymon : </p>
<hr />
<div>Condition / Condition de non impression<br />
<br />
La condition définie une expression retournant une valeur booléenne qui sera évalué afin de réaliser ou non l'impression.<br />
<br />
{{tip|Attention à un détail : dans certains cas, le fait de placer par exemple juste un paramètre booléen n'est pas suffisant selon l'endroit du Requêteur, il faut alors impérativement tester la valeur comme l'expression ci-dessous.}}<br />
<br />
Exemple :<br />
<br />
PGARDE = TRUE<br />
<br />
[[Category:Requêteur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/ConditionCondition2019-05-22T13:11:27Z<p>Tdymon : a déplacé Condition vers Condition (Concepteur de requêtes)</p>
<hr />
<div>#REDIRECTION [[Condition (Concepteur de requêtes)]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Condition_(Concepteur_de_requ%C3%AAtes)Condition (Concepteur de requêtes)2019-05-22T13:11:27Z<p>Tdymon : a déplacé Condition vers Condition (Concepteur de requêtes)</p>
<hr />
<div>Condition / Condition de non impression<br />
<br />
La condition définie une expression retournant une valeur booléenne qui sera évalué afin de réaliser ou non l'impression.<br />
<br />
Attention à un détail : dans certains cas, le fait de placer par exemple juste un paramètre booléen n'est pas suffisant selon l'endroit du Requêteur, il faut alors impérativement tester la valeur comme l'expression ci-dessous.<br />
<br />
Exemple :<br />
<br />
PGARDE = TRUE<br />
<br />
[[Category:Requêteur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Condition_(Concepteur_de_requ%C3%AAtes)Condition (Concepteur de requêtes)2019-05-22T13:10:20Z<p>Tdymon : </p>
<hr />
<div>Condition / Condition de non impression<br />
<br />
La condition définie une expression retournant une valeur booléenne qui sera évalué afin de réaliser ou non l'impression.<br />
<br />
Attention à un détail : dans certains cas, le fait de placer par exemple juste un paramètre booléen n'est pas suffisant selon l'endroit du Requêteur, il faut alors impérativement tester la valeur comme l'expression ci-dessous.<br />
<br />
Exemple :<br />
<br />
PGARDE = TRUE<br />
<br />
[[Category:Requêteur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Condition_(Concepteur_de_requ%C3%AAtes)Condition (Concepteur de requêtes)2019-05-22T13:09:10Z<p>Tdymon : Page créée avec « Condition / Condition de non impression La condition définie une expression retournant une valeur booléenne qui sera évalué afin de réaliser ou non l'impression. At... »</p>
<hr />
<div>Condition / Condition de non impression<br />
<br />
La condition définie une expression retournant une valeur booléenne qui sera évalué afin de réaliser ou non l'impression.<br />
<br />
Attention à un détail : dans certains cas, le fait de placer par exemple juste un paramètre booléen n'est pas suffisant selon l'endroit du Requêteur, il faut alors impérativement tester la valeur comme l'expression ci-dessous.<br />
<br />
Exemple :<br />
<br />
PGARDE = TRUE<br />
<br />
[[category:Requêteur Fonctions d'aggrégation]]<br />
[[Category:Requêteur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Param%C3%A8tres_globauxParamètres globaux2019-05-16T09:25:52Z<p>Tdymon : </p>
<hr />
<div>Ces paramètres sont utilisable dans le code métier et les divers éléments de script.<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Usage<br />
|-<br />
|GlbApplication<br />
|OID de l'application<br />
|-<br />
|GlbOIDApplication<br />
|OID de l'application<br />
|-<br />
|GlbApplicationName<br />
|Nom de l'application<br />
|-<br />
|GlbSociety<br />
|OID du Dossier<br />
|-<br />
|GlbOIDSociety<br />
|OID du dossier<br />
|-<br />
|GlbSocietyName<br />
|Nom du dossier<br />
|-<br />
|GlbUser<br />
|OID de l'utilisateur<br />
|-<br />
|GlbOIDUser<br />
|OID de l'utilisateur<br />
|-<br />
|GlbAppSoc<br />
|OID de l'association Application / Dossier<br />
|-<br />
|GlbOIDAppSoc<br />
|OID de l'association Application / Dossier<br />
|-<br />
|GlbAppSocEnt<br />
|OID de l'association Application / Dossier / Entité<br />
|-<br />
|GlbOIDAppSocEnt<br />
|OID de l'association Application / Dossier / Entité<br />
|-<br />
|GlbGroup<br />
|OID du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbOIDgroup<br />
|OID du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbGroupName<br />
|Nom du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbAuthDirectory<br />
|OID de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbOIDAuthDirectory<br />
|OID de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbAutDirName<br />
|Nom de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbDefaultServerName<br />
|<br />
|-<br />
|GlbServerName<br />
|<br />
|-<br />
|GlbDefaultServer<br />
|<br />
|-<br />
|GlbOIDService<br />
|<br />
|-<br />
|GlbDefaultServiceURL<br />
|<br />
|-<br />
|GlbServiceURL<br />
|<br />
|-<br />
|GlbAccountName<br />
|<br />
|-<br />
|GlbMacAddress<br />
|Adresse MAC du poste<br />
|-<br />
|GlbRemoteIP<br />
|Adresse IP de l'utilisateur<br />
|-<br />
|GlbComputerName<br />
|Nom de la machine<br />
|-<br />
|GlbIsClusterNode<br />
| <br />
|-<br />
|GlbThisNodeID<br />
|L'identifiant unique du noeud de cluster de ce Service <br />
|-<br />
|GlbTestSuiteEnvName<br />
|Nom de l'environnement de test.<br />
|-<br />
|GlbTestSuiteDatabaseName<br />
|Nom de la base de données de la suite de test.<br />
|-<br />
|GlbIsInternet<br />
|L'application fonctionne en mode Internet<br />
|-<br />
|GlbIsDesktopClient<br />
|True en client Desktop<br />
|-<br />
|GlbIsWebClient <br />
|True en client Web<br />
|}<br />
<br />
'''Informations relatives au contexte de partage:'''<br />
<br />
{{:Paramètres_de_partage_(Paramètres)}}<br />
<br />
'''Informations relatives à l'utilisateur :'''<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Usage<br />
|-<br />
|GlbUserName<br />
|Login de l'utilisateur<br />
|-<br />
|GlbUserCivility<br />
|Civilité de l'utilisateur (0,1,2)<br />
|-<br />
|GlbUserFirstName<br />
|Prénom de l'utilisateur<br />
|-<br />
|GlbUserLastName<br />
|Nom de famille de l'utilisateur<br />
|-<br />
|GlbUserTitle<br />
|Titre ou salutation de l'utilisateur<br />
|-<br />
|GlbUserCaption<br />
|Libellé de l'utilisateur<br />
|-<br />
|GlbUserEmail<br />
|Email de l'utilisateur<br />
|-<br />
|GlbUserPhoneNumber<br />
|Numéro de téléphone de l'utilisateur<br />
|-<br />
|GlbUserLanguage<br />
|Langage de l'utilisateur<br />
|-<br />
|GlbUserCountryCode<br />
|Code pays de l'utilisateur<br />
|-<br />
|GlbUserReadOnly<br />
|L'utilisateur est en lecture seule<br />
|-<br />
|GlbIsAllowedDocuments<br />
|True si l'utilisateur courant est autorisé à manipuler des documents<br />
|-<br />
|GlbIsAllowedPersonalData<br />
|True si l'utilisateur courant est autorisé à manipuler des données personnelles<br />
|-<br />
|GlbIsAllowedSensitiveData<br />
|True si l'utilisateur courant est autorisé à manipuler des données sensibles<br />
|-<br />
|GlbUserIsAdministrator<br />
|True si l'utilisateur courant est l'administrateur<br />
|-<br />
|GlbUserIsDeveloper<br />
|True si l'utilisateur courant est développeur<br />
|-<br />
|GlbUserIsFolderAdministrator<br />
|True si l'utilisateur courant est autorisé à gérer les dossiers.<br />
|}<br />
<br />
Voir aussi:<br />
* [[TGlbalParameters_(class)|Classe des paramètres globaux]]<br />
<br />
[[Category:Contexte utilisateur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Param%C3%A8tres_globauxParamètres globaux2019-05-16T09:25:01Z<p>Tdymon : </p>
<hr />
<div>Ces paramètres sont utilisable dans le code métier et les divers éléments de script.<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Usage<br />
|-<br />
|GlbApplication<br />
|OID de l'application<br />
|-<br />
|GlbOIDApplication<br />
|OID de l'application<br />
|-<br />
|GlbApplicationName<br />
|Nom de l'application<br />
|-<br />
|GlbSociety<br />
|OID du Dossier<br />
|-<br />
|GlbOIDSociety<br />
|OID du dossier<br />
|-<br />
|GlbSocietyName<br />
|Nom du dossier<br />
|-<br />
|GlbUser<br />
|OID de l'utilisateur<br />
|-<br />
|GlbOIDUser<br />
|OID de l'utilisateur<br />
|-<br />
|GlbAppSoc<br />
|OID de l'association Application / Dossier<br />
|-<br />
|GlbOIDAppSoc<br />
|OID de l'association Application / Dossier<br />
|-<br />
|GlbAppSocEnt<br />
|OID de l'association Application / Dossier / Entité<br />
|-<br />
|GlbOIDAppSocEnt<br />
|OID de l'association Application / Dossier / Entité<br />
|-<br />
|GlbGroup<br />
|OID du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbOIDgroup<br />
|OID du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbGroupName<br />
|Nom du groupe par lequel l'utilisateur s'est autorisé<br />
|-<br />
|GlbAuthDirectory<br />
|OID de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbOIDAuthDirectory<br />
|OID de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbAutDirName<br />
|Nom de l'annuaire par lequel l'utilisateur s'est identifié<br />
|-<br />
|GlbDefaultServerName<br />
|<br />
|-<br />
|GlbServerName<br />
|<br />
|-<br />
|GlbDefaultServer<br />
|<br />
|-<br />
|GlbOIDService<br />
|<br />
|-<br />
|GlbDefaultServiceURL<br />
|<br />
|-<br />
|GlbServiceURL<br />
|<br />
|-<br />
|GlbAccountName<br />
|<br />
|-<br />
|GlbMacAddress<br />
|Adresse MAC du poste<br />
|-<br />
|GlbRemoteIP<br />
|Adresse IP de l'utilisateur<br />
|-<br />
|GlbComputerName<br />
|Nom de la machine<br />
|-<br />
|GlbIsClusterNode<br />
| <br />
|-<br />
|GlbThisNodeID<br />
|L'identifiant unique du noeud de cluster de ce Service <br />
|-<br />
|GlbTestSuiteEnvName<br />
|Nom de l'environnement de test.<br />
|-<br />
|GlbTestSuiteDatabaseName<br />
|Nom de la base de données de la suite de test.<br />
|-<br />
|GlbIsInternet<br />
|L'application fonctionne en mode Internet<br />
|-<br />
|GlbIsDesktopClient<br />
|True en client Desktop<br />
|-<br />
|GlbIsWebClient <br />
|True en client Web<br />
|}<br />
<br />
'''Informations relatives au contexte de partage:'''<br />
<br />
{{:Paramètres_de_partage_(Paramètres)}}<br />
<br />
'''Informations relatives à l'utilisateur :'''<br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Usage<br />
|-<br />
|GlbUserName<br />
|Login de l'utilisateur<br />
|-<br />
|GlbUserCivility<br />
|Civilité de l'utilisateur (0,1,2)<br />
|-<br />
|GlbUserFirstName<br />
|Prénom de l'utilisateur<br />
|-<br />
|GlbUserLastName<br />
|Nom de famille de l'utilisateur<br />
|-<br />
|GlbUserTitle<br />
|Titre ou salutation de l'utilisateur<br />
|-<br />
|GlbUserCaption<br />
|Libellé de l'utilisateur<br />
|-<br />
|GlbUserEmail<br />
|Email de l'utilisateur<br />
|-<br />
|GlbUserPhoneNumber<br />
|Numéro de téléphone de l'utilisateur<br />
|-<br />
|GlbUserLanguage<br />
|Langage de l'utilisateur<br />
|-<br />
|GlbUserCountryCode<br />
|Code pays de l'utilisateur<br />
|-<br />
|GlbUserReadOnly<br />
|L'utilisateur est en lecture seule<br />
|-<br />
|GlbIsAllowedDocuments<br />
|True si l'utilisateur courant est autorisé à manipuler des documents<br />
|-<br />
|GlbIsAllowedPersonalData<br />
|True si l'utilisateur courant est autorisé à manipuler des données personnelles<br />
|-<br />
|GlbIsAllowedSensitiveData<br />
|True si l'utilisateur courant est autorisé à manipuler des données sensibles<br />
|-<br />
|GlbUserIsAdministrator<br />
|True si l'utilisateur courant est l'administrateur<br />
|-<br />
|GlbUserIsDeveloper<br />
|True si l'utilisateur courant est développeur<br />
|-<br />
|GlbUserIsFolderAdministrator<br />
|True si l'utilisateur courant est habilité à gérer les dossiers.<br />
|}<br />
<br />
Voir aussi:<br />
* [[TGlbalParameters_(class)|Classe des paramètres globaux]]<br />
<br />
[[Category:Contexte utilisateur]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/AddSearchKey_(MM)AddSearchKey (MM)2019-04-24T12:50:39Z<p>Tdymon : </p>
<hr />
<div>{{version710}}<br />
<source lang='delphi'>procedure AddSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<source lang='delphi'>procedure RegisterSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<br />
Cette méthode enregistre une clé de recherche globale.<br />
<br />
{|class="wikitable"<br />
|-<br />
|iWeight<br />
|[[Weight_(const)|Poids de la clé dans la recherche]]<br />
|-<br />
|iClassName<br />
|Nom de la classe sur lequel porte la recherche<br />
|-<br />
|iProperty<br />
|Attribut de recherche<br />
|-<br />
|iFormName<br />
|Nom de l'interface a ouvrir lorsque l'utilisateur sélectionne le résultat. Optionnel : La classe iClassName doit être renseignée au niveau de l'écran qui devra être ouvert et être unique pour le métier chargé car c'est le 1er écran disponible qui sera utilisé. Attention de bien prendre en compte le fait que l'écran est ouvert sur une instance de iClassName.<br />
|}<br />
<br />
{{Tip|Enregistrez les clés de recherche dans les procédures d'initialisation des paquets, qui sont appelés à chaque chargement des applications.}}<br />
<br />
Exemple :<br />
<br />
<source lang='delphi'><br />
Procedure TRegisterMyPackage.Initialize;<br />
begin<br />
ModelManager.AddSearchKey(10,'MaClasse','Code','maclasse.dfm');<br />
end;<br />
</source><br />
<br />
Voir aussi<br />
<br />
{{Footer|ModelManager_(code)}}<br />
[[category:ModelManager]]<br />
[[Category:Configuration]]<br />
[[Category:Version710]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/AddSearchKey_(MM)AddSearchKey (MM)2019-04-24T12:48:26Z<p>Tdymon : </p>
<hr />
<div>{{version710}}<br />
<source lang='delphi'>procedure AddSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<source lang='delphi'>procedure RegisterSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<br />
Cette méthode enregistre une clé de recherche globale.<br />
<br />
{|class="wikitable"<br />
|-<br />
|iWeight<br />
|[[Weight_(const)|Poids de la clé dans la recherche]]<br />
|-<br />
|iClassName<br />
|Nom de la classe sur lequel porte la recherche<br />
|-<br />
|iProperty<br />
|Attribut de recherche<br />
|-<br />
|iFormName<br />
|Nom de l'interface a ouvrir lorsque l'utilisateur sélectionne le résultat. Optionnel : La classe iClassName doit être renseignée au niveau de l'écran qui devra être ouvert et être unique pour le métier chargé car c'est le 1er écran disponible qui sera utilisé. Attention de bien prendre en compte le fait que l'écran est ouvert sur une instance de iClassName.<br />
|}<br />
<br />
{{Tip|Enregistrez les clés de recherche dans les procédure d'initialisation des paquets.}}<br />
<br />
Exemple :<br />
<br />
<source lang='delphi'><br />
Procedure TRegisterMyPackage.Initialize;<br />
begin<br />
ModelManager.AddSearchKey(10,'MaClasse','Code','maclasse.dfm');<br />
end;<br />
</source><br />
<br />
Voir aussi<br />
<br />
{{Footer|ModelManager_(code)}}<br />
[[category:ModelManager]]<br />
[[Category:Configuration]]<br />
[[Category:Version710]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/AddSearchKey_(MM)AddSearchKey (MM)2019-04-24T12:46:55Z<p>Tdymon : </p>
<hr />
<div>{{version710}}<br />
<source lang='delphi'>procedure AddSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<source lang='delphi'>procedure RegisterSearchKey(iWeight:Integer; const iClassName:string; const iProperty:string; const iFormName:string);</source><br />
<br />
Cette méthode enregistre une clé de recherche globale.<br />
<br />
{|class="wikitable"<br />
|-<br />
|iWeight<br />
|[[Weight_(const)|Poids de la clé dans la recherche]]<br />
|-<br />
|iClassName<br />
|Nom de la classe sur lequel porte la recherche<br />
|-<br />
|iProperty<br />
|Attribut de recherche<br />
|-<br />
|iFormName<br />
|Nom de l'interface a ouvrir lorsque l'utilisateur sélectionne le résultat.<br />
|Optionnel : La classe iClassName doit être renseignée au niveau de l'écran qui devra être ouvert et être unique pour le métier chargé car c'est le 1er écran disponible qui sera utilisé.<br />
|Attention de prendre en compte le fait que l'écran est ouvert sur une instance de iClassName.<br />
|}<br />
<br />
{{Tip|Enregistrez les clés de recherche dans les procédure d'initialisation des paquets.}}<br />
<br />
Exemple :<br />
<br />
<source lang='delphi'><br />
Procedure TRegisterMyPackage.Initialize;<br />
begin<br />
ModelManager.AddSearchKey(10,'MaClasse','Code','maclasse.dfm');<br />
end;<br />
</source><br />
<br />
Voir aussi<br />
<br />
{{Footer|ModelManager_(code)}}<br />
[[category:ModelManager]]<br />
[[Category:Configuration]]<br />
[[Category:Version710]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/AddConstraint_(selector)AddConstraint (selector)2019-03-14T15:39:58Z<p>Tdymon : </p>
<hr />
<div>{{Version800}}<br />
<br />
<source lang='delphi'>function AddConstraint(iParent:TSelectorConstraint; const iClassName:string; const iRightName:string; const iLeftName:string; const iWhere:string; const iArgs:Array of variant):TSelectorConstraint;</source><br />
<br />
Cette méthode définit une contrainte matérialisée par une jointure.<br />
<br />
{|class="wikitable"<br />
|-<br />
!Paramètre<br />
!Usage<br />
|-<br />
|Result<br />
|Un objet de type [[TSelectorConstraint (selector)|TSelectorConstraint]] matérialisant la contrainte<br />
|-<br />
|iParent<br />
|Contrainte parente<br />
|-<br />
|iClassName<br />
|Classe liée<br />
|-<br />
|iLeftName<br />
|Attribut gauche<br />
|-<br />
|iRightName<br />
|Attribut droit <br />
|-<br />
|iWhere<br />
|Clause Where de la jointure<br />
|-<br />
|iArgs<br />
|Paramètres de la clause Where<br />
|}<br />
<br />
*iParent<br />
:Une contrainte parente matérialisant la classe de droite<br />
:nil pour faire porter la contrainte sur la classe du sélecteur<br />
<br />
*iClassName<br />
:Une classe sur laquelle porte la contrainte<br />
<br />
*iLeftName<br />
:Un attribut de la classe de la contrainte (iClassName) portant la contrainte<br />
<br />
*iRightName<br />
:Un attribut de la classe de droite, du parent ou du sélecteur, portant la contrainte<br />
<br />
*iWhere<br />
:Clause where de la contrainte, la clause where est exprimée par rapport à la classe de la contrainte (iClassName). Les rôles NE sont pas évalués, il faut passer impérativement par [[AliasOf (exp)|AliasOf]] au besoin. Voir ci-dessous.<br />
<br />
*iArgs<br />
:Arguments de la contrainte<br />
<br />
{{warning|Les clauses Where sur les jointures ne sont pas évaluées en objet, en général ces clauses correspondent à des filtres sur les relations. Ceci peut avoir un effet de bord lorsque le sélecteur est utilisé pour générer une liste, parce qu'il peut exister en mémoire des objets qui seront inclus dans le résultat malgré le fait que les conditions de jointures ne sont pas remplies. Pour éviter cet effet de bord, utilisez le sélecteur pour générer un curseur qui ne synchronise pas le résultat avec les objets en mémoire.}}<br />
<br />
Exemple :<br />
<br />
<source lang="delphi"><br />
function doSelector(const iCodeA:string; const iCodeB:string):Integer;<br />
var selA:TSelector; obj:TSelectorConstraint;<br />
begin<br />
selA := ClassA.CreateSelector('unCodeA=%1','unCodeA',True,[iCodeA]);<br />
obj := selA.AddConstraint(nil, 'ClassB','oid','refB','unCodeB=%1',[iCodeB]); // obj.Name='S1'<br />
Result := selA.Count;<br />
end;<br />
</source><br />
<br />
Cette contrainte va générer le code SQL suivant :<br />
<br />
<pre><br />
select * from CLASSA t0 <br />
join CLASSB t1 on (t1.oid=t0.refB) and (unCodeB='iCodeB')<br />
</pre><br />
<br />
<br />
Voir aussi :<br />
<br />
* [[TSelectorConstraint (selector)|Contrainte sur un sélecteur]]<br />
* [[AliasOf (exp)|AliasOf (expression)]]<br />
<br />
{{Footer|Selecteur (tech)}}<br />
[[category:Sélecteur]]<br />
[[Category:Version800]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/API_(partage)API (partage)2019-02-28T15:59:52Z<p>Tdymon : /* Exemples */</p>
<hr />
<div>== Contexte de partage==<br />
{{:Contexte_de_partage_(code)}}<br />
<br />
== Attributs de partage sur un objet métier ==<br />
<br />
{{:Attributs de partage (Instance)}}<br />
<br />
== Déclenchement de règle sur un changement du niveau de partage ==<br />
<br />
Utiliser ShareLevel comme déclencheur.<br />
<br />
== API du ClassManager ==<br />
{{:API_de_partage_(CM)}}<br />
<br />
===Exemples===<br />
<source lang="delphi"><br />
//Procedure _TestShareAPI;<br />
var idx : Integer; <br />
s : String;<br />
stag : String;<br />
save : String;<br />
vStr : String;<br />
<br />
Function EvalBoolean(aBool:Boolean):String;<br />
Begin<br />
if aBool then<br />
Result := 'Oui'<br />
else<br />
Result := 'Non';<br />
End;<br />
<br />
begin<br />
stag := #10;<br />
s := stag + Format(_TP('Mode Restitution : %s'), [EvalBoolean(ClassManager.ShareRestitutionMode)]);<br />
s := s+stag + Format(_TP('Mode Groupe (Dossier) : %s'), [EvalBoolean(ClassManager.ShareGroupMode)]);<br />
//<br />
s := s+stag + Format(_TP('Groupe (oid) : %s'), [ClassManager.ShareGroup]);<br />
//<br />
s := s+stag + Format(_TP('Groupe (périmètre) : %s'), [ClassManager.ShareGroupPerimeter.Caption]);<br />
//<br />
s := s+stag + Format(_TP('Societé actuelle (oid) : %s'), [ClassManager.ShareSociety]);<br />
//<br />
s := s+stag + Format(_TP('Societé actuelle (périmètre) : %s'), [ClassManager.ShareSocietyPerimeter.Caption]);<br />
//<br />
s := s+stag+'Liste de Restitutions : ';<br />
for idx:=0 to ClassManager.ShareRestitutionSocietyCount-1 do<br />
s := s+stag+ClassManager.ShareRestitutionSocieties[idx];<br />
//<br />
s := s+stag+'Liste de Société(s) de l''utilisateur (oids)';<br />
for idx:=0 to ClassManager.ShareUserSocietyCount-1 do<br />
s := s+stag+ClassManager.ShareUserSocieties[idx];<br />
//<br />
s := s+stag+'Liste de Société(s) de l''utilisateur (name) : ';<br />
for idx:=0 to ClassManager.ShareUserSocietyCount-1 do<br />
s := s+stag+ClassManager.ShareUserSocietyPerimeters[idx].Caption;<br />
//<br />
s := s+stag+'Test commutation de la société courante :';<br />
save := ClassManager.ShareSociety;<br />
for idx:=0 to ClassManager.ShareUserSocietyCount-1 do<br />
Begin<br />
vStr := 'OK';<br />
try<br />
classmanager.sharesociety := classmanager.ShareUserSocieties[idx];<br />
except<br />
vStr := 'failed';<br />
end;<br />
s := s+stag+ Format('%s : %s', [classmanager.ShareUserSocietyPerimeters[idx].caption, vstr]);<br />
End;<br />
<br />
ClassManager.ShareSociety := save;<br />
ShowMessage(s);<br />
end;</source><br />
<br />
Traitement multi-société : <br />
<br />
<source lang="delphi"><br />
//Procedure ModifierClasseA;<br />
var idx,ido:Integer; ls:ClasseAList; ss,stag,SaveCtx:string; obj:ClasseA;<br />
begin<br />
ss := ''; stag := #13;<br />
SaveCtx := ClassManager.ShareSociety;<br />
try<br />
ClassManager.BeginTran;<br />
try<br />
for idx:=0 to ClassManager.ShareSocietyCount-1 do<br />
begin<br />
ClassManager.ShareSociety := ClassManager.ShareSocieties[idx];<br />
//<br />
ls := ClasseA.CreateList;<br />
ls.AddWhere('oidShare=%1','','Caption',True,-1,[ClassManager.ShareSociety]);<br />
for ido:=0 to ls.Count-1 do<br />
begin<br />
obj := ls.Refs[ido];<br />
obj.unEntier := obj.unEntier+1;<br />
ss := ss+stag+obj.uneChaine;<br />
stag := #13;<br />
end;<br />
end;<br />
showMessage(ss);<br />
ClassManager.Commit;<br />
except<br />
ClassManager.RollBack;<br />
end;<br />
finally<br />
ClassManager.ShareSociety := SaveCtx;<br />
end;<br />
end;<br />
</source><br />
<br />
==Variables globales d'environnement==<br />
<br />
Ces variables sont contenues dans le contexte de l'utilisateur<br />
<br />
{{:Paramètres_de_partage_(Paramètres)}}<br />
<br />
{{footer}}<br />
[[Category:Partage]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/CreateSocietyPerimeter_(CM)CreateSocietyPerimeter (CM)2019-01-02T07:19:20Z<p>Tdymon : </p>
<hr />
<div><source lang='delphi'>procedure CreateSocietyPerimeter(const iName:string);</source><br />
<br />
Cette procédure crée un périmètre société :<br />
*Création d'une instance de périmètre de partage<br />
*Création des périmètres domaine pour chacun des domaines.<br />
*Affectation des droits d'accès à l'utilisateur courant.<br />
<br />
{{tip|Le processus de création n'est pas complet, les périmètres autorisés des domaines de type activité doivent être affectés.}}<br />
{{tip|Si l'utilisateur appartient à un groupe, le groupe aura les droits correspondants à la place de l'utilisateur.}}<br />
<br />
{|class="wikitable"<br />
|-<br />
|iName<br />
|Nom du périmètre société à créer<br />
|}<br />
<br />
'''Exemple :'''<br />
<source lang='delphi'><br />
begin<br />
end;<br />
</source><br />
<br />
{{Footer|Gestion du contexte de partage (CM)}}<br />
[[category:ClassManager]]<br />
[[category:CMSC]]<br />
[[category:Partage]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Script_de_partageScript de partage2018-12-31T08:22:13Z<p>Tdymon : </p>
<hr />
<div>Un script de partage est un script qui permet de créer les objets de partage d'une base de données multi-sociétés.<br />
<br />
{{info|Les script de partage sont utilisés dans le cadre de tests unitaires et destinés à être utilisés en conjonction avec des dossiers de tests unitaires Multi sociétés.}}<br />
<br />
Ils sont stockés dans le [[Contexte_de_test_unitaire_(testsuite)|contexte de test]].<br />
<br />
La syntaxe d'un script de partage est la suivante :<br />
<br />
'''Commande de création d'une activité sur un domaine métier :'''<br />
<br />
Nom_activité = ACTIVITY(Nom_du_domaine)<br />
<br />
'''Commande de création d'une société :'''<br />
<br />
Nom_société = SOCIETY( liste_de_définition_de_domaine )<br />
liste_de_définition_de domaine :: [définition_de_domaine ;]<br />
définition_de_domaine :: nom_de_domaine:périmètre_sur_ce_domaine<br />
périmètre_sur_ce_domaine :: nom_de_périmètre|self|group <br />
<br />
Exemple :<br />
<pre><br />
D1P1=ACTIVITY(Domaine1)<br />
D1P2=ACTIVITY(Domaine1)<br />
D1P3=ACTIVITY(Domaine1)<br />
D2P1=ACTIVITY(Domaine2)<br />
D2P2=ACTIVITY(Domaine2)<br />
D2P3=ACTIVITY(Domaine2)<br />
D3P1=ACTIVITY(Domaine3)<br />
D3P2=ACTIVITY(Domaine3)<br />
D3P3=ACTIVITY(Domaine3)<br />
S1=SOCIETY(Domaine1:D1P1;Domaine2:D2P1;Domaine3:D3P1)<br />
S2=SOCIETY(Domaine1:D1P2;Domaine2:D2P2;Domaine3:D3P2)<br />
S3=SOCIETY(Domaine1:D1P3;Domaine2:SELF;Domaine3:GROUP)<br />
</pre><br />
<br />
[[Category:Tests unitaires]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/ExecuteTestSuiteScript_(CM)ExecuteTestSuiteScript (CM)2018-12-28T08:21:41Z<p>Tdymon : </p>
<hr />
<div><source lang='delphi'>function ExecuteTestSuiteScript(dbi:TDatabaseInfo; const iTestSuiteEnvName:string; var errorMsg:string):boolean;</source><br />
<br />
Cette fonction initialise la base de données en exécutant le scripts de base de données associé à l'environnement de test.<br />
<br />
Si la base de données supporte le multi-société alors la fonction exécute le [[Script de partage|script de création des objets de partage]] associé à l'environnement de test.<br />
<br />
{|class="wikitable"<br />
|-<br />
|Result<br />
|True si l'initialisation s'est correctement réalisé<br />
|-<br />
|iTestSuiteEnvName<br />
|Le nom d'un [[Contexte de test unitaire (testsuite)|contexte de test]].<br />
|-<br />
|errorMsg<br />
|Le message d'erreur en cas d'erreur.<br />
|}<br />
<br />
Exemple<br />
<source lang='delphi'><br />
//Procedure Test_4_execute_script;<br />
var dbi:TDatabaseinfo;errorMsg:string;<br />
begin<br />
dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);<br />
Check(Assigned(dbi),'No database context');<br />
Abort(ClassManager.ExecuteTestSuiteScript(dbi,GlbTestSuiteEnvName,errorMsg),errorMsg);<br />
end;<br />
</source><br />
<br />
Voir aussi :<br />
<br />
* [[Script de partage|script de création des objets de partage]]<br />
<br />
* [[DropDatabase (CM)|DropDatabase]]<br />
* [[CreateDatabase (CM)|CreateDatabase]]<br />
* [[SyncDatabase (CM)|SyncDatabase]]<br />
* [[InitDatabase (CM)|InitDatabase]]<br />
* [[RegisterTestDatabase (CM)|RegisterTestDatabase]]<br />
<br />
{{Footer|Gestion des bases de données (CM)}}<br />
[[category:ClassManager]]<br />
[[category:CMTest]]<br />
[[category:Tests unitaires]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/InitDatabase_(CM)InitDatabase (CM)2018-12-28T08:20:39Z<p>Tdymon : </p>
<hr />
<div><source lang='delphi'>function InitDatabase(dbi:TDatabaseInfo):boolean;</source><br />
<br />
Cette fonction initialise la base de données du contexte passé en paramètre.<br />
<br />
L'initialisation consiste à créer les objets minimum pour que le framework fonctionne, cette initialisation correspond à un Dossier mono-société de devise de tenu compte Euro et de devise de reporting GBP.<br />
<br />
Ces objets sont :<br />
* La devise "Euro" (EUR)<br />
* La devise "British pound" (GBP)<br />
* la devise "United State Dollar" (USD)<br />
* Le paramètre DeviseTC qui défini la devise de tenu de compte à EUR<br />
* Le paramètre DeviseRP qui défini la devise de reporting à GBP<br />
<br />
{|class="wikitable"<br />
|-<br />
|Result<br />
|True si la création à réussi.<br />
|-<br />
|dbi<br />
|Le [[Contexte de base de données (code)|contexte de base de données]].<br />
|}<br />
<br />
{{info|Cette fonction est utile uniquement dans le cadre de l'exécution des tests unitaires}}<br />
<br />
Exemple :<br />
<br />
<source lang='delphi'><br />
//Procedure Test_5_init_database;<br />
var dbi:TDatabaseinfo;<br />
begin<br />
dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);<br />
Check(Assigned(dbi),'No database context');<br />
ClassManager.InitDatabase(dbi);<br />
end;<br />
</source><br />
<br />
Voir aussi :<br />
<br />
* [[DropDatabase (CM)|DropDatabase]]<br />
* [[CreateDatabase (CM)|CreateDatabase]]<br />
* [[SyncDatabase (CM)|SyncDatabase]]<br />
<br />
<br />
{{Footer|Gestion des bases de données (CM)}}<br />
[[category:ClassManager]]<br />
[[category:CMTest]]<br />
[[category:Tests unitaires]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Contexte_de_test_unitaire_(testsuite)Contexte de test unitaire (testsuite)2018-12-28T07:29:00Z<p>Tdymon : </p>
<hr />
<div>Le contexte de test unitaire est une classe du référentiel (TdbmTestSuiteEnv) qui permet de mutualiser les paramètres de test entre plusieurs développeurs.<br />
<br />
Cette classe comprend les attributs suivants : <br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom<br />
!Usage<br />
|-<br />
|Name<br />
|Nom de l'environnement de test<br />
|-<br />
|URL<br />
|Masque permettant de définir l'URL de la base de données<br />
|-<br />
|DatabaseBits<br />
|Identifiant de la base dans les OIDs (Entier positif)<br />
|-<br />
|ServerAddr<br />
|Identifiant du serveur dans les OIDs (12 caractères hexa)<br />
|-<br />
|BiSupport<br />
|La base supporte le pilotage<br />
|-<br />
|Compressed<br />
|La base est compressée (*)<br />
|-<br />
|IsExternal<br />
|Si la base est externe (*) ?<br />
|-<br />
|TextSupport<br />
|La base supporte les index de recherche texte<br />
|-<br />
|Unicode<br />
|La base est unicode (*)<br />
|-<br />
|ShareSupport<br />
|La base supporte le multi-société<br />
|-<br />
|ShareInitialisation<br />
| (**) ?<br />
|-<br />
|ShareInfos<br />
|Un [[Script_de_partage|script de définition des objets de partage]] pour une base multi-société. (**)<br />
|}<br />
<br />
(*) : si le serveur le supporte<br />
<br />
La fonction [[RegisterTestDatabase (CM)|RegisterTestDatabase]] utilise ces informations pour définir les caractéristiques de la base de données, l'URL de la base est construit à partir de l'attribut URL, qui doit donc être un masque incluant un %s pour la partie nom de base, et du nom de la base passé en paramètre.<br />
<br />
(**)<br />
<br />
La fonction [[ExecuteTestSuiteScript (CM)|ExecuteTestSuiteScript]] utilise ces informations pour initialiser la base de données.<br />
<br />
[[Category:Tests unitaires]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T15:23:12Z<p>Tdymon : /* Avant-Propos */</p>
<hr />
<div>{{Version800}}<br />
<br />
= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitements non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
<br />
'''Menu''' : ''Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
= Consultation et purge des logs de traitements =<br />
<br />
== Consultation ==<br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
=== Sans aucun filtre (Par défaut) ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
=== Filtre : ''Démarrage'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Exécution'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Informations'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Avertissements'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Erreurs'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Fatal'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Succès (fin du traitement)'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
<br />
== Purge ==<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T15:21:37Z<p>Tdymon : </p>
<hr />
<div>{{Version800}}<br />
<br />
= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
<br />
'''Menu''' : ''Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
= Consultation et purge des logs de traitements =<br />
<br />
== Consultation ==<br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
=== Sans aucun filtre (Par défaut) ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
=== Filtre : ''Démarrage'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Exécution'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Informations'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Avertissements'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Erreurs'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Fatal'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
=== Filtre : ''Succès (fin du traitement)'' ===<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
<br />
== Purge ==<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Ma%C3%AEtrise_du_pattern_d%27importationMaîtrise du pattern d'importation2018-11-20T14:28:42Z<p>Tdymon : </p>
<hr />
<div>{{Version700}}<br />
<br />
== Introduction ==<br />
<br />
Les éditions récentes de la ligne 1000 n'autorisent plus l'utilisation de rôle abstrait, et comme un certain nombre d'importations exploitent la classe abstraite '''TImportDonnee''', dans un certain nombre de situations où le rôle liste n'était pas préchargé en mémoire, le Framework se relevait incapable de retrouver les données via ce type de rôle.<br />
Pour remédier à cette situation, dans ce cas précis, on pouvait utiliser un curseur afin d'obtenir les données.<br />
<br />
A partir de la version 7.00, pour se prémunir de ce genre de situation, le pattern a été revu afin que l'on n'utilise plus la classe abstraite '''TImportDonnee''', afin de faire disparaître ce rôle abstrait.<br />
<br />
Pour parvenir à ce résultat, comme chaque session d'importation est typé et dérive de la classe de base '''TSessionImportation''', un nouveau rôle liste de type composition pointe vers sa classe de données d'importation, avec la particularité de conserver les mêmes noms que le rôle abstrait.<br />
<br />
A ce stade, un avantage de taille : chaque session dispose donc de données explicitement identifiées, et comme finalement le nom de rôle reste le même, au niveau SQL les attributs existants de la classe abstraite ne changeant pas, il n'y a pas besoin de faire de changement de données.<br />
<br />
On a profité de ce changement de pattern également afin de supprimer l'utilisation de cette classe abstraite '''TImportDonnee''' non seulement sur les classes utilisatrices, mais également sur quelques classes qui en héritaient sans aucune utilisation ni aucun besoin, ceci afin d'assainir le modèle : cas généralement des classes de conversions introduite dans la version 6.20.<br />
<br />
De plus, par exemple dans le cas d'importation des remises bancaires comme pour les relevés divers, a été introduit le séquençage des rôles listes afin de pouvoir traiter les objets dans l'ordre où ils ont été reçus, voir l'annexe à ce sujet pour plus de détail. <br />
<br />
'''Important :''' L'ancienne classe '''TImportDonnee''' a été maintenue afin de détecter les utilisations qui peuvent encore exister dans d'autres développements, sachant que cette classe obsolète n’a plus qu'une unique règle afin de provoquer une erreur d’exécution si on essaye de l'instancier. <br />
<br />
Cette classe a été supprimée dans la version 8.00 car elle n'avait plus lieu d'être.<br />
<br />
== Mise en œuvre du nouveau pattern d'importation ==<br />
<br />
Décrivons maintenant le protocole nécessaire à mettre en œuvre afin de bénéficier de ce mécanisme.<br />
On doit obligatoirement, pour des raisons de simplicité et de compatibilité, prendre une session qui dérive de la classe de base '''TSessionImportation'''.<br />
<br />
* Chaque session doit :<br />
** Déclarer un rôle liste de type composition ''ImportDonneeList'' de la classe d'importation.<br />
** Surcharger la règle de dérivation ''Derivation_classNameImport'' afin de définir la classe de données d'import.<br />
** Surcharger la méthode ''IGetImportDonneeList'' afin de retourner le rôle liste correspondant.<br />
** La session peut également optionnellement surcharger la nouvelle méthode ''ISupprimerImportDonnee'' qui contient actuellement un curseur de suppression génétique supprimant les données de la session, méthode annulant et remplaçant les anciennes méthodes donc une qui exploitait un broker, que l'on doit éviter au maximum désormais d'utiliser. '''N'utiliser cette possibilité que si votre traitement le nécessite vraiment.'''<br />
<br />
* La classe d'importation associée doit :<br />
** Implémenter la nouvelle interface ''IImportDonnee''.<br />
** Avoir le rôle référence sur la session nommé ''SessionImportation'', c'est ce que l'on appelle dans cette situation un rôle [[ReciprocalRoleName_(Instance)|réciproque]].<br />
** Renseigner la méthode ''IGetSessionImportation'' qui retourne ''SessionImportation''.<br />
** Renseigner la méthode ''ISetSessionImportation'' qui positionne la session d'importation.<br />
<br />
Note : Si on désirerait traiter des données d'importations hybrides, il faudrait alors fournir une classe racine.<br />
<br />
== Exemple d'un cas d'utilisation de l'ancien pattern d'importation ==<br />
[[Fichier:Import6.50_TImportDonnee.jpg|Exemple d'utilisation de l'ancien pattern d'importation]]<br />
<br />
== Exemple d'un cas d'utilisation du nouveau pattern d'importation ==<br />
<br />
[[Fichier:ImportTahoe_IImportDonnee.jpg|Exemple d'utilisation du nouveau pattern d'importation]]<br />
<br />
=== Exemple de code pour l'implémentation de la session '''TSessionImportationPieceFacture''' ===<br />
<source lang='delphi'><br />
//Function IGetImportDonneeList():IImportDonneeList;<br />
begin<br />
Result := ImportDonneeList;<br />
end;<br />
<br />
//procedure Derivation_classNameImport:boolean;<br />
begin<br />
Result := 'TImportPieceFacture';<br />
end;<br />
</source><br />
<br />
=== Exemple de code pour l'implémentation de la classe d'importation '''TImportPieceFacture''' ===<br />
<br />
On remarquera que cette partie de code est généralement la même pour l'implémentation de chaque classe d'importation.<br />
<br />
<source lang='delphi'><br />
//Function IGetSessionImportation():ISessionImportation;<br />
begin<br />
Result := SessionImportation;<br />
end;<br />
<br />
//Procedure ISetSessionImportation(aSessionImportation:ISessionImportation);<br />
begin<br />
SessionImportation := aSessionImportation;<br />
end;<br />
</source><br />
<br />
== Remarques ==<br />
=== Remarque concernant l'utilisation du nouveau pattern ===<br />
Actuellement, si on n'utilise pas un curseur pour récupérer le rôle liste ou réciproque, étant donnée que désormais le rôle a été déplacé de la session racine '''TSessionImportation''' vers par exemple '''TSessionImportPieceFacture''', on ne peut plus accéder directement à ce rôle ou à son attribut réciproque ''oidSessionImportation'', il est indispensable de s'en prémunir.<br />
<br />
Pour cela, dans la mesure du possible, il faut utiliser directement dans notre exemple '''TSessionImportPieceFacture'''.<br />
<br />
Au cas où on devrait malgré tout travailler avec la classe de base '''TSessionImportation''', on peut manipuler l'attribut réciproque ''oidSessionImportation'' via un ''PropAsVariant'', méthode utilisée par exemple par le processus de base d'importation '''TProcessusImport''' ou pour le moteur d'importation obsolète '''TProcessusIntegrFichier'''.<br />
<br />
=== Remarque concernant le plan de test ===<br />
Félicitations, vous venez de migrer votre processus d'importation, maintenant il nous reste à vérifier que l'on n'a rien oublié.<br />
<br />
L'import est réputé fonctionner s'il respecte les règles suivantes :<br />
* L'importation doit se dérouler sans aucun problème pour les éléments corrects.<br />
* L'importation doit rejeter dans la session d'import les éléments problématiques pour les traitements supportant la notion de reprise.<br />
* De même, la visualisation de ces éléments en erreur doit toujours être opérationnel si cette fonctionnalité existait précédemment.<br />
<br />
Pour simplifier, une importation fonctionnelle dans la version 6.50 devra se comporter de la même façon sous les versions suivantes, hormis modification possible des exigences naturellement.<br />
<br />
== Annexes ==<br />
<br />
=== Le séquençage et son implémentation ===<br />
Il existe une possibilité offerte par le Framework qui est d'utiliser un incrément : pour cela on doit déclarer un attribut entier sur les objets de la liste, dans mon cas ''indexRole'', de préciser l'incrément et de ne surtout pas oublier de cocher la case "Ce rôle est ordonné sur l'attribut de tri".<br />
<br />
A partir de ce moment, tout ajout à la liste avec l'instruction de rôle explicite ''AddRef'' provoquera l'incrément de ce compteur, et dès lors que l'on parcourera ce rôle, l'ordre de tri ne sera plus ''oid'' mais ''indexRole'', sachant qu'une limitation du Framework sur l'attribut de tri dans le cas est limité à un unique attribut, même si la requête SQL générée utilisera bien comme tri ''indexRole'',''oid''.<br />
<br />
Actuellement, ce mécanisme a été rendu disponible pour les importations basés sur '''TSessionImportation''' par l'ajout de l'attribut ''indexRole'' mais n'a pas été implémenté puisque le moteur de format outils se prémunit des problème de séquencage par tirage immédiat de l'''oid''.<br />
<br />
Pour mémoire, si on ne respecte pas la méthode de création, il incombera au programmeur soit d'alimenter lui-même l'index rôle, soit d'utiliser un rôle provenant par exemple d'un curseur, avec tri explicite genre ''UpdStamp'',''indexRole'',''oid'' afin de s'affranchir de cette limitation.<br />
<br />
[[Fichier:ImportTahoe_RoleListSequence.jpg|Exemple de déclaration d'un séquençage sur rôle liste]]<br />
<br />
=== Exemple déclaration de rôle ===<br />
[[Fichier:RoleBaseImport_Tahoe.jpg|Exemple d'utilisation du nouveau pattern d'importation]]<br />
<br />
=== Exemple diagramme métier ===<br />
[[Fichier:SchemaMetierImportType.jpg|Exemple d'utilisation du nouveau pattern d'importation]]<br />
<br />
=== Référence croisée des sessions importations et des classes d'importations ===<br />
[[Fichier:RefCroiseeImport_Tahoe.jpg|Exemple d'utilisation du nouveau pattern d'importation]]<br />
<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Param%C3%A9trage_et_traitement_d%27importationParamétrage et traitement d'importation2018-11-20T13:10:04Z<p>Tdymon : </p>
<hr />
<div>{{Version700}}<br />
<br />
== Introduction ==<br />
<br />
Dans les versions antérieures à la version 7.00, il est possible d'associer à un traitement d'importation une classe de paramètres, qui peut être obligatoire selon la volonté du concepteur.<br />
<br />
Généralement, ceci se concrétise par un processus dérivé de la base '''TProcessusImport''', qui possède un rôle ''ParametreImport'' sur une classe basée sur '''TParametreImport'''.<br />
<br />
Ce paramètre est généralement mémorisé sur une session basé sur la classe '''TSessionImportation''', sachant que les données qui diffères sont généralement stockées sur la session, comme le nom du fichier quand ceci s'avère nécessaire.<br />
<br />
Le modèle a été revu afin de conserver le mécanisme de stockage et de pouvoir passer au processus un paramètre qui ne respecte pas nécessaire le modèle d'entré initiale, dans le cas où il est nécessaire de passer des données qui seront utiles uniquement le temps du traitement.<br />
<br />
Afin d'obtenir cette mécanique, il a été prévu une nouvelle interface '''IGParametreImportBase''', et le rôle ''ParametreImport'' de la classe de base '''TProcessusImportation''' a été revue afin d'utiliser cette interface.<br />
<br />
Cette interface a été implémentée sur la classe de base '''TParametreImport''', et sera également exploitée pour toute classe de paramètre qui sera communiqué au processus pour le traitement.<br />
<br />
Note: en cas de reprise de session, on retombe dans le cas courant, le rôle utilisera nécessaire une classe dérivé de '''TParametreImport''' puisque issu directement de la session.<br />
<br />
Cette mécanique devra également prendre en compte toutes spécificités des classes dérivées.<br />
<br />
== Mise en œuvre sur le modèle d'importation ==<br />
<br />
Décrivons maintenant le protocole nécessaire à mettre en œuvre afin de bénéficier de ce mécanisme.<br />
<br />
* Prérequis :<br />
** La méthode surchargeable ''_InitialiseClasseImportDonnee'' doit initialiser le nom de la classe d’import des données.<br />
** La méthode surchargeable ''_InitialiseClasseSessionImport'' doit initialiser la classe de session d’import des données.<br />
** La méthode surchargeable ''GetLibelleSession'' doit retourner le libellé de session.<br />
** La classe '''TParametreImport''' implémente l’interface : elle retourne ses propres valeurs et sa référence.<br />
** La classe de paramètre fournie au processus doit implémenter l’interface : les valeurs sont retournées depuis cette classe ainsi que le paramètre « générique » sur la classe basée '''TParametreImport'''.<br />
<br />
* Modification du processus de base '''TProcessusImport''' et de ses dérivations :<br />
** Le rôle ''ParametreImport'' ne référencie plus un objet basé '''TParametreImport''' mais sur la nouvelle interface '''IGParametreImportBase'''.<br />
** Une nouvelle méthode surchargeable ''ChargerDepuisParametreImport'' charge les valeurs par défaut depuis le rôle via les méthodes d’interfaces et retourne également le paramètre basé '''TParametreImport''' afin que les surcharges puissent extraire les paramètres complémentaires de la classe dérivée.<br />
** Une nouvelle règle d’action ''Action_ParametreImport'' charge les paramètres sur modification du rôle par l’appel de ''ChargerDepuisParametreImport''. '''ATTENTION :''' Toutes les règles métiers de valeur par défaut (etc) ne doivent plus être employées, il faut si nécessaire surcharger cette méthode afin de compléter le chargement.<br />
** La méthode surchargeable ''CreerSessionImport'' doit récupérer tous les paramètres utiles depuis le rôle en exploitant l’interface, et retourne le paramètre basé '''TParametreImport''' qui sera stocké dans la session. La session doit mémoriser toutes les données nécessaires que l’utilisateur ou le processus peut avoir modifié.<br />
<br />
Désormais, lorsque le processus ou sa dérivation doit accéder aux données du paramétrage, il doit obligatoirement passer par le rôle du processus afin d'utiliser les méthodes de la nouvelle interface, et ne plus lire directement les données depuis le paramétrage.<br />
<br />
Quand on a besoin d'accéder aux données de la classe dérivée, il convient d'utiliser la méthode ''IGetParametreImport'' qui doit retourner une classe basée sur '''TParametreImport''', dans le cas général ou d'une reprise, c'est la référence de l'instance de la classe elle même.<br />
<br />
Toutes les données requises doivent être retournées par l'interface, car on ne doit pas accéder aux valeurs sur la classe retournés, excepté dans le cas où l'on a besoin de lire des éléments non supporté par la classe d'interface, comme le sont généralement les attributs ajoutés aux classes dérivées.<br />
<br />
== Exemple d'un cas d'utilisation de l'ancien pattern d'importation des relevés divers ==<br />
Il était prévu que l'on puisse mémorise le nom du fichier ou les données WS SCB, que l'on pouvait associer à plus d'une banque sachant que dans la réalité, un contrat WS retourne de fait les données du serveur bancaire référencie pour le contrat prévu : de fait, le paramètre ne devrait être utilisé que pour une banque.<br />
<br />
[[Fichier:modele_importrelvdiv_pretahoe.jpg|Exemple d'importation dans l'ancien pattern]]<br />
<br />
== Exemple d'un cas d'utilisation du nouveau pattern d'importation ==<br />
Désormais, les données locales ont été migrées vers la classe '''TParametreImportBanque''', ce qui a permis effectivement que chaque établissement bancaire possède ses propres données, qui exploite un paramètre devenu générique qui décrit un format pour la traduction du fichier, et que l'on peut désormais réutiliser sans aucun problème pour toute banque utilisant ce format.<br />
<br />
De plus, la possibilité d'exploiter ce paramètre aussi bien en réception WS qu'en importation de fichier conventionnelle réduit encore le nombre de création du paramètre puisque le nom n'est utilisable que pour l'importation en fichier.<br />
<br />
[[Fichier:modele_importreldiv.jpg|Exemple d'importation de relevé divers dans le nouveau pattern]]<br />
<br />
== Annexes ==<br />
<br />
=== Interface '''IGParametreImportBase''' ===<br />
[[Fichier:Interface_liaison_igparametreimportbase.jpg|Interface '''IGParametreImportBase''']]<br />
<br />
<br />
== Voir aussi ==<br />
*[[Traitement du Log|Traitement du Log]].<br />
*[[Maîtrise du pattern d'importation|Maîtrise du pattern d'importation]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Cat%C3%A9gorie:LogsCatégorie:Logs2018-11-20T13:08:43Z<p>Tdymon : Regroupement des articles sur les Logs</p>
<hr />
<div>Cette session regroupe tous les articles ayant trait aux logs.</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Traitement_du_LogTraitement du Log2018-11-20T13:01:05Z<p>Tdymon : /* Introduction */</p>
<hr />
<div>{{Version800}}<br />
<br />
= Introduction =<br />
<br />
'''Ce document est à destination des programmeurs désirant utiliser ou désirant sous une forme plus avancé implémenter leur propre serveur de Log dans leur processus.'''<br />
<br />
Le processus des logs de traitements, anciennement appelés traitements d’importations, a été revu et mutualisé afin de faciliter son implémentation, sa maintenance, et son contrôle.<br />
<br />
Ces éléments sont pour aider le support, nos partenaires et éventuellement, nos clients eux-mêmes sur ce qui s'est passé.<br />
<br />
Je vais donc détailler ici-bas la mise en œuvre de cette fonctionnalité, qui n’a pas changée dans le fond mais donc la portée a été accrue.<br />
<br />
L'objectif est de pouvoir disposer d'un log permanent de traitement afin de permettre de restituer ce qui s'est passé au cours de l’exécution, y compris quand on lance d’autres traitements, comme par exemple, l’intégration des remises bancaires avec constitution.<br />
<br />
Ceci est introduit par la possibilité de supporter le log par '''n''' traitement enfant, et ceci en cascade.<br />
<br />
On appréciera le fait que comme le traitement du log se fait dans un contexte transactionnel séparé, celui-ci sera préservé même en cas de rollback.<br />
<br />
De plus, pour un traitement d’importation, on pourra également consulter le log directement sur la session auquel il est associé, quand cela est possible.<br />
<br />
Précisons également l'introduction des stratégies gérant le regroupement du log ainsi que le débogage des formats via un écran de paramétrage (pour plus d'informations, consulter l'annexe correspondante).<br />
<br />
= Mise en œuvre =<br />
<br />
La mise en œuvre est relativement simple et l’implémentation se résume actuellement à implémenter le contrat d’interface '''IProcessusLoggable''', son affectation important automatiquement la majeure partie du code nécessaire), et respecter quelques règles.<br />
<br />
'''Les cas sont les suivants :'''<br />
* Dériver d’un processus parent qui supporte déjà l’interface (le plus simple) : <br />
** Surcharger éventuellement la règle de valeur initiale ''ValeurInitiale_estDebugLog'' afin d’activer (ou non) la fonctionnalité de débogage des formats. Normalement inutile.<br />
** Surcharger éventuellement la règle de valeur initiale ''ValeurInitiale_enableLog'' afin d’activer (ou non) la fonctionnalité.<br />
** Surcharger la méthode protégée ''GetLibelleSession'' afin de redéfinir le libellé du traitement.<br />
<br />
* Implémenter judicieusement la fonctionnalité sur une classe parente :<br />
** On ajoute l’interface '''IProcessusLoggeable'''.<br />
** On crée la règle d’action ''Action_Initialisation'' en déclenchement en initialisation des attributs (code en annexe).<br />
** On crée la règle de valeur initiale ''ValeurInitiale_estDebugLogLog'' à '''False''' par défaut. Sert à activer la fonctionnalité de débogage des formats.<br />
** On modifie la méthode protégée surchargeable ''GetLibelleSession'' afin de définir un autre libellé de traitement par défaut.<br />
** Utiliser les fonctions mises à disposition comme le trio ''StartLog'', ''ReleaseLog'', ''ILogEvt_Finalisation'' sur une fonction ''Executer'' (Cf. exemple pour plus de détail).<br />
<br />
* Implémenter la fonctionnalité directement sur notre classe :<br />
** Identique à précédemment.<br />
<br />
Il ne restera généralement ensuite plus qu'à remplacer l'instruction '''ProgressMessage''' par '''ProgressAndLog''' pour chaque message.<br />
<br />
'''A noter :''' Dans certains cas, il peut exister des attributs et/ou des méthodes à supprimer avant de poser l'interface, car conflit avec celle ci, comme, par exemple, ''ILogEvt_*''...<br />
<br />
== Informations techniques avancées ==<br />
<br />
Pour pouvoir bénéficier de ce mécanisme, des interfaces '''IProcessusLoggable''' (le client), '''IProcessusLog''' (le serveur) et '''ILog''' (le log pour le serveur) ont été créés afin de pouvoir bénéficier de cet apport fonctionnel.<br />
<br />
De plus, l’interface '''ISessionImportation''' ajoute désormais le rôle ''LogTnx'' vers la classe '''ILog''', afin de remplacer l'ancien attribut string ''idLogTnx'' qui n’y était pas indiqué mais exploité, mais ce n'était pas un méthode correcte.<br />
<br />
Le nouveau processus '''TProcessusLog''' implémente '''IProcessusLog''' afin de fournir le serveur de service pour le support de la fonctionnalité pour tous les traitements qui en auraient besoin.<br />
<br />
Actuellement les clients implémentant '''IProcessusLoggable''' au moment de la rédaction de cette article sont :<br />
* '''TProcessusComptaDeclarationTVA'''. <br />
* '''TProcessusEpuration'''.<br />
* '''TProcessusGestionDesSectionsEtDestinations'''.<br />
* '''TProcessusImport'''.<br />
* '''TProcessusImportGen'''.<br />
* '''TProcessusMAJPlanGroupe'''.<br />
* '''TProcessusSelection'''.<br />
* '''TProcessusSelectionVue'''.<br />
<br />
=== Détail de l'implémentation du client initial par le programmeur ===<br />
<br />
Cette fonctionnalité ayant été introduite par le support de '''IProcessusLoggable''' afin d'initier le log sur tous les traitements selon l'usage suivant : <br />
* ''Action_Initialisation'' : Cette règle d'action sur initialisation des attributs, qui crée le serveur qui doit '''TOUJOURS''' exister.<br />
* ''GetLibelleSession'' : Cette fonction publique surchargeable peut être modifiée afin d'obtenir un libellé de traitement unique.<br />
* ''LogEvt_Finalisation'' : Cette fonction protégée est généralement appelée à la fin d'une fonction ''Executer'' pour actualiser les statistiques du nombre d'éléments traités via l'attribut ''logEvtNombreElements'' et du temps du traitement.<br />
* ''LogEvt_FinalisationEx'' : Même chose que la fonction ''LogEvt_Finalisation'', en permettant de remplacer le libellé par défaut des statistiques.<br />
* ''ReleaseLog'' : Cette fonction protégée permettant de "fermer" et libérer le log doit être appelée dans le cas d'une fonction ''Executer'' par exemple. Retourne True si un log a été clos, excepté si cas d'un parent.<br />
* ''StartLog'' : Cette fonction protégée permettant d'initialiser log doit être appelée dans le cas d'une fonction ''Executer'' par exemple. Retourne True si OK.<br />
* ''ValeurInitiale_enableLog'' : Cette règle de valeur initiale est à surcharger au besoin afin indiquer si le traitement doit être loggé.<br />
* Supplément importation : La méthode surchargeable '''TProcessusImport'''.''CreerSessionImport'' assigne pour la session en prime la référence du log existant sur le serveur par l’intermédiaire de sa fonction ''ISetSessionRefLogTnx''.<br />
<br />
Au moment de la rédaction de cette article, l'affichage de la session d'importation des remises bancaires, des relevés divers, des relevés de notifications, des relevés de cartes et de coordonnées bancaires permet d'afficher ce log via un filtre directement sur la session pour des raisons de facilités.<br />
<br />
Notons que si l'implémentation de cette méthodologie a été appliquée en partie aux moyens de paiement, à la L&D, à la trésorerie (...) elle n'a pas été approfondie, il faudra la développer pour en bénéficier totalement. <br />
<br />
=== Détail du contrat d'interface '''IProcessusLoggable''' ===<br />
<br />
L’interface '''IProcessusLoggable''' cliente dispose de méthodes de classe qui permettent de créer le log, d’actualiser la référence de session pour les importation, d'ajouter des entrées, et de clore le log selon les principes suivants : <br />
* L’attribut ''estDebugLog'', qui devra être initialisé au besoin.<br />
* L’attribut ''enableLog'', qui devra être initialisé au besoin.<br />
* L’attribut ''libelleSession'' (et ''Caption'') qui mémorise le libellé du traitement, initialisé par le serveur. <br />
* L’attribut long ''logEvtNombreElements'' qui transmettra le nombre d’éléments traités. Il est à la charge du programmeur de l'alimenter avant d'appeler ''LogEvt_Finalisation''.<br />
* Le rôle ''ProcessusLog'' référençant le serveur du traitement.<br />
* ''DetachLogTnx'' : Permet au processus appelant de détacher le log qu'il avait précédemment attaché via ''SetLogTnx''. Retourne True si OK.<br />
* ''GetLibelleSession'' : Fonction publique surchargeable appelée par le serveur lors du traitement afin d’obtenir le libellée applicatif.<br />
* ''Log'' : Permet l'ajout d'un message au log avec son état, le serveur ajoutant également la date et heure. <br />
* ''LogEvt_Finalisation'' : Fonction protégée qui informe le serveur de la clôture du traitement, afin d'actualiser les statistiques.<br />
* ''LogEvt_FinalisationEx'' : Fonction protégée qui informe le serveur de la clôture du traitement avec un libellé de remplacement pour les statistiques, afin d'actualiser les statistiques.<br />
* ''LogEvt_Initialisation'' : Fonction surchargeable appelée par le serveur pour finaliser l’initialisation du log événementiel lors du traitement de ''IStartLog''.<br />
* ''LogTime'' : Message que l'on envoie vers le log système du Framework.<br />
* ''ProgressAndLog'' : Permet l'affichage et l'ajout d'un message au log avec son état, le serveur ajoutant également la date et heure. <br />
* ''ReleaseLog'' : Cette fonction demande la clôture du log, qui, du coté serveur, se contentera de renseigner la date du fin de traitement sur le log et de supprimer la référence correspondante afin que l'on ne puisse plus faire d'ajout dessus.<br />
* ''SetLogTnx'' : Permet l’attachement du processus appelant, via le serveur, qui, une fois réalisé, aura rattaché le log de l’appelant et désactivé ''enableLog'' en conséquence. Retourne OK si attachement effectuée.<br />
* ''StartLog'' : La création du log, qui notera la date de création du log, avec démarrage du loggage événementiel XML. Retourne True si OK.<br />
<br />
'''NOTE :''' La référence de l'objet appelant, la description (''Caption'') qui sera appliqué sur le log ainsi que le rôle matérialisé par l'attribut ''oidSessionImportation'' s'il existe, le serveur recevra en sortie l'identifiant du log nécessaire pour la suite du traitement.<br />
<br />
=== Détail du contrat d'interface '''IProcessusLog''' === <br />
<br />
L’interface '''IProcessusLog''' permet au client de transmettre ou de recevoir des informations du serveur (pour information) :<br />
* L’attribut privé ''estDebugLog'', qui mémorise l'état pris sur le client ou le parent lors de ''IStartLog'' ou ''ISetLogTnx''. La stratégie existante peut en forcer la valeur.<br />
* L’attribut privé ''enableLog'', qui mémorise l’état transmit par le client lors de ''IStartLog''.<br />
* L’attribut privé ''libelleSession'' qui mémorise le libellé du client lors du ''IStartLog''.<br />
* L'attribut public ''logEvtCleValeur'' qui restituera l'état statistique du traitement.<br />
* L'attribut privé ''logEvtTempsDepart'' qui mémorise le démarrage du traitement lors du ''IStartLog''.<br />
* L'attribut privé ''strategieStockageLog' qui mémorise la stratégie de stockage du log à appliquer, permettant d'outrepasser le standard en forcant l'activation / désactivation.<br />
* L'attribut privé ''strategieRegroupement' qui mémorise la stratégie de regroupement à appliquer pour les attachements, afin de les bloquer le cas échéant.<br />
* ''IGetEstActifRegroupementOptionnel : Retourne au client si le mode regroupement de log optionnel est disponible, ce qui permet à celui-ci de ne pas faire l'attachement car c'est à ce stade sa décision.<br />
* ''IGetOidLogTnx'' : La possibilité d’obtenir la référence du log actif (il est préférable d’utiliser cette possibilité uniquement si on ne peut pas faire autrement).<br />
* ''IInitialise'' : Normalement appelée lors de ''StartLog'', doit éventuellement être appelé par le client pour préparer les données si celui-ci n'utilise pas le couple ''StartLog''/''ReleaseLog''.<br />
* ''ILog'' : L’implémentation pour ''Log''.<br />
* ''ILogDirect'' : L’implémentation dépréciée pour ''Log''.<br />
* ''ILogEvt_Finalisation'' : La finalisation surchargeable du temps de traitement pour ''LogEvt_Finalisation'' et ''LogEvt_FinalisationEx''.<br />
* ''ILogTime'' : L’implémentation pour ''LogTime''.<br />
* ''IProgressAndLog'' : L’implémentation pour ''ProgressAndLog''.<br />
* ''IReleaseLog'' : L’implémentation pour ''ReleaseLog'' .<br />
* ''ISetLogTnx'' : L’implémentation de ''SetLogTnx''.<br />
* ''ISetSessionRefLogTnx'': L’implémentation permet au client d’assigner la référence du log actif du serveur sur la session fournie en paramètre.<br />
* ''IStartLog'' : L’implémentation pour ''StartLog''.<br />
<br />
=== Détail de l'implémentation du processus '''TProcessusLog''' === <br />
<br />
Actuellement, le serveur est réalisé par le processus '''TProcessusLog''' avec les modalités complémentaires suivantes :<br />
* Le rôle ''LogTnx'' qui conserve la référence du Log.<br />
* L'implémentation de ''IInitialise'' qui recharge les paramètres via ''_RechargerParametres'', réapplique les stratégies applicables, dans la mesure du possible. Retourne True si OK.<br />
* L’implémentation de ''ILog'' mémorise les données via '''TLog'''.''AddEntry'' quand le Log a été démarré ou assigné.<br />
* L’implémentation de ''ILogDirect'' fait de même que ''ILog'', hormis qu'il créera le log si nécessaire. Cette méthode Log doit être appelée de préférence quand le log a été initialisé, car sinon elle peut être à l'origine de contentions (deadlock). C'est pourquoi il faut mieux s'abstenir de l'utiliser, ou, du moins en limiter l’usage, dans ce cadre précis.<br />
* L’implémentation de ''ILogEvt_Finalisation'' traite l’information ''logEvtNombreElements'' du client afin de finaliser le LogEvt.<br />
* L’implémentation de ''IStartLog'' mémorise ''enableLog'' et ''estDebugLog'' du client via ''IInitialise'', demande au client de fournir un libellé qui sera ensuite mémoriser simultanément sur le client et le serveur. <br />
* L’implémentation de ''IReleaseLog'' achève le traitement du log, uniquement si ''enableLog'' vaut '''TRUE''', ce qui n’est pas le cas lors d’un attachement. Retourne True si effectivement libéré.<br />
* L’implémentation de ''ISetLogTnx'' vérifie que le rôle LogTnx existe bien sur la référence serveur du client transmit avant d’initialiser ''enableLog'' sur FALSE et de réassigner le rôle, mais uniquement si celle-ci n’est pas le serveur lui-même. De plus, si les stratégies le permettent et que le parent est en mode ''estDebugLog'' = '''True''', la valeur sera appliquée au client existant. Retourne True si effectivement attaché.<br />
* La méthode privée ''_GetParametreLog'' qui retourne le singleton de paramétrage du log, en le créant si nécessaire.<br />
* La méthode privée ''_RechargerParametres'' qui recharge les paramètres du serveur, avec la recherche d'une exception qualifié lorsque que la gestion correspondante est active. Retourne False si erreur de lecture sur paramètres mais peut continuer.<br />
* La règle ''Action_ValeurInitialDepuisParametres'' qui provoque le chargement initial des paramètres par l'appel de ''_RechargerParametres'' lors de l'initialisation des attributs.<br />
* La régle ''ValeurInitiale_enableLog'' qui initialise ''enableLog'' sur '''False'''.<br />
* La règle ''ValeurInitiale_estDebugLog'' qui initialise ''estDebugLog'' sur ''False''.<br />
* La régle '' ValeurInitiale_libelleSession'' qui initialise ''libelleSession'' à une valeur par défaut.<br />
<br />
= Annexes =<br />
<br />
== Exemple de code pour la règle ''Action_Initialisation'' ==<br />
<br />
<source lang='delphi'><br />
//procedure Action_Initialisation:boolean;<br />
//Traite les tâches d'initialisations du module, traité par le serveur<br />
begin<br />
if Not Assigned(ProcessusLog) then<br />
ProcessusLog := TProcessusLog.Create;<br />
<br />
ProcessusLog.IInitialise(Self);<br />
end;<br />
</source><br />
<br />
== Base du modèle appliqué au processus de base d'importation ==<br />
[[Fichier:FichierBaseModeleImplementationLogV800.jpg|Exemple du modèle de la base de l'implémentation du log]]<br />
<br />
== Paramétrage des stratégies ==<br />
<br />
Les stratégies définissent comment l'instance du serveur doit se comporter en fonction des situations paramétrées.<br />
<br />
On peut accéder actuellement à l'écran de paramétrage via le menu de paramétrage des moyens de paiements : ''Paramètres -> Paramètres -> Paramètres Log''.<br />
<br />
Le paramétrage accepte la gestion des exceptions, qui, quand elle est activée, sera appliqué par le serveur afin de recherche une exception pour un traitement donné, qui peut fournir la stratégie selon ces règles :<br />
* La classe et l'utilisateur loggé sont renseignés sur l'exception.<br />
* Seule la classe est renseignée sur l'exception.<br />
* Seul l'utilisateur loggé est renseigné sur l'exception.<br />
* Le paramétrage global s'applique.<br />
<br />
=== Ecran de paramètres Logs ''emp_parametreslog'' ===<br />
On y accède via l'écran ''emp_parametreslog''.<br />
<br />
[[Fichier:Ecran_ParametresLog.jpg|Paramètres Log]]<br />
<br />
[[Fichier:Ecran_ParametresLogExceptions.jpg|Liste des exceptions]]<br />
<br />
=== Stratégie de stockage des logs ===<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le stockage et l'attachement du log par un parent du client et n'autorise pas celui-ci à activer le débogage du format.<br />
* Standard : Respecte le choix du client.<br />
* Activé : Force l'activation du log sur le client s'il le supporte.<br />
<br />
=== Stratégie de regroupement du log ===<br />
<br />
'''Disponible uniquement si la stratégie de stockage n'est pas désactivée.'''<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le regroupement du log du client (log autonome).<br />
* Standard : Applique le loggage standard du client, qui, s'il reçoit la demande d'attachement du log du parent, transmettra les informations sur ce log qui sera géré exclusivement par le parent.<br />
* Complet : Accepte également le loggage étendue, identique à la stratégie standard, hormis que le client reçoit '''True''' s'il vérifie que le chaînage optionnel est autorisée. Permet ainsi au programmeur de conditionner l'attachement.<br />
<br />
=== Stratégie de débogage des formats ===<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le débogage des formats du client et n'autorise pas celui-ci à activer le débogage du format.<br />
* Standard : Respecte le choix du client.<br />
* Local : Force l'activation du débogage sur le client.<br />
* Parent : Identique à standard, excepté si le client a été chaîné par un parent, auquel cas son choix prime.<br />
* Complet : Force l'activation du débogage sur le client ainsi que sur ses enfants attachés par ''IStartLog'.<br />
<br />
== Ecran de consultation générique des logs ''emp_consultationlogsessionimport'' ==<br />
On y accède via l'écran ''emp_consultationlogsessionimport''.<br />
Il permet de lister l'ensemble des logs existants dans le système, et de les supprimer.<br />
<br />
[[Fichier:Ecran_consultlogmain_sel.jpg|Consultation liste des logs]]<br />
<br />
[[Fichier:Ecran_consultlogmain_result.jpg|Consultation résultat liste des logs]]<br />
<br />
<br>Un double clic sur la ligne d'un log nous amène à l'écran de consultation de celui-ci.<br/><br />
<br />
[[Fichier:Ecran_consultlogdet_session.jpg|Consultation du log]]<br />
<br />
[[Fichier:Ecran_consultlogdet_result.jpg|Consultation résultat du log]]<br />
<br />
== Exemple d'implémentation sur l'écran d'affichage de la session d'importation des relevés de coordonnées bancaires ==<br />
<br />
[[Fichier:Ecran_sessionimprcoordbank_main.jpg|Consultation du log associé à la session]]<br />
<br />
[[Fichier:Ecran sessionimprcoordbank log.jpg|Consultation du log associé à la session]]<br />
<br />
== Débogage des formats ==<br />
<br />
Les nouveaux moteurs d'importation et de génération basés sur des formats peuvent retourner des informations supplémentaires dans le mémo du traitement, et dans le répertoire ''Log'' du container.<br />
<br />
Le paramètre adéquat (ou un bout de code) permettra d'activer ce mode particulier à la demande pour la mise au point de vos formats, ce qui constitue un passage ''plus que recommandé'' afin de finaliser la mise au point des formats.<br />
<br />
= Voir aussi =<br />
*[[Guide de l'Utilisateur sur le log de traitement|Guide de l'Utilisateur sur le log de traitement]].<br />
*[[Maîtrise du pattern d'importation|Maîtrise du pattern d'importation]].<br />
*[[Paramétrage et traitement d'importation|Paramétrage et traitement d'importation]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:57:23Z<p>Tdymon : /* Avant-Propos */</p>
<hr />
<div>{{Version800}}<br />
<br />
= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
<br />
'''Menu''' : ''Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/LogEvent_(rtl)LogEvent (rtl)2018-11-20T12:56:08Z<p>Tdymon : </p>
<hr />
<div>{{Version700}}<br />
<source lang='delphi'>function logEvent(const iCategory,iModuleName,iAction:string; const iKeys:Array of variant; const iValues:Array of variant; iDuration:Double):boolean;</source><br />
<br />
Cette fonction permet d'émettre un évènement vers l'enregistreur de log.<br />
<br />
{|class="wikitable"<br />
|-<br />
|Result<br />
|True : L'évènement a été transmis<br />
|-<br />
|iCategory<br />
|Catégorie de l'évènement.<br />
|-<br />
|iModuleName<br />
|Module de l'évènement.<br />
|-<br />
|iAction<br />
|Action associé à l'évènement.<br />
|-<br />
|iKeys<br />
|Tableau de clé<br />
|-<br />
|iValues<br />
|Tableau de valeur<br />
|-<br />
|iDuration<br />
|Information de durée liée à l'évènement<br />
|}<br />
<br />
Cet évènement positionne les attributs suivants : <br />
<br />
{|class="wikitable"<br />
|-<br />
!Nom de l'attribut<br />
!Valeur de l'attribut<br />
|-<br />
|actionCategory<br />
|iCategory<br />
|-<br />
|actionModule<br />
|iModule<br />
|-<br />
|actionName<br />
|iAction<br />
|-<br />
|actionLabel<br />
|iKeys[0]<br />
|-<br />
|actionValue<br />
|iValues[0]<br />
|}<br />
<br />
Ces attributs peuvent être utilisé dans les [[Gestion_des_évènements_(server)|handlers d'évènement]].<br />
<br />
<br />
Exemple :<br />
<br />
Voici la déclaration du handler envoyant ce type d'évènement vers Google Analytics.<br />
<br />
<pre><br />
[\SOFTWARE\Sage\Ligne 1000\Administration\LOGManager\GA_EVENT]<br />
type = http<br />
url = http://www.google-analytics.com/collect<br />
method = POST<br />
contentType = application/x-www-form-urlencoded<br />
accept = application/text<br />
keep-alive = 0<br />
categories = sysevent,confevent,taskevent,processevent,event<br />
content = t=event&v=1&tid=[gaUA]&cid=[DeviceID]&cd1=[CustomerID]&cd2=[appName]-[appVersion]&cd3=[id]&cd4=[UserID]&cd5=[systemOSInfoEx]& \<br />
ec=[actionCategory]&ea=[actionName]&el=[actionLabel]&ev=[actionValue]&cm1=[actionValue1]&cd6=[actionModule]<br />
</pre><br />
<br />
<br />
<source lang='delphi'><br />
begin<br />
logEvent('process','TProcessusComptabilisation',['Nbr. pièce','Nbr. ecriture'],[100,1000]);<br />
end;<br />
</source><br />
<br />
<source lang='delphi'><br />
//Procedure TestLogEvent;<br />
var idx:Integer; keys:Array of string; values:Array of variant; tk1,tk2:longint;<br />
begin<br />
tk1 := GetTickCount;<br />
for idx:=0 to 9 do<br />
begin<br />
Keys[idx] := 'event'+inttostr(idx);<br />
Values[idx] := idx;<br />
end;<br />
tk2 := GetTickCount;<br />
logEvent('process','GCF-Echeance',ClassName,Keys,Values,TicktoMS(tk2-tk1));<br />
end;<br />
</source><br />
<br />
{{tip|Ne pas passer de tableau statique, un type tableau statique n'est pas compatible avec un type tableau ouvert}}<br />
<br />
Voir aussi:<br />
<br />
* [[Tableaux_ouverts_(lang)|Tableaux ouverts]]<br />
<br />
{{Footer|Gestion_des_évènements_(server)}}<br />
[[category:Logger]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Traitement_du_LogTraitement du Log2018-11-20T12:52:18Z<p>Tdymon : /* Voir aussi */</p>
<hr />
<div>= Introduction =<br />
<br />
'''Ce document est à destination des programmeurs désirant utiliser ou désirant sous une forme plus avancé implémenter leur propre serveur de Log dans leur processus.'''<br />
<br />
Le processus des logs de traitements, anciennement appelés traitements d’importations, a été revu et mutualisé afin de faciliter son implémentation, sa maintenance, et son contrôle.<br />
<br />
Ces éléments sont pour aider le support, nos partenaires et éventuellement, nos clients eux-mêmes sur ce qui s'est passé.<br />
<br />
Je vais donc détailler ici-bas la mise en œuvre de cette fonctionnalité, qui n’a pas changée dans le fond mais donc la portée a été accrue.<br />
<br />
L'objectif est de pouvoir disposer d'un log permanent de traitement afin de permettre de restituer ce qui s'est passé au cours de l’exécution, y compris quand on lance d’autres traitements, comme par exemple, l’intégration des remises bancaires avec constitution.<br />
<br />
Ceci est introduit par la possibilité de supporter le log par '''n''' traitement enfant, et ceci en cascade.<br />
<br />
On appréciera le fait que comme le traitement du log se fait dans un contexte transactionnel séparé, celui-ci sera préservé même en cas de rollback.<br />
<br />
De plus, pour un traitement d’importation, on pourra également consulter le log directement sur la session auquel il est associé, quand cela est possible.<br />
<br />
Précisons également l'introduction des stratégies gérant le regroupement du log ainsi que le débogage des formats via un écran de paramétrage (pour plus d'informations, consulter l'annexe correspondante).<br />
<br />
= Mise en œuvre =<br />
<br />
La mise en œuvre est relativement simple et l’implémentation se résume actuellement à implémenter le contrat d’interface '''IProcessusLoggable''', son affectation important automatiquement la majeure partie du code nécessaire), et respecter quelques règles.<br />
<br />
'''Les cas sont les suivants :'''<br />
* Dériver d’un processus parent qui supporte déjà l’interface (le plus simple) : <br />
** Surcharger éventuellement la règle de valeur initiale ''ValeurInitiale_estDebugLog'' afin d’activer (ou non) la fonctionnalité de débogage des formats. Normalement inutile.<br />
** Surcharger éventuellement la règle de valeur initiale ''ValeurInitiale_enableLog'' afin d’activer (ou non) la fonctionnalité.<br />
** Surcharger la méthode protégée ''GetLibelleSession'' afin de redéfinir le libellé du traitement.<br />
<br />
* Implémenter judicieusement la fonctionnalité sur une classe parente :<br />
** On ajoute l’interface '''IProcessusLoggeable'''.<br />
** On crée la règle d’action ''Action_Initialisation'' en déclenchement en initialisation des attributs (code en annexe).<br />
** On crée la règle de valeur initiale ''ValeurInitiale_estDebugLogLog'' à '''False''' par défaut. Sert à activer la fonctionnalité de débogage des formats.<br />
** On modifie la méthode protégée surchargeable ''GetLibelleSession'' afin de définir un autre libellé de traitement par défaut.<br />
** Utiliser les fonctions mises à disposition comme le trio ''StartLog'', ''ReleaseLog'', ''ILogEvt_Finalisation'' sur une fonction ''Executer'' (Cf. exemple pour plus de détail).<br />
<br />
* Implémenter la fonctionnalité directement sur notre classe :<br />
** Identique à précédemment.<br />
<br />
Il ne restera généralement ensuite plus qu'à remplacer l'instruction '''ProgressMessage''' par '''ProgressAndLog''' pour chaque message.<br />
<br />
'''A noter :''' Dans certains cas, il peut exister des attributs et/ou des méthodes à supprimer avant de poser l'interface, car conflit avec celle ci, comme, par exemple, ''ILogEvt_*''...<br />
<br />
== Informations techniques avancées ==<br />
<br />
Pour pouvoir bénéficier de ce mécanisme, des interfaces '''IProcessusLoggable''' (le client), '''IProcessusLog''' (le serveur) et '''ILog''' (le log pour le serveur) ont été créés afin de pouvoir bénéficier de cet apport fonctionnel.<br />
<br />
De plus, l’interface '''ISessionImportation''' ajoute désormais le rôle ''LogTnx'' vers la classe '''ILog''', afin de remplacer l'ancien attribut string ''idLogTnx'' qui n’y était pas indiqué mais exploité, mais ce n'était pas un méthode correcte.<br />
<br />
Le nouveau processus '''TProcessusLog''' implémente '''IProcessusLog''' afin de fournir le serveur de service pour le support de la fonctionnalité pour tous les traitements qui en auraient besoin.<br />
<br />
Actuellement les clients implémentant '''IProcessusLoggable''' au moment de la rédaction de cette article sont :<br />
* '''TProcessusComptaDeclarationTVA'''. <br />
* '''TProcessusEpuration'''.<br />
* '''TProcessusGestionDesSectionsEtDestinations'''.<br />
* '''TProcessusImport'''.<br />
* '''TProcessusImportGen'''.<br />
* '''TProcessusMAJPlanGroupe'''.<br />
* '''TProcessusSelection'''.<br />
* '''TProcessusSelectionVue'''.<br />
<br />
=== Détail de l'implémentation du client initial par le programmeur ===<br />
<br />
Cette fonctionnalité ayant été introduite par le support de '''IProcessusLoggable''' afin d'initier le log sur tous les traitements selon l'usage suivant : <br />
* ''Action_Initialisation'' : Cette règle d'action sur initialisation des attributs, qui crée le serveur qui doit '''TOUJOURS''' exister.<br />
* ''GetLibelleSession'' : Cette fonction publique surchargeable peut être modifiée afin d'obtenir un libellé de traitement unique.<br />
* ''LogEvt_Finalisation'' : Cette fonction protégée est généralement appelée à la fin d'une fonction ''Executer'' pour actualiser les statistiques du nombre d'éléments traités via l'attribut ''logEvtNombreElements'' et du temps du traitement.<br />
* ''LogEvt_FinalisationEx'' : Même chose que la fonction ''LogEvt_Finalisation'', en permettant de remplacer le libellé par défaut des statistiques.<br />
* ''ReleaseLog'' : Cette fonction protégée permettant de "fermer" et libérer le log doit être appelée dans le cas d'une fonction ''Executer'' par exemple. Retourne True si un log a été clos, excepté si cas d'un parent.<br />
* ''StartLog'' : Cette fonction protégée permettant d'initialiser log doit être appelée dans le cas d'une fonction ''Executer'' par exemple. Retourne True si OK.<br />
* ''ValeurInitiale_enableLog'' : Cette règle de valeur initiale est à surcharger au besoin afin indiquer si le traitement doit être loggé.<br />
* Supplément importation : La méthode surchargeable '''TProcessusImport'''.''CreerSessionImport'' assigne pour la session en prime la référence du log existant sur le serveur par l’intermédiaire de sa fonction ''ISetSessionRefLogTnx''.<br />
<br />
Au moment de la rédaction de cette article, l'affichage de la session d'importation des remises bancaires, des relevés divers, des relevés de notifications, des relevés de cartes et de coordonnées bancaires permet d'afficher ce log via un filtre directement sur la session pour des raisons de facilités.<br />
<br />
Notons que si l'implémentation de cette méthodologie a été appliquée en partie aux moyens de paiement, à la L&D, à la trésorerie (...) elle n'a pas été approfondie, il faudra la développer pour en bénéficier totalement. <br />
<br />
=== Détail du contrat d'interface '''IProcessusLoggable''' ===<br />
<br />
L’interface '''IProcessusLoggable''' cliente dispose de méthodes de classe qui permettent de créer le log, d’actualiser la référence de session pour les importation, d'ajouter des entrées, et de clore le log selon les principes suivants : <br />
* L’attribut ''estDebugLog'', qui devra être initialisé au besoin.<br />
* L’attribut ''enableLog'', qui devra être initialisé au besoin.<br />
* L’attribut ''libelleSession'' (et ''Caption'') qui mémorise le libellé du traitement, initialisé par le serveur. <br />
* L’attribut long ''logEvtNombreElements'' qui transmettra le nombre d’éléments traités. Il est à la charge du programmeur de l'alimenter avant d'appeler ''LogEvt_Finalisation''.<br />
* Le rôle ''ProcessusLog'' référençant le serveur du traitement.<br />
* ''DetachLogTnx'' : Permet au processus appelant de détacher le log qu'il avait précédemment attaché via ''SetLogTnx''. Retourne True si OK.<br />
* ''GetLibelleSession'' : Fonction publique surchargeable appelée par le serveur lors du traitement afin d’obtenir le libellée applicatif.<br />
* ''Log'' : Permet l'ajout d'un message au log avec son état, le serveur ajoutant également la date et heure. <br />
* ''LogEvt_Finalisation'' : Fonction protégée qui informe le serveur de la clôture du traitement, afin d'actualiser les statistiques.<br />
* ''LogEvt_FinalisationEx'' : Fonction protégée qui informe le serveur de la clôture du traitement avec un libellé de remplacement pour les statistiques, afin d'actualiser les statistiques.<br />
* ''LogEvt_Initialisation'' : Fonction surchargeable appelée par le serveur pour finaliser l’initialisation du log événementiel lors du traitement de ''IStartLog''.<br />
* ''LogTime'' : Message que l'on envoie vers le log système du Framework.<br />
* ''ProgressAndLog'' : Permet l'affichage et l'ajout d'un message au log avec son état, le serveur ajoutant également la date et heure. <br />
* ''ReleaseLog'' : Cette fonction demande la clôture du log, qui, du coté serveur, se contentera de renseigner la date du fin de traitement sur le log et de supprimer la référence correspondante afin que l'on ne puisse plus faire d'ajout dessus.<br />
* ''SetLogTnx'' : Permet l’attachement du processus appelant, via le serveur, qui, une fois réalisé, aura rattaché le log de l’appelant et désactivé ''enableLog'' en conséquence. Retourne OK si attachement effectuée.<br />
* ''StartLog'' : La création du log, qui notera la date de création du log, avec démarrage du loggage événementiel XML. Retourne True si OK.<br />
<br />
'''NOTE :''' La référence de l'objet appelant, la description (''Caption'') qui sera appliqué sur le log ainsi que le rôle matérialisé par l'attribut ''oidSessionImportation'' s'il existe, le serveur recevra en sortie l'identifiant du log nécessaire pour la suite du traitement.<br />
<br />
=== Détail du contrat d'interface '''IProcessusLog''' === <br />
<br />
L’interface '''IProcessusLog''' permet au client de transmettre ou de recevoir des informations du serveur (pour information) :<br />
* L’attribut privé ''estDebugLog'', qui mémorise l'état pris sur le client ou le parent lors de ''IStartLog'' ou ''ISetLogTnx''. La stratégie existante peut en forcer la valeur.<br />
* L’attribut privé ''enableLog'', qui mémorise l’état transmit par le client lors de ''IStartLog''.<br />
* L’attribut privé ''libelleSession'' qui mémorise le libellé du client lors du ''IStartLog''.<br />
* L'attribut public ''logEvtCleValeur'' qui restituera l'état statistique du traitement.<br />
* L'attribut privé ''logEvtTempsDepart'' qui mémorise le démarrage du traitement lors du ''IStartLog''.<br />
* L'attribut privé ''strategieStockageLog' qui mémorise la stratégie de stockage du log à appliquer, permettant d'outrepasser le standard en forcant l'activation / désactivation.<br />
* L'attribut privé ''strategieRegroupement' qui mémorise la stratégie de regroupement à appliquer pour les attachements, afin de les bloquer le cas échéant.<br />
* ''IGetEstActifRegroupementOptionnel : Retourne au client si le mode regroupement de log optionnel est disponible, ce qui permet à celui-ci de ne pas faire l'attachement car c'est à ce stade sa décision.<br />
* ''IGetOidLogTnx'' : La possibilité d’obtenir la référence du log actif (il est préférable d’utiliser cette possibilité uniquement si on ne peut pas faire autrement).<br />
* ''IInitialise'' : Normalement appelée lors de ''StartLog'', doit éventuellement être appelé par le client pour préparer les données si celui-ci n'utilise pas le couple ''StartLog''/''ReleaseLog''.<br />
* ''ILog'' : L’implémentation pour ''Log''.<br />
* ''ILogDirect'' : L’implémentation dépréciée pour ''Log''.<br />
* ''ILogEvt_Finalisation'' : La finalisation surchargeable du temps de traitement pour ''LogEvt_Finalisation'' et ''LogEvt_FinalisationEx''.<br />
* ''ILogTime'' : L’implémentation pour ''LogTime''.<br />
* ''IProgressAndLog'' : L’implémentation pour ''ProgressAndLog''.<br />
* ''IReleaseLog'' : L’implémentation pour ''ReleaseLog'' .<br />
* ''ISetLogTnx'' : L’implémentation de ''SetLogTnx''.<br />
* ''ISetSessionRefLogTnx'': L’implémentation permet au client d’assigner la référence du log actif du serveur sur la session fournie en paramètre.<br />
* ''IStartLog'' : L’implémentation pour ''StartLog''.<br />
<br />
=== Détail de l'implémentation du processus '''TProcessusLog''' === <br />
<br />
Actuellement, le serveur est réalisé par le processus '''TProcessusLog''' avec les modalités complémentaires suivantes :<br />
* Le rôle ''LogTnx'' qui conserve la référence du Log.<br />
* L'implémentation de ''IInitialise'' qui recharge les paramètres via ''_RechargerParametres'', réapplique les stratégies applicables, dans la mesure du possible. Retourne True si OK.<br />
* L’implémentation de ''ILog'' mémorise les données via '''TLog'''.''AddEntry'' quand le Log a été démarré ou assigné.<br />
* L’implémentation de ''ILogDirect'' fait de même que ''ILog'', hormis qu'il créera le log si nécessaire. Cette méthode Log doit être appelée de préférence quand le log a été initialisé, car sinon elle peut être à l'origine de contentions (deadlock). C'est pourquoi il faut mieux s'abstenir de l'utiliser, ou, du moins en limiter l’usage, dans ce cadre précis.<br />
* L’implémentation de ''ILogEvt_Finalisation'' traite l’information ''logEvtNombreElements'' du client afin de finaliser le LogEvt.<br />
* L’implémentation de ''IStartLog'' mémorise ''enableLog'' et ''estDebugLog'' du client via ''IInitialise'', demande au client de fournir un libellé qui sera ensuite mémoriser simultanément sur le client et le serveur. <br />
* L’implémentation de ''IReleaseLog'' achève le traitement du log, uniquement si ''enableLog'' vaut '''TRUE''', ce qui n’est pas le cas lors d’un attachement. Retourne True si effectivement libéré.<br />
* L’implémentation de ''ISetLogTnx'' vérifie que le rôle LogTnx existe bien sur la référence serveur du client transmit avant d’initialiser ''enableLog'' sur FALSE et de réassigner le rôle, mais uniquement si celle-ci n’est pas le serveur lui-même. De plus, si les stratégies le permettent et que le parent est en mode ''estDebugLog'' = '''True''', la valeur sera appliquée au client existant. Retourne True si effectivement attaché.<br />
* La méthode privée ''_GetParametreLog'' qui retourne le singleton de paramétrage du log, en le créant si nécessaire.<br />
* La méthode privée ''_RechargerParametres'' qui recharge les paramètres du serveur, avec la recherche d'une exception qualifié lorsque que la gestion correspondante est active. Retourne False si erreur de lecture sur paramètres mais peut continuer.<br />
* La règle ''Action_ValeurInitialDepuisParametres'' qui provoque le chargement initial des paramètres par l'appel de ''_RechargerParametres'' lors de l'initialisation des attributs.<br />
* La régle ''ValeurInitiale_enableLog'' qui initialise ''enableLog'' sur '''False'''.<br />
* La règle ''ValeurInitiale_estDebugLog'' qui initialise ''estDebugLog'' sur ''False''.<br />
* La régle '' ValeurInitiale_libelleSession'' qui initialise ''libelleSession'' à une valeur par défaut.<br />
<br />
= Annexes =<br />
<br />
== Exemple de code pour la règle ''Action_Initialisation'' ==<br />
<br />
<source lang='delphi'><br />
//procedure Action_Initialisation:boolean;<br />
//Traite les tâches d'initialisations du module, traité par le serveur<br />
begin<br />
if Not Assigned(ProcessusLog) then<br />
ProcessusLog := TProcessusLog.Create;<br />
<br />
ProcessusLog.IInitialise(Self);<br />
end;<br />
</source><br />
<br />
== Base du modèle appliqué au processus de base d'importation ==<br />
[[Fichier:FichierBaseModeleImplementationLogV800.jpg|Exemple du modèle de la base de l'implémentation du log]]<br />
<br />
== Paramétrage des stratégies ==<br />
<br />
Les stratégies définissent comment l'instance du serveur doit se comporter en fonction des situations paramétrées.<br />
<br />
On peut accéder actuellement à l'écran de paramétrage via le menu de paramétrage des moyens de paiements : ''Paramètres -> Paramètres -> Paramètres Log''.<br />
<br />
Le paramétrage accepte la gestion des exceptions, qui, quand elle est activée, sera appliqué par le serveur afin de recherche une exception pour un traitement donné, qui peut fournir la stratégie selon ces règles :<br />
* La classe et l'utilisateur loggé sont renseignés sur l'exception.<br />
* Seule la classe est renseignée sur l'exception.<br />
* Seul l'utilisateur loggé est renseigné sur l'exception.<br />
* Le paramétrage global s'applique.<br />
<br />
=== Ecran de paramètres Logs ''emp_parametreslog'' ===<br />
On y accède via l'écran ''emp_parametreslog''.<br />
<br />
[[Fichier:Ecran_ParametresLog.jpg|Paramètres Log]]<br />
<br />
[[Fichier:Ecran_ParametresLogExceptions.jpg|Liste des exceptions]]<br />
<br />
=== Stratégie de stockage des logs ===<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le stockage et l'attachement du log par un parent du client et n'autorise pas celui-ci à activer le débogage du format.<br />
* Standard : Respecte le choix du client.<br />
* Activé : Force l'activation du log sur le client s'il le supporte.<br />
<br />
=== Stratégie de regroupement du log ===<br />
<br />
'''Disponible uniquement si la stratégie de stockage n'est pas désactivée.'''<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le regroupement du log du client (log autonome).<br />
* Standard : Applique le loggage standard du client, qui, s'il reçoit la demande d'attachement du log du parent, transmettra les informations sur ce log qui sera géré exclusivement par le parent.<br />
* Complet : Accepte également le loggage étendue, identique à la stratégie standard, hormis que le client reçoit '''True''' s'il vérifie que le chaînage optionnel est autorisée. Permet ainsi au programmeur de conditionner l'attachement.<br />
<br />
=== Stratégie de débogage des formats ===<br />
<br />
Cette stratégie du serveur peut remplacer les choix par défaut (standard) appliqué au client :<br />
* Désactivé : Désactive complètement le débogage des formats du client et n'autorise pas celui-ci à activer le débogage du format.<br />
* Standard : Respecte le choix du client.<br />
* Local : Force l'activation du débogage sur le client.<br />
* Parent : Identique à standard, excepté si le client a été chaîné par un parent, auquel cas son choix prime.<br />
* Complet : Force l'activation du débogage sur le client ainsi que sur ses enfants attachés par ''IStartLog'.<br />
<br />
== Ecran de consultation générique des logs ''emp_consultationlogsessionimport'' ==<br />
On y accède via l'écran ''emp_consultationlogsessionimport''.<br />
Il permet de lister l'ensemble des logs existants dans le système, et de les supprimer.<br />
<br />
[[Fichier:Ecran_consultlogmain_sel.jpg|Consultation liste des logs]]<br />
<br />
[[Fichier:Ecran_consultlogmain_result.jpg|Consultation résultat liste des logs]]<br />
<br />
<br>Un double clic sur la ligne d'un log nous amène à l'écran de consultation de celui-ci.<br/><br />
<br />
[[Fichier:Ecran_consultlogdet_session.jpg|Consultation du log]]<br />
<br />
[[Fichier:Ecran_consultlogdet_result.jpg|Consultation résultat du log]]<br />
<br />
== Exemple d'implémentation sur l'écran d'affichage de la session d'importation des relevés de coordonnées bancaires ==<br />
<br />
[[Fichier:Ecran_sessionimprcoordbank_main.jpg|Consultation du log associé à la session]]<br />
<br />
[[Fichier:Ecran sessionimprcoordbank log.jpg|Consultation du log associé à la session]]<br />
<br />
== Débogage des formats ==<br />
<br />
Les nouveaux moteurs d'importation et de génération basés sur des formats peuvent retourner des informations supplémentaires dans le mémo du traitement, et dans le répertoire ''Log'' du container.<br />
<br />
Le paramètre adéquat (ou un bout de code) permettra d'activer ce mode particulier à la demande pour la mise au point de vos formats, ce qui constitue un passage ''plus que recommandé'' afin de finaliser la mise au point des formats.<br />
<br />
= Voir aussi =<br />
*[[Guide de l'Utilisateur sur le log de traitement|Guide de l'Utilisateur sur le log de traitement]].<br />
*[[Maîtrise du pattern d'importation|Maîtrise du pattern d'importation]].<br />
*[[Paramétrage et traitement d'importation|Paramétrage et traitement d'importation]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:51:47Z<p>Tdymon : </p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
<br />
'''Menu''' : ''Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]<br />
[[category:Logs]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:49:49Z<p>Tdymon : /* Paramétrage */</p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
<br />
'''Menu''' : ''Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:49:06Z<p>Tdymon : /* Consultation */</p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
''Menu : Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
'''Menu''' : ''Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:48:10Z<p>Tdymon : /* Purge */</p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
''Menu : Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
''Menu : Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu''' : ''Outils / Purge des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogCriteresExemple.jpgFichier:UserGuideLog-PurgeLogCriteresExemple.jpg2018-11-20T12:47:09Z<p>Tdymon : a importé une nouvelle version de « Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg »</p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogCriteres.jpgFichier:UserGuideLog-PurgeLogCriteres.jpg2018-11-20T12:45:03Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogResultLog.jpgFichier:UserGuideLog-PurgeLogResultLog.jpg2018-11-20T12:43:24Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogExecResults.jpgFichier:UserGuideLog-PurgeLogExecResults.jpg2018-11-20T12:42:52Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpgFichier:UserGuideLog-PurgeLogCriteresResSelect.jpg2018-11-20T12:42:18Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-PurgeLogCriteresExemple.jpgFichier:UserGuideLog-PurgeLogCriteresExemple.jpg2018-11-20T12:41:54Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T12:40:11Z<p>Tdymon : </p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
''Menu : Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
''Menu : Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
<br />
=== Purge ===<br />
<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu : Outils / Purge des logs de traitement'''.<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteres.jpg|Critères de la purge du Log de traitement]]<br />
<br />
Notons également les points suivantes :<br />
* La purge effectue un log de tous les logs qui ont été purgés afin d'en garder la trace.<br />
* Les critères sont hérités automatiquement de l'écran de consultation si chaîné directement.<br />
* Le champ de recherche '‘Référence'’ peut utiliser le caractère joker ‘%’?<br />
<br />
Exemple :<br />
<br />
On sélectionne les valeurs suivantes sur l’assistant de traitement :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresExemple.jpg|Exemple de critères de la purge de Logs de traitements]]<br />
<br />
Les trois logs de traitement sont retournés :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogCriteresResSelect.jpg|Résultat de la sélection de la purge de Logs de traitements]]<br />
<br />
Le traitement affiche un compte rendu qui fait lui-même l’objet d’un log :<br />
<br />
[[Fichier:UserGuideLog-PurgeLogExecResults.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
[[Fichier:UserGuideLog-PurgeLogResultLog.jpg|Résultat de la purge de Logs de traitement]]<br />
<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Guide_de_l%27Utilisateur_sur_le_log_de_traitementGuide de l'Utilisateur sur le log de traitement2018-11-20T11:41:04Z<p>Tdymon : </p>
<hr />
<div>= Avant-Propos =<br />
<br />
Il est à présent possible d’enregistrer des logs de traitements de différents niveaux.<br />
Pour cela, du code spécifique a été implémenté pour les traitement non exhaustifs suivants : <br />
<br />
* Comptabilisation des écritures bancaires.<br />
* Confirmation des coordonnées bancaires.<br />
* Constitution des remises.<br />
* Consultation des sessions d’import.<br />
* Conversion de fichiers.<br />
* Création d'un nouveau format.<br />
* Épuration des remises.<br />
* Import des relevés et notifications.<br />
* Import des remises.<br />
* Import des tiers.<br />
* Purge des logs de traitement.<br />
* Rapprochement des rejets avec les transactions d’origine.<br />
* Récupération des relevés auprès du module de communication.<br />
* Réinitialisation des remises.<br />
* Suppression des sessions d’import.<br />
* Transfert des remises.<br />
* Validation des comptes.<br />
* Validation des remises.<br />
* ...<br />
<br />
= Paramétrage =<br />
<br />
L’accès au paramétrage des logs de traitement s’effectue par le menu :<br />
''Menu : Paramètres / Paramètres / Paramètres log''.<br />
<br />
== Paramétrage des niveaux de log ==<br />
<br />
=== Onglet : Valeurs par défaut ===<br />
<br />
[[Fichier:UserGuideLog-Paramètres.jpg|Paramètres du log de traitement]]<br />
<br />
4 paramètres distincts sont accessibles :<br />
<br />
<br />
==== 1 - Stratégie de stockage du log ==== <br />
<br />
* Désactivé : La sélection de cette valeur signifie qu’aucun log ne sera associé au traitement.<br />
La sélection de cette valeur interdit la sélection de valeur sur les paramètres :<br />
Stratégie de regroupement de log<br />
Stratégie de débogage des formats.<br />
<br />
* Standard : Entraîne la génération du log conformément au code associé sur le traitement.<br />
<br />
* Activé : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
<br />
<br />
==== 2 - Stratégie de regroupement du log ====<br />
<br />
* Désactivé : La sélection de cette valeur n’effectue aucun regroupent de log.<br />
<br />
* Standard : Cette sélection effectue les regroupements prévus nativement dans le code des traitements.<br />
<br />
* Regroupement : Cette sélection effectue un regroupement des logs en cas d’enchaînement de traitements et sous réserve que le code des traitements le prévoit (Exemple : Import remise + Constitution).<br />
Il est recommandé d'utiliser cette option plutôt qu'avoir une multitude de logs différents.<br />
<br />
<br />
==== 3 - Stratégie de débogage des formats ====<br />
<br />
* Désactivé : Cette sélection permet de désactiver les logs lors de l’utilisation des formats (Import, génération, conversion …)<br />
<br />
* Standard : Cette option génère le log si prévu dans le code du traitement.<br />
<br />
* Local : Permet de forcer la génération du log du traitement même si celui-ci n’est pas activé nativement dans le code.<br />
S'applique à la partie du traitement concerné.<br />
<br />
* Parent : Cette option entraîne l’enregistrement d’un log s’il est également autorisé sur le traitement parent. <br />
Le traitement qui est appelé hérité du log du parent sinon aucun log ne sera généré. <br />
<br />
* Complet : Cette option entraîne la création d’un log pour le traitement parent et les traitements qui en découlent.<br />
<br />
<br />
==== 4 - Gestion des exceptions ====<br />
<br />
Le fait de cocher cette option permet d’affiner le paramétrage de l’onglet ‘valeurs par défaut’, soit par processus, soit par utilisateur, soit par la combinaison des deux.<br />
<br />
Par exemple : Si on définit un niveau standard pour la stratégie de stockage, il est possible de définir un niveau plus élevé (activé) pour un utilisateur spécifique.<br />
<br />
A noter : Si on revient sur le paramétrage des valeurs par défaut et qu’on décoche l’option, les exceptions seront temporairement désactivées.<br />
En cochant à nouveau l’option, ils seront à nouveau visibles et réactivés.<br />
<br />
<br />
=== Onglet : Liste des exceptions ===<br />
<br />
[[Fichier:UserGuideLog-ParamètresExceptions.jpg|Paramètres d'exceptions du log de traitement]]<br />
<br />
Cette section permet de définir des exceptions prioritaires sur les options par défaut.<br />
<br />
Dans tous les cas, c'est l'exception qui sera la plus prioritaire qui sera employée : c'est celle qui répondra au mieux à la situation.<br />
<br />
On peut renseigner l'utilisateur et/ou la processus concerné : renseigner ici les deux sera celle qui sera utilisée pour l'utilisateur concerné.<br />
<br />
<br />
== Consultation et purge des logs de traitements == <br />
<br />
=== Purge ===<br />
L’épuration des logs enregistrés peut être réalisée par le menu suivant :<br />
<br />
'''Menu : Outils / Purge des logs de traitement'''.<br />
<br />
<br />
=== Consultation === <br />
<br />
La consultation des logs s’effectue par le menu : <br />
<br />
''Menu : Outils / Consultation des logs de traitement''.<br />
<br />
[[Fichier:UserGuideLog-Consultation.jpg|Consultation des logs de traitement]]<br />
<br />
NB : Le champ de recherche ‘Référence’ peut utiliser le caractère joker ‘%’<br />
<br />
La sélection renvoie ici 3 lignes de logs.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogs.jpg|Liste des logs de traitement]]<br />
<br />
On sélectionne l’enregistrement se rapportant à l’import.<br />
'''La constitution de remise a été demandée à la suite du traitement d’import sur le paramétrage'''.<br />
<br />
[[Fichier:UserGuideLog-ConsultationLog.jpg|Log d'un traitement]]<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogFiltre.jpg|Filtre détail du Log d'un traitement]]<br />
<br />
La case à cocher '''Sélection état''' permet de définir le niveau d’affichage du log.<br />
Dans l’exemple, en fonction de la valeur, les données suivantes sont restituées :<br />
<br />
<br />
==== Sans aucun filtre (Par défaut) ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAll.jpg|Détails du Log de traitement]]<br />
<br />
Le log porte bien sur les deux traitements, les classes impactées par les traitements sont précisées.<br />
NB : Elles pourront être utilisées pour paramétrer classe sur pour exceptions.<br />
<br />
<br />
==== Filtre : ''Démarrage'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailStart.jpg|Détail filtré sur le démarrage du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Exécution'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailExec.jpg|Détail filtré sur exécution du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Informations'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailInfos.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Avertissements'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailAlerts.jpg|Détail filtré sur les avertissements du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Erreurs'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailErrors.jpg|Détail filtré sur les erreurs du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Fatal'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailFatals.jpg|Détail filtré sur les erreurs fatales du Log de traitement]]<br />
<br />
<br />
==== Filtre : ''Succès (fin du traitement)'' ====<br />
<br />
[[Fichier:UserGuideLog-ConsultationLogDetailOK.jpg|Détail filtré sur la fin correcte du Log de traitement]]<br />
<br />
<br />
= Voir aussi =<br />
*[[Traitement du Log|Traitement du Log]].<br />
<br />
{{Footer|Importation (patterns)}}<br />
[[category:Importation]]</div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-ConsultationLogDetailFatals.jpgFichier:UserGuideLog-ConsultationLogDetailFatals.jpg2018-11-20T11:37:10Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-ConsultationLogDetailOK.jpgFichier:UserGuideLog-ConsultationLogDetailOK.jpg2018-11-20T11:36:05Z<p>Tdymon : </p>
<hr />
<div></div>Tdymonhttps://frp.sage.fr/wiki1000/index.php/Fichier:UserGuideLog-ConsultationLogDetailErrors.jpgFichier:UserGuideLog-ConsultationLogDetailErrors.jpg2018-11-20T11:35:44Z<p>Tdymon : </p>
<hr />
<div></div>Tdymon