<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://wiki.sage.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thdym</id>
	<title>Wiki1000 - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sage.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thdym"/>
	<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php/Sp%C3%A9cial:Contributions/Thdym"/>
	<updated>2026-05-25T04:03:31Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6293</id>
		<title>ImportByFormatDef (rtl)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6293"/>
		<updated>2012-03-22T08:26:30Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;Procedure IntegrateByFormatDef(const aCodeFormat:string; const aData:TStrings; aRefObject:TitObject; const aLogLevel:FormatLogLevel);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet d&#039;importer un fichier en utilisant un format.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|aCodeFormat&lt;br /&gt;
|Code du format à utiliser pour l&#039;import.&lt;br /&gt;
|-&lt;br /&gt;
|aData&lt;br /&gt;
|Contenu du fichier à importer.&lt;br /&gt;
|-&lt;br /&gt;
|aRefObject&lt;br /&gt;
|Objet racine tous les objets qui seront créés.&lt;br /&gt;
|-&lt;br /&gt;
|aLogLevel&lt;br /&gt;
|Niveau de journalisation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le journal généré se situe dans répertoire [container L1000]/logs&lt;br /&gt;
&lt;br /&gt;
Trois niveaux de journalisation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*Format_Log_Level_None &lt;br /&gt;
:aucune trace&lt;br /&gt;
*Format_Log_Level_Data_Errors &lt;br /&gt;
:trace les erreurs d&#039;accès au données (formule erronée...) utile pour la mise au point des nouveaux formats&lt;br /&gt;
*Format_Log_Level_Verbose &lt;br /&gt;
:trace l&#039;exploration du fichier / du modèle (trace importante en taille) + Format_Log_Level_Data_Errors &lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure _doImport;&lt;br /&gt;
var&lt;br /&gt;
 vFormatCode : String;&lt;br /&gt;
 vFormatIntegrationFichier : TFormatIntegrationFichier;&lt;br /&gt;
 vidxRem  : Integer;&lt;br /&gt;
 vTimeOrg : LongInt;&lt;br /&gt;
 vTimeInt : LongInt;&lt;br /&gt;
 vTimeLst : LongInt;&lt;br /&gt;
 vTimeCom : LongInt;&lt;br /&gt;
 vTrackingMode : FormatLogLevel;&lt;br /&gt;
begin&lt;br /&gt;
  // Locate the format definition&lt;br /&gt;
  // Recherche du format en dur&lt;br /&gt;
  vFormatCode := &#039;INT_VIRNAT_160&#039;;&lt;br /&gt;
  vFormatIntegrationFichier := TFormatIntegrationFichier.Find(&#039;(code=%1)&#039;,&#039;&#039;,true,[vFormatCode]);&lt;br /&gt;
&lt;br /&gt;
  // Set logging mode&lt;br /&gt;
  if estVerbeux then&lt;br /&gt;
    vTrackingMode := Format_Log_Level_Verbose&lt;br /&gt;
  else&lt;br /&gt;
    vTrackingMode := Format_Log_Level_None;&lt;br /&gt;
&lt;br /&gt;
  if Assigned(vFormatIntegrationFichier) then&lt;br /&gt;
  begin&lt;br /&gt;
   // Start a long transaction&lt;br /&gt;
   ClassManager.BeginLongTran(1,&#039;TImportRemiseBancaire&#039;);&lt;br /&gt;
   try&lt;br /&gt;
     CreerSessionImport;&lt;br /&gt;
&lt;br /&gt;
     // Load the source file in a TStrings&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Chargement du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
     content.LoadFromFile(FichierImport);&lt;br /&gt;
&lt;br /&gt;
     vTimeOrg := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
&lt;br /&gt;
     // Import the source file here&lt;br /&gt;
     ImportbyFormatDef(vFormatIntegrationFichier.GetFileFormatNameRef,Content.Strings,self,vTrackingMode);&lt;br /&gt;
&lt;br /&gt;
     vTimeInt := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration en %s ms.&#039;),[TickToString(vTimeInt-vTimeOrg)]));&lt;br /&gt;
&lt;br /&gt;
     ProgressMessage(_TP(&#039;Fermeture de la transaction.&#039;));&lt;br /&gt;
&lt;br /&gt;
     ClassManager.CommitlongTran; &lt;br /&gt;
     vTimeCom := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Clôture transaction en %s Ms, sur un total de %s Ms.&#039;),[TickToString(vTimeCom-vTimeLst),TickToString(vTimeCom-vTimeOrg)]));&lt;br /&gt;
   except&lt;br /&gt;
     ClassManager.RollBacklongTran;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Erreur d&#039;&#039;import : %s&#039;),[e.Message]));&lt;br /&gt;
     raise;&lt;br /&gt;
   end;&lt;br /&gt;
 end&lt;br /&gt;
 else&lt;br /&gt;
   ERule.Create(Format(_TP(&#039;Le format %s n&#039;&#039;a pas été trouvé.&#039;),[vFormatCode]));&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
{{Footer|Développement DSM}}&lt;br /&gt;
[[category:RTL Framework]]&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6210</id>
		<title>ImportByFormatDef (rtl)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6210"/>
		<updated>2012-01-11T10:52:24Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;Procedure IntegrateByFormatDef(const aCodeFormat:string; const aData:TStrings; aRefObject:TitObject; const aLogLevel:FormatLogLevel);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet d&#039;importer un fichier en utilisant un format.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|aCodeFormat&lt;br /&gt;
|Code du format à utiliser pour l&#039;import.&lt;br /&gt;
|-&lt;br /&gt;
|aData&lt;br /&gt;
|Contenu du fichier à importer.&lt;br /&gt;
|-&lt;br /&gt;
|aRefObject&lt;br /&gt;
|Objet racine tous les objets qui seront créés.&lt;br /&gt;
|-&lt;br /&gt;
|aLogLevel&lt;br /&gt;
|Niveau de journalisation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le journal généré se situe dans répertoire [container L1000]/logs&lt;br /&gt;
&lt;br /&gt;
Trois niveaux de journalisation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*Format_Log_Level_None &lt;br /&gt;
:aucune trace&lt;br /&gt;
*Format_Log_Level_Data_Errors &lt;br /&gt;
:trace les erreurs d&#039;accès au données (formule erronée...) utile pour la mise au point des nouveaux formats&lt;br /&gt;
*Format_Log_Level_Verbose &lt;br /&gt;
:trace l&#039;exploration du fichier / du modèle (trace importante en taille) + Format_Log_Level_Data_Errors &lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure _doImport;&lt;br /&gt;
var&lt;br /&gt;
 vFormatCode : String;&lt;br /&gt;
 vFormatIntegrationFichier : TFormatIntegrationFichier;&lt;br /&gt;
 vidxRem  : Integer;&lt;br /&gt;
 vTimeOrg : LongInt;&lt;br /&gt;
 vTimeInt : LongInt;&lt;br /&gt;
 vTimeLst : LongInt;&lt;br /&gt;
 vTimeCom : LongInt;&lt;br /&gt;
 vTrackingMode : Integer;&lt;br /&gt;
begin&lt;br /&gt;
  // Locate the format definition&lt;br /&gt;
  // Recherche du format en dur&lt;br /&gt;
  vFormatCode := &#039;INT_VIRNAT_160&#039;;&lt;br /&gt;
  vFormatIntegrationFichier := TFormatIntegrationFichier.Find(&#039;(code=%1)&#039;,&#039;&#039;,true,[vFormatCode]);&lt;br /&gt;
&lt;br /&gt;
  // Set logging mode&lt;br /&gt;
  if estVerbeux then&lt;br /&gt;
    vTrackingMode := Format_Log_Level_Verbose&lt;br /&gt;
  else&lt;br /&gt;
    vTrackingMode := Format_Log_Level_None;&lt;br /&gt;
&lt;br /&gt;
  if Assigned(vFormatIntegrationFichier) then&lt;br /&gt;
  begin&lt;br /&gt;
   // Start a long transaction&lt;br /&gt;
   ClassManager.BeginLongTran(1,&#039;TImportRemiseBancaire&#039;);&lt;br /&gt;
   try&lt;br /&gt;
     CreerSessionImport;&lt;br /&gt;
&lt;br /&gt;
     // Load the source file in a TStrings&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Chargement du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
     content.LoadFromFile(FichierImport);&lt;br /&gt;
&lt;br /&gt;
     vTimeOrg := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
&lt;br /&gt;
     // Import the source file here&lt;br /&gt;
     ImportbyFormatDef(vFormatIntegrationFichier.GetFileFormatNameRef,Content.Strings,self,vTrackingMode);&lt;br /&gt;
&lt;br /&gt;
     vTimeInt := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration en %s ms.&#039;),[TickToString(vTimeInt-vTimeOrg)]));&lt;br /&gt;
&lt;br /&gt;
     ProgressMessage(_TP(&#039;Fermeture de la transaction.&#039;));&lt;br /&gt;
&lt;br /&gt;
     ClassManager.CommitlongTran; &lt;br /&gt;
     vTimeCom := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Clôture transaction en %s Ms, sur un total de %s Ms.&#039;),[TickToString(vTimeCom-vTimeLst),TickToString(vTimeCom-vTimeOrg)]));&lt;br /&gt;
   except&lt;br /&gt;
     ClassManager.RollBacklongTran;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Erreur d&#039;&#039;import : %s&#039;),[e.Message]));&lt;br /&gt;
     raise;&lt;br /&gt;
   end;&lt;br /&gt;
 end&lt;br /&gt;
 else&lt;br /&gt;
   ERule.Create(Format(_TP(&#039;Le format %s n&#039;&#039;a pas été trouvé.&#039;),[vFormatCode]));&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
{{Footer|Développement DSM}}&lt;br /&gt;
[[category:RTL Framework]]&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Environnement_des_tests_unitaires_(testsuite)&amp;diff=6132</id>
		<title>Environnement des tests unitaires (testsuite)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Environnement_des_tests_unitaires_(testsuite)&amp;diff=6132"/>
		<updated>2011-12-13T13:29:32Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Une bonne pratique consiste à exécuter les tests unitaires dans un Dossier de test qui présente la particularité de n&#039;être pas rattaché à une base de données. &lt;br /&gt;
&lt;br /&gt;
A l&#039;intérieur de ce dossier vos premiers tests enregistreront et créeront une base de données puis initialiseront cette base des données de test. Ainsi vos tests s&#039;exécuteront dans un environnement isolé et stable qui garantira la reproductibilité. &lt;br /&gt;
&lt;br /&gt;
Pour ce faire :&lt;br /&gt;
&lt;br /&gt;
1. Créer un dossier de test dans l&#039;administration en cochant l&#039;option &amp;quot;Ce dossier est un dossier de test&amp;quot; sur la page de sélection de la base de données.&lt;br /&gt;
&lt;br /&gt;
2. A l&#039;intérieur de vos tests définissez une première classe de test dont la responsabilité est de :&lt;br /&gt;
&lt;br /&gt;
:* Enregistrer une base de données dont le nom est unique et lié à votre session de test.&lt;br /&gt;
:* Supprimer cette base de données&lt;br /&gt;
:* Créer cette base de données&lt;br /&gt;
:* Synchroniser cette base de données &lt;br /&gt;
:* Exécuter un script d&#039;initialisation sur cette base de données&lt;br /&gt;
:* Initialiser cette base de données&lt;br /&gt;
&lt;br /&gt;
Créer ensuite vos donner de test.&lt;br /&gt;
&lt;br /&gt;
Actuellement, il est recommandé d&#039;intégrer à votre application le module &amp;quot;Module Test Suite - Core&amp;quot; si vous souhaiter utiliser cette fonctionnalité, ce module contenant la classe de test fourni dans cet article.&lt;br /&gt;
&lt;br /&gt;
{{#images:image9.png|dsm\designer\testsuite}}&lt;br /&gt;
&lt;br /&gt;
L&#039;arborescence des tests doit être organisée de sorte que ces tests d&#039;initialisation soient exécutés en premier, utilisé l&#039;ordre du nom de test pour ceci.&lt;br /&gt;
&lt;br /&gt;
Le code de ces tests sera le suivant : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure Test_0_RegisterDatabase;&lt;br /&gt;
var dbi:TDatabaseInfo;&lt;br /&gt;
begin&lt;br /&gt;
  Abort(GlbTestSuiteEnvName&amp;lt;&amp;gt;&#039;&#039;,&#039;Test environnement not set&#039;);&lt;br /&gt;
  Abort(GlbTestSuiteDatabaseName&amp;lt;&amp;gt;&#039;&#039;,&#039;Test database name not set&#039;);&lt;br /&gt;
  dbi := ClassManager.RegisterTestDatabase(GlbTestSuiteEnvName,GlbTestSuiteDatabaseName);&lt;br /&gt;
  Abort(Assigned(dbi),&#039;Register database failed&#039;);&lt;br /&gt;
  ClassManager.defDatabaseURL := dbi.URL;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_1_drop_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.DropDatabase(dbi),&#039;Drop database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_2_create_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.CreateDatabase(dbi),&#039;Create database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_3_sync_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.SyncDatabase(dbi),&#039;Sync database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_4_execute_script;&lt;br /&gt;
var dbi:TDatabaseinfo;errorMsg:string;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.ExecuteTestSuiteScript(dbi,GlbTestSuiteEnvName,errorMsg),errorMsg);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_5_init_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.InitDatabase(dbi),&#039;Init database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les paramètres GlbTestSuiteEnvName et GlbTestSuiteDatabaseName font référence à des paramètres du contexte qui peuvent être défini au niveau des préférences du concepteur de modèle :&lt;br /&gt;
&lt;br /&gt;
{{#images:image10.png|dsm\designer\testsuite}}&lt;br /&gt;
&lt;br /&gt;
GlbTestSuiteEnvName&lt;br /&gt;
:Nom d&#039;un contexte de test, [[Contexte de test unitaire (testsuite)|le contexte]] défini les paramètres de la base de données.&lt;br /&gt;
A noter que cet environnement peut contenir le script nécessaire à l&#039;initialisation de la base. Il est IMPÉRATIF de n&#039;employer cette possibilité uniquement si c&#039;est réellement nécessaire, auquel cas il doit être le plus court possible.&lt;br /&gt;
&lt;br /&gt;
GlbTestSuiteDatabaseName&lt;br /&gt;
:Nom de la base de données&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[Contexte de test unitaire (testsuite)|Contexte de test unitaire]]&lt;br /&gt;
* [[RegisterTestDatabase (CM)|RegisterTestDatabase]]&lt;br /&gt;
* [[DropDatabase (CM)|DropDatabase]]&lt;br /&gt;
* [[CreateDatabase (CM)|CreateDatabase]]&lt;br /&gt;
* [[SyncDatabase (CM)|SyncDatabase]]&lt;br /&gt;
* [[InitDatabase (CM)|InitDatabase]]&lt;br /&gt;
* [[SelectSociety (CM)|SelectSociety]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tests unitaires]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Environnement_des_tests_unitaires_(testsuite)&amp;diff=6131</id>
		<title>Environnement des tests unitaires (testsuite)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Environnement_des_tests_unitaires_(testsuite)&amp;diff=6131"/>
		<updated>2011-12-13T13:26:32Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Une bonne pratique consiste à exécuter les tests unitaires dans un Dossier de test qui présente la particularité de n&#039;être pas rattaché à une base de données. &lt;br /&gt;
&lt;br /&gt;
A l&#039;intérieur de ce dossier vos premiers tests enregistreront et créeront une base de données puis initialiseront cette base des données de test. Ainsi vos tests s&#039;exécuteront dans un environnement isolé et stable qui garantira la reproductibilité. &lt;br /&gt;
&lt;br /&gt;
Pour ce faire :&lt;br /&gt;
&lt;br /&gt;
1. Créer un dossier de test dans l&#039;administration en cochant l&#039;option &amp;quot;Ce dossier est un dossier de test&amp;quot; sur la page de sélection de la base de données.&lt;br /&gt;
&lt;br /&gt;
2. A l&#039;intérieur de vos tests définissez une première classe de test dont la responsabilité est de :&lt;br /&gt;
&lt;br /&gt;
:* Enregistrer une base de données dont le nom est unique et lié à votre session de test.&lt;br /&gt;
:* Supprimer cette base de données&lt;br /&gt;
:* Créer cette base de données&lt;br /&gt;
:* Synchroniser cette base de données &lt;br /&gt;
:* Exécuter un script d&#039;initialisation sur cette base de données&lt;br /&gt;
:* Initialiser cette base de données&lt;br /&gt;
&lt;br /&gt;
Créer ensuite vos donner de test.&lt;br /&gt;
&lt;br /&gt;
Actuellement, il est recommandé d&#039;intégrer à votre application le module &amp;quot;Module Test Suite - Core&amp;quot; si vous souhaiter utiliser cette fonctionnalité, ce module contenant la classe de test fourni dans cet article.&lt;br /&gt;
&lt;br /&gt;
{{#images:image9.png|dsm\designer\testsuite}}&lt;br /&gt;
&lt;br /&gt;
L&#039;arborescence des tests doit être organisée de sorte que ces tests d&#039;initialisation soient exécutés en premier, utilisé l&#039;ordre du nom de test pour ceci.&lt;br /&gt;
&lt;br /&gt;
Le code de ces tests sera le suivant : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure Test_0_RegisterDatabase;&lt;br /&gt;
var dbi:TDatabaseInfo;&lt;br /&gt;
begin&lt;br /&gt;
  Abort(GlbTestSuiteEnvName&amp;lt;&amp;gt;&#039;&#039;,&#039;Test environnement not set&#039;);&lt;br /&gt;
  Abort(GlbTestSuiteDatabaseName&amp;lt;&amp;gt;&#039;&#039;,&#039;Test database name not set&#039;);&lt;br /&gt;
  dbi := ClassManager.RegisterTestDatabase(GlbTestSuiteEnvName,GlbTestSuiteDatabaseName);&lt;br /&gt;
  Abort(Assigned(dbi),&#039;Register database failed&#039;);&lt;br /&gt;
  ClassManager.defDatabaseURL := dbi.URL;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_1_drop_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.DropDatabase(dbi),&#039;Drop database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_2_create_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.CreateDatabase(dbi),&#039;Create database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_3_sync_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.SyncDatabase(dbi),&#039;Sync database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_4_execute_script;&lt;br /&gt;
var dbi:TDatabaseinfo;errorMsg:string;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.ExecuteTestSuiteScript(dbi,GlbTestSuiteEnvName,errorMsg),errorMsg);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure Test_5_init_database;&lt;br /&gt;
var dbi:TDatabaseinfo;&lt;br /&gt;
begin&lt;br /&gt;
  dbi := ClassManager.DatabaseByURL(ClassManager.DefDatabaseURL);&lt;br /&gt;
  Check(Assigned(dbi),&#039;No database context&#039;);&lt;br /&gt;
  Abort(ClassManager.InitDatabase(dbi),&#039;Init database failed&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les paramètres GlbTestSuiteEnvName et GlbTestSuiteDatabaseName font référence à des paramètres du contexte qui peuvent être défini au niveau des préférences du concepteur de modèle :&lt;br /&gt;
&lt;br /&gt;
{{#images:image10.png|dsm\designer\testsuite}}&lt;br /&gt;
&lt;br /&gt;
GlbTestSuiteEnvName&lt;br /&gt;
:Nom d&#039;un contexte de test, [[Contexte de test unitaire (testsuite)|le contexte]] défini les paramètres de la base de données.&lt;br /&gt;
&lt;br /&gt;
GlbTestSuiteDatabaseName&lt;br /&gt;
:Nom de la base de données&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[Contexte de test unitaire (testsuite)|Contexte de test unitaire]]&lt;br /&gt;
* [[RegisterTestDatabase (CM)|RegisterTestDatabase]]&lt;br /&gt;
* [[DropDatabase (CM)|DropDatabase]]&lt;br /&gt;
* [[CreateDatabase (CM)|CreateDatabase]]&lt;br /&gt;
* [[SyncDatabase (CM)|SyncDatabase]]&lt;br /&gt;
* [[InitDatabase (CM)|InitDatabase]]&lt;br /&gt;
* [[SelectSociety (CM)|SelectSociety]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tests unitaires]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=CalCleIBan_(rtl)&amp;diff=6011</id>
		<title>CalCleIBan (rtl)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=CalCleIBan_(rtl)&amp;diff=6011"/>
		<updated>2011-11-15T10:05:00Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&#039;delphi&#039;&amp;gt;Function CalCleIBan(const iCodePays:String; const iCodeCompte:String):String;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction calcule une clé de contrôle suivant la norme IBAN&lt;br /&gt;
&lt;br /&gt;
IBAN est l&#039;abréviation de International Bank Account Number. Il s&#039;agit d&#039;une norme développée&lt;br /&gt;
par l&#039;ISO (International Organization for Standardization) et l&#039;ECBS (European Committee for&lt;br /&gt;
Banking Standards) pour la représentation d&#039;identifications de banques et de numéros de comptes.&lt;br /&gt;
&lt;br /&gt;
L&#039;IBAN est composée des éléments suivants :&lt;br /&gt;
&lt;br /&gt;
code de pays à 2 positions alphabétiques (LL)&lt;br /&gt;
chiffre de contrôle (CC) à 2 positions numériques portant sur l&#039;ensemble de l&#039;IBAN&lt;br /&gt;
Basic Bank Account Number (BBAN) de 30 positions au maximum, renfermant l&#039;identification de l&#039;établissement financier (IID) et du Bank Account Number (BAN).&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Retourne la valeur de la clé IBAN sous forme d&#039;une chaîne de caractère.&lt;br /&gt;
|-&lt;br /&gt;
|iCodePays&lt;br /&gt;
|Code ISO du pays.&lt;br /&gt;
|-&lt;br /&gt;
|iCodeCompte&lt;br /&gt;
|Code compte IBAN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur de CodeCompte doit être CodeBanque+CodeGuichet+CodeCompte+cleRIb pour calculé une clé IBAN française (ici alias de numéro de compte BBAN).&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
begin&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
{{Footer|Développement DSM}}&lt;br /&gt;
[[category:RTL Métier]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6010</id>
		<title>Format de génération de fichier plat</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6010"/>
		<updated>2011-11-15T09:58:48Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:def_format_genplat_5.jpg|formats]]&lt;br /&gt;
&lt;br /&gt;
==Attributs du format spécifiques==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la balise spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fin de balise&#039;&#039;&#039;&lt;br /&gt;
* Séparateur : insère le caractère paramétré à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
* Fin de ligne : insère un retour chariot à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
[[Fichier:def_format_genplat_4.jpg|formats]]&lt;br /&gt;
&lt;br /&gt;
==Attributs de la donnée spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding droite&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à droite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding gauche&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_4.jpg&amp;diff=6009</id>
		<title>Fichier:Def format genplat 4.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_4.jpg&amp;diff=6009"/>
		<updated>2011-11-15T09:58:03Z</updated>

		<summary type="html">&lt;p&gt;Thdym : Exemple écran génération fichier plat avec annotation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple écran génération fichier plat avec annotation.&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6008</id>
		<title>Format de génération de fichier plat</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6008"/>
		<updated>2011-11-15T09:39:26Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:def_format_genplat_5.jpg|formats]]&lt;br /&gt;
&lt;br /&gt;
==Attributs du format spécifiques==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la balise spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fin de balise&#039;&#039;&#039;&lt;br /&gt;
* Séparateur : insère le caractère paramétré à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
* Fin de ligne : insère un retour chariot à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
{{#images:def_format_4.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la donnée spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding droite&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à droite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding gauche&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_5.jpg&amp;diff=6007</id>
		<title>Fichier:Def format genplat 5.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_5.jpg&amp;diff=6007"/>
		<updated>2011-11-15T09:35:58Z</updated>

		<summary type="html">&lt;p&gt;Thdym : Exemple format génération plat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple format génération plat&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6006</id>
		<title>Format de génération de fichier plat</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6006"/>
		<updated>2011-11-15T09:29:11Z</updated>

		<summary type="html">&lt;p&gt;Thdym : Annulation des modifications 6005 de Thdym (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#images:def_format_5.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs du format spécifiques==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la balise spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fin de balise&#039;&#039;&#039;&lt;br /&gt;
* Séparateur : insère le caractère paramétré à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
* Fin de ligne : insère un retour chariot à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
{{#images:def_format_4.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la donnée spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding droite&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à droite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding gauche&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6005</id>
		<title>Format de génération de fichier plat</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6005"/>
		<updated>2011-11-15T09:28:20Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#images:Def_format_genplat_5.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs du format spécifiques==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la balise spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fin de balise&#039;&#039;&#039;&lt;br /&gt;
* Séparateur : insère le caractère paramétré à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
* Fin de ligne : insère un retour chariot à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
{{#images:def_format_4.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la donnée spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding droite&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à droite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding gauche&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_5.png&amp;diff=6004</id>
		<title>Fichier:Def format genplat 5.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fichier:Def_format_genplat_5.png&amp;diff=6004"/>
		<updated>2011-11-15T09:27:40Z</updated>

		<summary type="html">&lt;p&gt;Thdym : Exemple format de génération plat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple format de génération plat&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6003</id>
		<title>Format de génération de fichier plat</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Format_de_g%C3%A9n%C3%A9ration_de_fichier_plat&amp;diff=6003"/>
		<updated>2011-11-15T09:18:51Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#images:Def_format_5.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs du format spécifiques==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la balise spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fin de balise&#039;&#039;&#039;&lt;br /&gt;
* Séparateur : insère le caractère paramétré à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
* Fin de ligne : insère un retour chariot à l&#039;issue de l&#039;exploration de cette balise&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
{{#images:def_format_4.png|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Attributs de la donnée spécifiques==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding droite&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à droite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode padding gauche&#039;&#039;&#039; : si la donnée retournée est plus courte que la longueur paramétrée, elle complétée par le caractère de padding à gauche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fichier:Def_format_5.png&amp;diff=6002</id>
		<title>Fichier:Def format 5.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fichier:Def_format_5.png&amp;diff=6002"/>
		<updated>2011-11-15T09:15:07Z</updated>

		<summary type="html">&lt;p&gt;Thdym : Exemple écran génération fichier plat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple écran génération fichier plat&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6001</id>
		<title>ImportByFormatDef (rtl)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=ImportByFormatDef_(rtl)&amp;diff=6001"/>
		<updated>2011-11-15T09:04:32Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;Procedure IntegrateByFormatDef(const aCodeFormat:string; const aData:TStrings; aRefObject:TitObject; const aLogLevel:FormatLogLevel);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet d&#039;importer un fichier en utilisant un format.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|aCodeFormat&lt;br /&gt;
|Code du format à utiliser pour l&#039;import.&lt;br /&gt;
|-&lt;br /&gt;
|aData&lt;br /&gt;
|Contenu du fichier à importer.&lt;br /&gt;
|-&lt;br /&gt;
|aRefObject&lt;br /&gt;
|Objet racine tous les objets qui seront créés.&lt;br /&gt;
|-&lt;br /&gt;
|aLogLevel&lt;br /&gt;
|Niveau de journalisation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le journal généré se situe dans répertoire [container L1000]/logs&lt;br /&gt;
&lt;br /&gt;
Trois niveaux de journalisation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*Format_Log_Level_None &lt;br /&gt;
:aucune trace&lt;br /&gt;
*Format_Log_Level_Data_Errors &lt;br /&gt;
:trace les erreurs d&#039;accès au données (formule erronée...) utile pour la mise au point des nouveaux formats&lt;br /&gt;
*Format_Log_Level_Verbose &lt;br /&gt;
:trace l&#039;exploration du fichier / du modèle (trace importante en taille) + Format_Log_Level_Data_Errors &lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure _doImport;&lt;br /&gt;
var&lt;br /&gt;
 vFormatCode : String;&lt;br /&gt;
 vFormatIntegrationFichier : TFormatIntegrationFichier;&lt;br /&gt;
 vidxRem  : Integer;&lt;br /&gt;
 vTimeOrg : LongInt;&lt;br /&gt;
 vTimeInt : LongInt;&lt;br /&gt;
 vTimeLst : LongInt;&lt;br /&gt;
 vTimeCom : LongInt;&lt;br /&gt;
 vTrackingMode : Integer;&lt;br /&gt;
begin&lt;br /&gt;
  // Locate the format definition&lt;br /&gt;
  // Recherche du format en dur&lt;br /&gt;
  vFormatCode := &#039;INT_VIRNAT_160&#039;;&lt;br /&gt;
  vFormatIntegrationFichier := TFormatIntegrationFichier.Find(&#039;(code=%1)&#039;,&#039;&#039;,true,[vFormatCode]);&lt;br /&gt;
&lt;br /&gt;
  // Set logging mode&lt;br /&gt;
  if estVerbeux then&lt;br /&gt;
    vTrackingMode := Format_Log_Level_Verbose&lt;br /&gt;
  else&lt;br /&gt;
    vTrackingMode := Format_Log_Level_None;&lt;br /&gt;
&lt;br /&gt;
  if Assigned(vFormatIntegrationFichier) then&lt;br /&gt;
  begin&lt;br /&gt;
   // Start a long transaction&lt;br /&gt;
   ClassManager.BeginLongTran(1,&#039;TImportRemiseBancaire&#039;);&lt;br /&gt;
   try&lt;br /&gt;
     CreerSessionImport;&lt;br /&gt;
&lt;br /&gt;
     // Load the source file in a TStrings&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Chargement du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
     content.LoadFromFile(FichierImport);&lt;br /&gt;
&lt;br /&gt;
     vTimeOrg := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration du fichier %s.&#039;),[FichierImport]));&lt;br /&gt;
&lt;br /&gt;
     // Import the source file here&lt;br /&gt;
     ImportbyFormatDef(vFormatIntegrationFichier.GetFileFormatNameRef,Content.Strings,self,vTrackingMode);&lt;br /&gt;
&lt;br /&gt;
     vTimeInt := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Intégration en %s ms.&#039;),[TickToString(vTimeInt-vTimeOrg)]));&lt;br /&gt;
&lt;br /&gt;
     //&amp;lt;&amp;lt;Début section ancien modèle avant Tahoe, désormais inutile car la session est affectée automatiquement&lt;br /&gt;
     //A noter que si l&#039;on ne veut pas garder les données -: vider la liste &amp;amp; rollback&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Ajout des %s remises dans la session.&#039;),[IntToStr(ListeRemise.Count]));&lt;br /&gt;
     vTimeLst := GetTickCount;&lt;br /&gt;
     for vIdxRem := 0 to ListeRemise.Count-1 do&lt;br /&gt;
       SessionImportation.ImportDonneeList.Addref(ListeRemise.Refs[vIdxRem]);&lt;br /&gt;
&lt;br /&gt;
     listeRemise.Clear;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Liste des données créées en %s ms.&#039;),[TickToString(vTimeLst-vTimeInt)]));&lt;br /&gt;
     //Fin de section optionnelle&amp;gt;&amp;gt;&lt;br /&gt;
     ProgressMessage(_TP(&#039;Fermeture de la transaction.&#039;));&lt;br /&gt;
&lt;br /&gt;
     ClassManager.CommitlongTran; &lt;br /&gt;
     vTimeCom := GetTickCount;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Clôture transaction en %s Ms, sur un total de %s Ms.&#039;),[TickToString(vTimeCom-vTimeLst),TickToString(vTimeCom-vTimeOrg)]));&lt;br /&gt;
   except&lt;br /&gt;
     ClassManager.RollBacklongTran;&lt;br /&gt;
     ProgressMessage(Format(_TP(&#039;Erreur d&#039;&#039;import : %s&#039;),[e.Message]));&lt;br /&gt;
     raise;&lt;br /&gt;
   end;&lt;br /&gt;
 end&lt;br /&gt;
 else&lt;br /&gt;
   ERule.Create(Format(_TP(&#039;Le format %s n&#039;&#039;a pas été trouvé.&#039;),[vFormatCode]));&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
{{Footer|Développement DSM}}&lt;br /&gt;
[[category:RTL Framework]]&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Guide_des_formats&amp;diff=5726</id>
		<title>Guide des formats</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Guide_des_formats&amp;diff=5726"/>
		<updated>2011-09-12T06:31:06Z</updated>

		<summary type="html">&lt;p&gt;Thdym : /* Gestion des formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{new|tahoe}}&lt;br /&gt;
&lt;br /&gt;
Les formats de fichier permettent de décrire les correspondances entre une structure de données et un modèle métier. Une fois cette correspondance établie il est possible d&#039;importer ou d&#039;exporter les fichiers correspondants à cette structure.&lt;br /&gt;
&lt;br /&gt;
==Vue globale==&lt;br /&gt;
&lt;br /&gt;
{{#images:apres_tahoe.jpg|formats}}&lt;br /&gt;
&lt;br /&gt;
==Administration==&lt;br /&gt;
&lt;br /&gt;
Les formats sont stockés dans le référentiel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#images:admin1.jpg|formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Filtres de caractères ===&lt;br /&gt;
&lt;br /&gt;
{{#images:admin_format_gen_xml_2.png|formats}}&lt;br /&gt;
&lt;br /&gt;
Pour les formats de génération, il est possible de filtrer les données écrites dans le fichier généré.&lt;br /&gt;
&lt;br /&gt;
Pour cela, quatre choix sont possibles.&lt;br /&gt;
 &lt;br /&gt;
* Aucun &lt;br /&gt;
* CFONB : [[TextToCFONBText_(rtl)|Voir le fonctionnement du filtre]]&lt;br /&gt;
* EDI : [[TextToEDIText_(rtl)|Voir le fonctionnement du filtre]]&lt;br /&gt;
* Personnalisé : Pour chaque caractère de la chaîne à filtrer, si le caractère appartient à la liste des caractères autorisés il n’est pas filtré sinon on enlève ses éventuels accents, si le caractère sans accent n’appartient toujours pas à la liste des caractères autorisés, il est remplacé par un blanc.&lt;br /&gt;
&lt;br /&gt;
Exemple de filtre personnalisé : Caractères autorisés « abcde »&lt;br /&gt;
&lt;br /&gt;
« aa » --&amp;gt; « aa »&lt;br /&gt;
&lt;br /&gt;
« azza » --&amp;gt; « a  a »&lt;br /&gt;
&lt;br /&gt;
« aéèêa » --&amp;gt; « aeeea »&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Schémas===&lt;br /&gt;
&lt;br /&gt;
{{#images:admin_format_gen_xml_3.png|formats}}&lt;br /&gt;
&lt;br /&gt;
Pour les formats de type xml, un schéma (fichier xsd) est requis à l&#039;exécution.&lt;br /&gt;
&lt;br /&gt;
Lorsque le schéma est chargé, il apparaît (lui ainsi que les schémas qu&#039;il référence éventuellement)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#images:admin_format_int_xml_2.png|formats}}&lt;br /&gt;
&lt;br /&gt;
==Mise en œuvre==&lt;br /&gt;
&lt;br /&gt;
===Importer un fichier===&lt;br /&gt;
&lt;br /&gt;
L&#039;importation d&#039;un fichier en utilisant un format de définition peut s&#039;effectuer &lt;br /&gt;
&lt;br /&gt;
* Dans un processus métier par script métier&lt;br /&gt;
&lt;br /&gt;
Utiliser la méthode d&#039;[[ImportByFormatDef (rtl)|importation de fichier en utilisant un format]].&lt;br /&gt;
&lt;br /&gt;
* A partir de l&#039;assistant d&#039;importation&lt;br /&gt;
Cochez &amp;quot;Format de fichier&amp;quot; puis sélectionner le format de définition souhaité.&lt;br /&gt;
&lt;br /&gt;
{{#images:format7.png|formats}}&lt;br /&gt;
&lt;br /&gt;
{{tip|En général l&#039;importation de fichier structuré complexe nécessite un processus pour transformer et compléter les informations de sorte que cette méthode utilisant l&#039;assistant d&#039;importation est rarement utilisable.}}&lt;br /&gt;
&lt;br /&gt;
===Exporter un fichier===&lt;br /&gt;
&lt;br /&gt;
Utiliser la méthode de [[ExportByFormatDef (rtl)|génération de fichier en utilisant un format]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gestion des formats==&lt;br /&gt;
&lt;br /&gt;
Si les formats sont stockés sous forme xml dans le référentiel pour des raisons de performance, la définition des formats s&#039;effectue dans une base métier. (La conception d&#039;un format peut ainsi s&#039;effectuer en web).&lt;br /&gt;
&lt;br /&gt;
Ainsi, il est nécessaire d&#039;enregistrer le format dans le référentiel pour que les modifications apportées soient prises en compte lors de l&#039;exécution.&lt;br /&gt;
&lt;br /&gt;
{{#images:SCRFORMGENXML_ACTION.png|formats}}&lt;br /&gt;
&lt;br /&gt;
Utiliser les interfaces utilisateurs situées dans le menu &amp;quot;Outils/Définition des formats&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{#images:format1.png|formats}}&lt;br /&gt;
&lt;br /&gt;
{{#images:format2.png|formats}}&lt;br /&gt;
&lt;br /&gt;
Pour créer un format utilisez l&#039;assistant de création de format :&lt;br /&gt;
&lt;br /&gt;
{{#images:format6.png|formats}}&lt;br /&gt;
&lt;br /&gt;
{{tip|La duplication est une solution simple pour apporter des modifications à format système}}&lt;br /&gt;
&lt;br /&gt;
Voir aussi : &lt;br /&gt;
&lt;br /&gt;
[[Reference_format_fichier|Référence des formats de fichiers]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RTL Format de fichier]]&lt;br /&gt;
[[Category:Tahoe]]&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fichier:SCRFORMGENXML_ACTION.png&amp;diff=5725</id>
		<title>Fichier:SCRFORMGENXML ACTION.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fichier:SCRFORMGENXML_ACTION.png&amp;diff=5725"/>
		<updated>2011-09-12T06:28:56Z</updated>

		<summary type="html">&lt;p&gt;Thdym : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thdym</name></author>
	</entry>
</feed>