<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://frp.sage.fr/wiki1000/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://frp.sage.fr/wiki1000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Syfre</id>
		<title>Wiki1000 - Contributions de l'utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://frp.sage.fr/wiki1000/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Syfre"/>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Sp%C3%A9cial:Contributions/Syfre"/>
		<updated>2026-05-03T13:47:08Z</updated>
		<subtitle>Contributions de l'utilisateur</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/CreateDocumentFromDesc_(TdbfDocument)</id>
		<title>CreateDocumentFromDesc (TdbfDocument)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/CreateDocumentFromDesc_(TdbfDocument)"/>
				<updated>2026-04-24T12:46:34Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « &amp;lt;source lang='delphi'&amp;gt;class function CreateDocumentEx(desc:TJsonStruct; var aReason:string):TabsCustomDocument;&amp;lt;/source&amp;gt;  Cette fonction crée un document à partir d'un d... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang='delphi'&amp;gt;class function CreateDocumentEx(desc:TJsonStruct; var aReason:string):TabsCustomDocument;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction crée un document à partir d'un descripteur json.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|desc&lt;br /&gt;
|Descripteur structure json &lt;br /&gt;
|-&lt;br /&gt;
|aReason &lt;br /&gt;
|Raison de l'erreur en cas d'échec&lt;br /&gt;
|-&lt;br /&gt;
|Reesult&lt;br /&gt;
|L'objet document créé ou nil &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Descripteur&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|Chaine&lt;br /&gt;
|Nom du document&lt;br /&gt;
|-&lt;br /&gt;
|title&lt;br /&gt;
|Chaine&lt;br /&gt;
|Libellé associé au document&lt;br /&gt;
|-&lt;br /&gt;
|contentType&lt;br /&gt;
|Chaine&lt;br /&gt;
|Type de contenu du document&lt;br /&gt;
|-&lt;br /&gt;
|nature&lt;br /&gt;
|Entier&lt;br /&gt;
|Nature du document&lt;br /&gt;
|-&lt;br /&gt;
|oidObject&lt;br /&gt;
|Chaine&lt;br /&gt;
|Oid de l'objet auquel est associé le document&lt;br /&gt;
|-&lt;br /&gt;
|lastModified&lt;br /&gt;
|Datetime&lt;br /&gt;
|Date heure de modification du document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le nom du document peut être :&lt;br /&gt;
&lt;br /&gt;
En Webtop&lt;br /&gt;
# Un chemin vers un fichier accessible à partir de la sandbox du service&lt;br /&gt;
# Le nom d'un document téléchargé dans la session de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
En Destop&lt;br /&gt;
# Un chemin vers un fichier accessible à partir de l'application&lt;br /&gt;
# Le nom d'un document téléchargé dans le répertoire cache des documents (cache\documents\uploaded).&lt;br /&gt;
&lt;br /&gt;
La nature du document peut être une valeur de l'énuméré Nature de document:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Autre&lt;br /&gt;
|DOCUMENTNATURE_OTHER&lt;br /&gt;
|-&lt;br /&gt;
|Archive&lt;br /&gt;
|DOCUMENTNATURE_ARCHIVE&lt;br /&gt;
|-&lt;br /&gt;
|Elément d'archive&lt;br /&gt;
|DOCUMENTNATURE_ARCHIVE_ITEM&lt;br /&gt;
|-&lt;br /&gt;
|Facture&lt;br /&gt;
|DOCUMENTNATURE_INVOICE&lt;br /&gt;
|-&lt;br /&gt;
|Visuel PDF de facture&lt;br /&gt;
|DOCUMENTNATURE_INVOICE_PDF&lt;br /&gt;
|-&lt;br /&gt;
|Facture UBL&lt;br /&gt;
|DOCUMENTNATURE_INVOICE_UBL&lt;br /&gt;
|-&lt;br /&gt;
|Validation UBL&lt;br /&gt;
|DOCUMENTNATURE_INVOICE_UBL_SCH&lt;br /&gt;
|-&lt;br /&gt;
|Facture CII&lt;br /&gt;
|DOCUMENTNATURE_INVOICE_CII&lt;br /&gt;
|-&lt;br /&gt;
|Validation CII&lt;br /&gt;
|DOCUMENTNATURE_INVOICE_CII_SCH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Exemple :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
//function ExecuteAction(req:TJson; resp:TJson):boolean;&lt;br /&gt;
var fileData:TJsonStruct; aReason:string; &lt;br /&gt;
begin&lt;br /&gt;
  // Executed if beforeExecute returns True&lt;br /&gt;
  //&lt;br /&gt;
  Result := False; &lt;br /&gt;
  aReason := '';&lt;br /&gt;
  // &lt;br /&gt;
  fileData := GetFileData(req);&lt;br /&gt;
  if not Assigned(fileData) then Exit; // no expected&lt;br /&gt;
  //&lt;br /&gt;
  if (fileData.name&amp;lt;&amp;gt;'') then&lt;br /&gt;
   begin&lt;br /&gt;
     fileData.title := titleDocument; &lt;br /&gt;
     fileData.comment := commentaire.value;&lt;br /&gt;
     //.... &lt;br /&gt;
     //showMessage('fileData'#13'%s',[fileData]); &lt;br /&gt;
     // &lt;br /&gt;
     withP transaction do&lt;br /&gt;
      begin&lt;br /&gt;
        TdbfDocument.CreateDocumentFromDesc(fileData,aReason);&lt;br /&gt;
      end; &lt;br /&gt;
   end; &lt;br /&gt;
  // &lt;br /&gt;
  Result := (aReason=''); &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;
&lt;br /&gt;
{{Footer|TdbfDocument}}&lt;br /&gt;
[[category:TdbfDocument]]&lt;br /&gt;
[[Category:Version800]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/TdbfDocument_(class)</id>
		<title>TdbfDocument (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/TdbfDocument_(class)"/>
				<updated>2026-04-24T12:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Méthodes de classe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Introduction==&lt;br /&gt;
La classe TdbfDocument est la classe des documents&lt;br /&gt;
&lt;br /&gt;
===Attributs===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[DateCreate (TdbfDocument)|DateCreate]]&lt;br /&gt;
|Date de création de cet objet&lt;br /&gt;
|-&lt;br /&gt;
|[[oidObject (TdbfDocument)|oidObject]]&lt;br /&gt;
|Identifiant de l'objet associé au document&lt;br /&gt;
|-&lt;br /&gt;
|[[KeyWords (TdbfDocument)|KeyWords]]&lt;br /&gt;
|Mots clés associés au document&lt;br /&gt;
|-&lt;br /&gt;
|[[Document (TdbfDocument)|Document]]&lt;br /&gt;
|Nom ou chemin du document&lt;br /&gt;
|-&lt;br /&gt;
|[[DateDocument (TdbfDocument)|DateDocument]]&lt;br /&gt;
|Date du document&lt;br /&gt;
|-&lt;br /&gt;
|[[ObjectBinary (TdbfDocument)|ObjectBinary]]&lt;br /&gt;
|Contenu binaire document&lt;br /&gt;
|-&lt;br /&gt;
|[[DocumentType (TdbfDocument)|DocumentType]]&lt;br /&gt;
|Type du document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes d'instance===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[ViewDocument (TdbfDocument)|ViewDocument]]&lt;br /&gt;
|Visualiser le document&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsBase64Binary (TdbfDocument)|GetAsBase64Binary]]&lt;br /&gt;
|Obtenir le contenu document sous forme d'un flux encodé en base 64&lt;br /&gt;
|-&lt;br /&gt;
|[[SetAsBase64Binary (TdbfDocument)|SetAsBase64Binary]]&lt;br /&gt;
|défini le contenu du document par un flux encodé en base 64&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsDataURL (TdbfDocument)|GetAsDataURL]]&lt;br /&gt;
|Obtenir le contenu du document sous forme d'un flux de type toDataURL()&lt;br /&gt;
|-&lt;br /&gt;
|[[SetAsDataURL (TdbfDocument)|SetAsDataURL]]&lt;br /&gt;
|Défini le contenu du document par un flux de type toDataURL()&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsXMLDocument (TdbfDocument)|GetAsXMLDocument]]&lt;br /&gt;
|Obtenir le contenu du document sous forme d'un document XML&lt;br /&gt;
|-&lt;br /&gt;
|[[Print (TdbfDocument)|Print]]&lt;br /&gt;
|Impression directe du contenu du document si son type est pdf&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes de classe===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDocument (TdbfDocument)|CreateDocument]]&lt;br /&gt;
|Créer un document rattaché à un objet&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDocumentEx (TdbfDocument)|CreateDocumentEx]]&lt;br /&gt;
|Créer un document rattaché à un objet&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDocumentFromDesc (TdbfDocument)|CreateDocumentFromDesc]]&lt;br /&gt;
|Créer un document à partir d'un descripteur json&lt;br /&gt;
|-&lt;br /&gt;
|[[ExportToCompressedFile (TdbfDocument)|ExportToCompressedFile]]&lt;br /&gt;
|Exporter une liste de documents dans un fichier compressé &lt;br /&gt;
|-&lt;br /&gt;
|[[GetPdfAttachements (TdbfDocument)|GetPdfAttachements]]&lt;br /&gt;
|Extraire tous les attachements d'un flux PDF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[TdbfDocumentType (class)|TdbfDocumentType]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Code métier}}&lt;br /&gt;
[[category:Classes frameworks]]&lt;br /&gt;
[[category:Documents]]&lt;br /&gt;
[[category:TdbfDocument]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/TdbfDocument_(class)</id>
		<title>TdbfDocument (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/TdbfDocument_(class)"/>
				<updated>2026-04-24T12:22:39Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Méthodes de classe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Introduction==&lt;br /&gt;
La classe TdbfDocument est la classe des documents&lt;br /&gt;
&lt;br /&gt;
===Attributs===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[DateCreate (TdbfDocument)|DateCreate]]&lt;br /&gt;
|Date de création de cet objet&lt;br /&gt;
|-&lt;br /&gt;
|[[oidObject (TdbfDocument)|oidObject]]&lt;br /&gt;
|Identifiant de l'objet associé au document&lt;br /&gt;
|-&lt;br /&gt;
|[[KeyWords (TdbfDocument)|KeyWords]]&lt;br /&gt;
|Mots clés associés au document&lt;br /&gt;
|-&lt;br /&gt;
|[[Document (TdbfDocument)|Document]]&lt;br /&gt;
|Nom ou chemin du document&lt;br /&gt;
|-&lt;br /&gt;
|[[DateDocument (TdbfDocument)|DateDocument]]&lt;br /&gt;
|Date du document&lt;br /&gt;
|-&lt;br /&gt;
|[[ObjectBinary (TdbfDocument)|ObjectBinary]]&lt;br /&gt;
|Contenu binaire document&lt;br /&gt;
|-&lt;br /&gt;
|[[DocumentType (TdbfDocument)|DocumentType]]&lt;br /&gt;
|Type du document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes d'instance===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[ViewDocument (TdbfDocument)|ViewDocument]]&lt;br /&gt;
|Visualiser le document&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsBase64Binary (TdbfDocument)|GetAsBase64Binary]]&lt;br /&gt;
|Obtenir le contenu document sous forme d'un flux encodé en base 64&lt;br /&gt;
|-&lt;br /&gt;
|[[SetAsBase64Binary (TdbfDocument)|SetAsBase64Binary]]&lt;br /&gt;
|défini le contenu du document par un flux encodé en base 64&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsDataURL (TdbfDocument)|GetAsDataURL]]&lt;br /&gt;
|Obtenir le contenu du document sous forme d'un flux de type toDataURL()&lt;br /&gt;
|-&lt;br /&gt;
|[[SetAsDataURL (TdbfDocument)|SetAsDataURL]]&lt;br /&gt;
|Défini le contenu du document par un flux de type toDataURL()&lt;br /&gt;
|-&lt;br /&gt;
|[[GetAsXMLDocument (TdbfDocument)|GetAsXMLDocument]]&lt;br /&gt;
|Obtenir le contenu du document sous forme d'un document XML&lt;br /&gt;
|-&lt;br /&gt;
|[[Print (TdbfDocument)|Print]]&lt;br /&gt;
|Impression directe du contenu du document si son type est pdf&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes de classe===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDocument (TdbfDocument)|CreateDocument]]&lt;br /&gt;
|Créer un document rattaché à un objet&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDocumentEx (TdbfDocument)|CreateDocumentEx]]&lt;br /&gt;
|Créer un document rattaché à un objet&lt;br /&gt;
|-&lt;br /&gt;
|[[CreateDoucmentFromDesc (TdbfDocument)|CreateDoucmentFromDesc]]&lt;br /&gt;
|Créer un document à partir d'un descripteur json&lt;br /&gt;
|-&lt;br /&gt;
|[[ExportToCompressedFile (TdbfDocument)|ExportToCompressedFile]]&lt;br /&gt;
|Exporter une liste de documents dans un fichier compressé &lt;br /&gt;
|-&lt;br /&gt;
|[[GetPdfAttachements (TdbfDocument)|GetPdfAttachements]]&lt;br /&gt;
|Extraire tous les attachements d'un flux PDF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[TdbfDocumentType (class)|TdbfDocumentType]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Code métier}}&lt;br /&gt;
[[category:Classes frameworks]]&lt;br /&gt;
[[category:Documents]]&lt;br /&gt;
[[category:TdbfDocument]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)</id>
		<title>Fichier de configuration (server)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)"/>
				<updated>2026-03-16T14:34:38Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
Le Serveur d'application Sage 1000 utilise un fichier de configuration situé dans le répertoire du serveur.&lt;br /&gt;
&lt;br /&gt;
{{info|Le nom du fichier est serverl1000.ini}}&lt;br /&gt;
&lt;br /&gt;
Ce fichier peut être soit modifié à l'aide de la console d'administration des services, soit manuellement par un éditeur de texte.&lt;br /&gt;
&lt;br /&gt;
{{tip|Le fichier est chargé au démarrage du service.}}&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
Le fichier peut configurer plusieurs services exécutés sur le même serveur, chaque service comporte au moins deux sections :&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SERVICE_NAME]&lt;br /&gt;
: Cette entrée détermine la configuration réseau du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE]&lt;br /&gt;
: Cette entrée détermine la configuration logicielle du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE\Export]&lt;br /&gt;
: Cette entrée configure la fonction d'exportation du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\MYSERVICE]&lt;br /&gt;
ipcMode=ipcSHM&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
shmAddress=SYFRE&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\MYSERVICE]&lt;br /&gt;
Master base=orasql://myhost/DBMASTER_ORA?prefix=&amp;quot;DBMASTERT_ORA.&amp;quot;&lt;br /&gt;
Master driver=orasql&lt;br /&gt;
Master OS Authentication=0&lt;br /&gt;
Master user=DBMASTER_ORA&lt;br /&gt;
Master password=DBMASTER_ORA&lt;br /&gt;
Server Societies=Société de démonstration GCF 1000&lt;br /&gt;
Server Application=Sage 1000 Suite Financière&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chaque section est composée d'une liste de variables (NomVariable=ValeurVariable), les types de données des variables sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|Chaîne de caractère&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|Valeur logique 0:Non 1:Oui&lt;br /&gt;
|-&lt;br /&gt;
|Integer&lt;br /&gt;
|Valeur entière&lt;br /&gt;
|-&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste de chaîne de caractère séparée par des virgules.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Section IPC===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Contexte&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|ipcMode&lt;br /&gt;
|enumération&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|&lt;br /&gt;
*ipcTCP&lt;br /&gt;
:Mode de communication par TCP/IP&lt;br /&gt;
*ipcSHM&lt;br /&gt;
:Mode de communication par mémoire partagée (dépréciée)&lt;br /&gt;
|-&lt;br /&gt;
|tcpPort&lt;br /&gt;
|Integer&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Port de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|tcpAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Adresse de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|shmAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Nom du segment de mémoire partagé&lt;br /&gt;
|-&lt;br /&gt;
|serverList&lt;br /&gt;
|Serveur&lt;br /&gt;
|String list&lt;br /&gt;
|Configuration de Cluster&amp;lt;br&amp;gt;&lt;br /&gt;
Liste des services associés à cet identifiant de service. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\TRESO]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
tcpAddress=localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration Cluster :&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration des services :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration du client HTTP :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Servers===&lt;br /&gt;
====IPC====&lt;br /&gt;
Ces variables configurent la gestion des services IPC.&lt;br /&gt;
&lt;br /&gt;
La configuration des services IPC peut être renseignée dans une section IPC&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;IPC Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|IPC Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section IPC contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|IPC Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre les services IPC (défaut true)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les services IPC sont les services permettant de communiquer via RPC.&lt;br /&gt;
&lt;br /&gt;
Vous avez besoins des services IPC si :&lt;br /&gt;
* Vous utilisez un serveur HTTP externe (IIS ou Apache).&lt;br /&gt;
* Vous utilisez la Console des Processus Métiers pour dialoguer avec ce Service.&lt;br /&gt;
* Vous utilisez le Contrôleur des services.&lt;br /&gt;
* Ce Service exécute des tâches de traitement déléguées par un autre Service.&lt;br /&gt;
&lt;br /&gt;
Si vous n'utilisez pas les services IPC il est conseillé de ne pas les démarrer.&lt;br /&gt;
&lt;br /&gt;
{{tip|Ce paramètre n'est pas modifiable depuis la console des services car si vous désactivez les services IPC le contrôleur n'est plus opérationnel}}&lt;br /&gt;
&lt;br /&gt;
====Sessions====&lt;br /&gt;
Ces variables configurent la gestion des sessions.&lt;br /&gt;
&lt;br /&gt;
La configuration des sessions peut être renseignée dans une section SESSIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SESSIONS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;SESSIONS Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Défaut&lt;br /&gt;
!Min&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SESSIONS Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Référence un nom de section SESSIONS contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|CheckInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|1 minute&lt;br /&gt;
|1 minute&lt;br /&gt;
|Délai entre chaque test d'expiration en seconde.&lt;br /&gt;
|-&lt;br /&gt;
|ExpireInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|15 minutes&lt;br /&gt;
|&lt;br /&gt;
|Délai d'expiration des sessions en seconde.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Base master====&lt;br /&gt;
Ces variables configurent la base Master utilisée par le service.&lt;br /&gt;
&lt;br /&gt;
La configuration de la base master peut être renseignée dans une section MASTER &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\MASTER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Master Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Master Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section MASTER contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|Master base&lt;br /&gt;
|String&lt;br /&gt;
|Nom de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master driver&lt;br /&gt;
|String&lt;br /&gt;
|Nom du driver de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master OS Authentication&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utiliser l'authentification du système d'exploitation.&lt;br /&gt;
|-&lt;br /&gt;
|Master user&lt;br /&gt;
|String&lt;br /&gt;
|Nom d'utilisateur utilisé pour la connexion à la base Master&lt;br /&gt;
|-&lt;br /&gt;
|Master password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe utilisé pour la connexion à la base Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Application et Sociétés====&lt;br /&gt;
Ces variables configurent l'application et les sociétés servies par le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Societies&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste des sociétés/dossiers servies par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Application&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'application servie par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Password&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Mot de passe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User Group&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du groupe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Authentication&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Annuaire utilisé pour l'authentification.&lt;br /&gt;
|-&lt;br /&gt;
|Authentication Directories&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|8.00&lt;br /&gt;
|Annuaires disponibles pour ce service.(code des annuaires séparés par &amp;quot;;&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Service====&lt;br /&gt;
Ces variables configurent le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du service.&lt;br /&gt;
|-&lt;br /&gt;
|Cache Folder&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Répertoire où stocker les fichiers temporaires et les fichiers en cache.&lt;br /&gt;
|-&lt;br /&gt;
|[[Zone publique (server)|Public Folder]]&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|[[Zone_publique_(server)|Racine des répertoires partagés du service]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Public links (server)|Public Links]]&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de répertoires réseaux (séparés par un ;) pour lesquels des [[Stockage_des_documents|documents peuvent être associés]].&lt;br /&gt;
|-&lt;br /&gt;
|Send Alert To&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste d'adresses emails (séparées par un ;) auxquelles seront envoyés les messages d'alertes.&lt;br /&gt;
|-&lt;br /&gt;
|Scripts&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de références CSS ajouté aux pages HTML&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de lignes affichées dans les grilles (par défaut à 10 000). &lt;br /&gt;
|-&lt;br /&gt;
|[[Security mode (server)|Security Mode]]&lt;br /&gt;
|String&lt;br /&gt;
|7.00&lt;br /&gt;
|Valeurs possibles : Intranet (valeur par défaut) / Internet [[Service_exposé_sur_internet|Voir Service exposé sur internet]]&lt;br /&gt;
|-&lt;br /&gt;
|Enable Remember User&lt;br /&gt;
|boolean&lt;br /&gt;
|7.10&lt;br /&gt;
|Permet à l'utilisateur d'avoir son nom pré-renseigné dans la page d'authentification (par défaut à vrai) &lt;br /&gt;
|-&lt;br /&gt;
|MaxPreviewPageCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview max page&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview blocking&lt;br /&gt;
|Boolean&lt;br /&gt;
|10.00&lt;br /&gt;
|1:Les aperçus sont affichés directement en onglet 0:les aperçus sont envoyés dans la bam. &lt;br /&gt;
|-&lt;br /&gt;
|Preview timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Délai d'attente de fin d'aperçu si Preview blocking=1. &lt;br /&gt;
|-&lt;br /&gt;
|Printer Filter&lt;br /&gt;
|chaine&lt;br /&gt;
|&lt;br /&gt;
|Noms des imprimantes à ne pas proposer, séparées par des points virgules (9.20)&lt;br /&gt;
|-&lt;br /&gt;
|Portal tab limits&lt;br /&gt;
|Integer&lt;br /&gt;
|10&lt;br /&gt;
|Limite du nombre de TAB ouverts dans le portail&lt;br /&gt;
|-&lt;br /&gt;
|Portal redirect legacy&lt;br /&gt;
|Boolean&lt;br /&gt;
|false&lt;br /&gt;
|Utilise la redirection vers l'ancien portail&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Automates====&lt;br /&gt;
Ces variables configurent le serveur d'automate inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section AUTOMATE &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\AUTOMATE\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Automate Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Automate Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Référence une section AUTOMATE.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Started&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|Démarre le serveur d'automate. (défaut) (*)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Automate Name&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du serveur d'automate à démarrer. (*)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Message Box&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Message Box&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Boite à messages utilisé par le serveur d'automate.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Service&amp;lt;br&amp;gt;&lt;br /&gt;
Process Task Service&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du Service 1000 exécutant les tâches du serveur d'automate.(hostname.servicename)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Count&amp;lt;br&amp;gt;&lt;br /&gt;
|Integer&lt;br /&gt;
|6.50&lt;br /&gt;
|Nombre maximal de tâches automates simultanées (défaut 1).&lt;br /&gt;
|-&lt;br /&gt;
|Automate Debug&amp;lt;br&amp;gt;&lt;br /&gt;
|Boolean&lt;br /&gt;
|7.00 Patch&lt;br /&gt;
|Active le mode debug verbose (**).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (*) Ces valeurs peuvent être modifiées sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (**) A utiliser conjointement avec la console de trap snmp&lt;br /&gt;
&lt;br /&gt;
====Processus métiers====&lt;br /&gt;
Ces variables configurent le service de Processus Métiers inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|BP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Processus Métiers (défault).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} Cette valeur peut être modifiée sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
====Système====&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROCESS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROCESS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Process Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Process Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROCESS&lt;br /&gt;
|-&lt;br /&gt;
|ProcessAffinity&lt;br /&gt;
|String&lt;br /&gt;
|Détermine les coeurs utilisés par le processus sur une machine multi-coeurs&amp;lt;br&amp;gt;&lt;br /&gt;
ex : 1,3 pour utiliser les coeurs 1 et 3 d'une machine multi-coeurs.&lt;br /&gt;
|-&lt;br /&gt;
|ThreadPoolSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du pool de thread (20)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour un écran (défaut:20, 0:désactive l'utilisation du cache)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheLimit&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour l'ensemble des écrans (256)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheReuse&lt;br /&gt;
|Integer&lt;br /&gt;
|Nombre de fois qu'un écran peut être réutilisé (-1 : pas de limite)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*ProcessAffinity&lt;br /&gt;
:Le Processus du serveur est un processus multi-threadé, sur une machine multi-coeurs il utilise tous les coeurs disponibles sur le système d'exploitation. Dans certain cas il est souhaitable de restreindre l'exécution à certains coeurs.&lt;br /&gt;
&lt;br /&gt;
*ThreadPoolsize&lt;br /&gt;
:Chaque requête sur le service est exécutée par une thread allouée d'un pool ; lorsque le pool est plein la requête est suspendue jusqu'à ce qu'une thread se libère dans le pool. Cette variable limite la taille du pool de thread et par conséquence limite les contentions et les &amp;quot;context switches&amp;quot; provoqués par le processus.&lt;br /&gt;
&lt;br /&gt;
*FormCacheSize&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre d'instance d'un écran dans le cache.&lt;br /&gt;
&lt;br /&gt;
*FormCacheLimit&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre maximal d'écran dans le cache et par conséquent la mémoire utilisée par le cache d'écran.&lt;br /&gt;
&lt;br /&gt;
*FormCacheReuse&lt;br /&gt;
:Indique le nombre de fois qu'un écran en cache peut être réutilisé. &lt;br /&gt;
&lt;br /&gt;
{{info|Pour pouvoir utiliser WMI la dll serviceL1000perf.dll doit être présente dans le répertoire du serveur.}}&lt;br /&gt;
{{info|Pour désactiver le cache, définir la valeur de FormCacheSize à 0}}&lt;br /&gt;
&lt;br /&gt;
====Files d'attente====&lt;br /&gt;
Ces variables configurent le service de consommation de file d'attente.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\QUEUELISTENER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Queue listener Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de consommation de file d'attente.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener queues&lt;br /&gt;
|Liste de chaînes séparées par des ,&lt;br /&gt;
|Liste des files d'attente à consommer.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Task count&lt;br /&gt;
|Entier&lt;br /&gt;
|Nombre maximal de tâches simultanées par service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les paramètres de scrutation d'une file d'attente peuvent être configurés à la suite du nom de la file d'attente en séparant les paramètres par un caractère &amp;quot;:&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Valeur par défaut (ms)&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Initial&lt;br /&gt;
|1000&lt;br /&gt;
|Délai initial de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Max&lt;br /&gt;
|10000&lt;br /&gt;
|Délai maximal de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Increment&lt;br /&gt;
|1000&lt;br /&gt;
|Incrément du délai jusqu'au délai maximal si aucun message n'est disponible (ms)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Queue listener queues=MyQueue1:2000:10:20000,MyQueue2,MyQueue3:100:10:1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec les valeurs par défaut, une file d'attente est lue initialement toutes les secondes, puis si aucun message n'est reçu, ce délai monte jusqu'à 10 secondes. Lorsque un message est reçu le délai est réinitialisé à 1 seconde et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
====Compteurs de performance====&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PERF\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Performance Counters Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Counters&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre les compteurs de performance&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Clock&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'horloge de performance&lt;br /&gt;
|-&lt;br /&gt;
|Performance Clock Delay&lt;br /&gt;
|Cardinal&lt;br /&gt;
|Période de l'horloge de performance (ms)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Start&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole du serveur HTTP de performance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Start Performance Counters&lt;br /&gt;
:Le serveur inclus un certain nombre de [[Compteurs de performance (monitoring)|compteurs de performance]] interrogeables par le [[Serveur de performance (monitoring)|serveur de performance]].&lt;br /&gt;
&lt;br /&gt;
*Start Performance Clock&lt;br /&gt;
: Démarre une horloge permettant de générer un évènement de monitoring.&lt;br /&gt;
&lt;br /&gt;
*Performance Clock Delay&lt;br /&gt;
: Période de l'horloge de performance. (défaut 1000)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Start&lt;br /&gt;
: Démarre le server HTTP de performance.&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Port&lt;br /&gt;
: Port du serveur HTTP de performance. (défaut 9999)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Protocol&lt;br /&gt;
:Protocole du serveur HTTP de performance (défaut http)&lt;br /&gt;
&lt;br /&gt;
Voir la catégorie [[:Category:Monitoring]]&lt;br /&gt;
&lt;br /&gt;
====HTTP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section HTTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\HTTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;HTTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent le protocole HTTP utilisé par le service, elles sont utilisées pour construire des URL pointant sur le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Par défaut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|http:&lt;br /&gt;
|Protocole HTTP publique du Service (http: ou https:)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Toute&lt;br /&gt;
|80&lt;br /&gt;
|Port HTTP publique du Service&lt;br /&gt;
|-&lt;br /&gt;
|HTTP HostName&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|Nom local de la machine &lt;br /&gt;
|Domaine publique du serveur HTTP frontal&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ServiceName&lt;br /&gt;
|String&lt;br /&gt;
|6.51&lt;br /&gt;
|Nom du service&lt;br /&gt;
|&lt;br /&gt;
Nom du service load-balancé utilisé par le service&amp;lt;br&amp;gt;&lt;br /&gt;
Ce nom peut différer du nom du service dans une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
C'est ce nom qui est enregistrée dans les URLs de la registry SDATA&amp;lt;br&amp;gt;&lt;br /&gt;
Implémenté pour SOAP à partir de la version 7 &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent [[Serveur HTTP (server)|le service HTTP interne]] inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{{Version700}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le protocole est défini par HTTP Protocol&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le port est défini par HTTP Port&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Site&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire du site utilisé par le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Alias&lt;br /&gt;
|String&lt;br /&gt;
|Nom de section des alias de répertoire du serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat (.pem) &lt;br /&gt;
|-&lt;br /&gt;
|HTTP RootCertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat de l'autorité intermédiaire qui a signé le certificat &amp;quot;CertFile&amp;quot; (.pem).&amp;lt;br&amp;gt;&lt;br /&gt;
Ce paramètre est optionnel, il est utile si l'autorité intermédiaire n'est pas directement reconnue par le navigateur. &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier clef privée (.pem ou .key) qui est liée au certificat &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyPassword&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le mot de passe qui permet de décoder la clef privée&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertIssuer&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente l'émetteur du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertSerial&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le numéro de série du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLVersion&lt;br /&gt;
|String&lt;br /&gt;
|Version du protocole SSL à utiliser: sslvTLSv1_1, sslvTLSv1_2, sslvTLSv1_3 (par défaut :sslvTLSv1_2)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLCipherList&lt;br /&gt;
|String&lt;br /&gt;
|Sceaux proposés par le serveur (par défaut &amp;quot;HIGH:!aNULL:!MD5:!RC4&amp;quot;) [https://www.openssl.org/docs/manmaster/apps/ciphers.html en savoir plus] Version 7.10&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|Boolean&lt;br /&gt;
|Détermine la valeur du paramètre KeepAlive des réponses du serveur HTTP.&amp;lt;br&amp;gt;&lt;br /&gt;
La valeur est True (1) par défaut et le serveur renvoi KeepAlive dans ses réponses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette valeur doit être false (0) pour une configuration load balancée.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Permet de démarrer un service http &amp;quot;privé&amp;quot;, utile dans le cadre d'une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
Ce service n'est adressé que par les autres services, et permet d'économiser la partie SSL des échanges.&amp;lt;br&amp;gt;&lt;br /&gt;
Le port de ce service ne doit pas être exposé au clients web.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Détermine la valeur du port http privé.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Log&lt;br /&gt;
|Booléen&lt;br /&gt;
|Active la journalisation des flux http (Version 10)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|TLS 1.3 supporté à partir de la version 10 en utilisant OpenSSL 3.0}}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le protocole/port publique peuvent être différent du protocole/port d'écoute si un load balancer est utilisé.}}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
* [[Serveur HTTP (server)|Serveur HTTP interne]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTPS|Configuration du serveur en HTTPs]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTP_derrière_un_répartiteur_de_charge|Configuration derrière un répartiteur de charge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains de ces paramètres peuvent être remplacés par [[Service_1000_(server)|les paramètres de la ligne de commande]] :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Paramètre de la ligne de commande&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|HTTPPORT&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|HTTPKEEPALIVE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HTTP ACLs====&lt;br /&gt;
{{version710}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ACL&lt;br /&gt;
|string&lt;br /&gt;
|Liste de règles séparées par une virgule, par ordre de priorité&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La syntaxe d'une règle ACL :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 action-IP/Nob&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*action&lt;br /&gt;
: Type de règle, doit être accept ou deny&lt;br /&gt;
*IP&lt;br /&gt;
: Addresse IP en notation pointé&lt;br /&gt;
*Nob (facultatif)&lt;br /&gt;
:Nombre de bits du masque de sous réseau, par exemple 29 correspond au masque 255.255.255.248 et défini un sous réseau de 8 adresses. &lt;br /&gt;
&lt;br /&gt;
[http://jodies.de/ipcalc Calculateur de masque]&lt;br /&gt;
&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&lt;br /&gt;
Autorise les adresses 192.168.1.0 ... 192.168.1.7 à l’exception de 192.168.1.5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deny-192.168.1.5&lt;br /&gt;
accept-192.168.1.0/29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&lt;br /&gt;
Autorise seulement l'adresse 192.168.1.1 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
accept-192.168.1.1&lt;br /&gt;
deny-0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Worker====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Le Web Worker est un mécanisme de notification asynchrone permettant au client Web d'être notifié des événements survenant coté serveur.&lt;br /&gt;
&lt;br /&gt;
Il permet de gérer les notifications de boîte à message ainsi que les notifications de traitement. &lt;br /&gt;
&lt;br /&gt;
L'utilisation du web worker améliore l'expérience utilisateur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web worker started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation du web worker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque le web worker est activé, le client génère des requêtes msg.pending périodiques.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Socket====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Les WebSockets utilisent un protocole permettant de créé des canaux de communication full-duplex à l'intérieur d'une connexion TCP. &lt;br /&gt;
&lt;br /&gt;
L'utilisation des WebSockets améliore l'expérience utilisateur par une meilleur fluidité des échanges.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web socket started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation de WebSocket &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip| &lt;br /&gt;
&lt;br /&gt;
#Les WebSocket ne sont prises en charge que par le serveur HTTP embarqué et en mode '''HTTPs uniquement'''.&lt;br /&gt;
#Les WebSockets sont activées par défaut.&lt;br /&gt;
#Les WebSocket peuvent ne pas fonctionner ou provoquer des problèmes dans le cas d'utilisation du serveur Sage 1000 derrière un load balancer qui ne supporterait pas le protocole WebSocket.&lt;br /&gt;
#L'url utilisée doit correspondre au domaine du certificat SSL. Par exemple, en entreprise, si votre serveur est myhost sur le domaine interne xxx.yyy.zzz le nom de domaine du certificat auto-généré sera myhost.xxx.yyy.zzz. Vous devez utiliser https://myhost.xxx.yyy.zzz comme url d'accès même si https://myhost est valide sur votre réseau. A défaut l'établissement des connexions websockets échoueront.}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque les websockets sont actives, le dialogue d'attente n'est pas affiché.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP CSP====&lt;br /&gt;
La [https://developer.mozilla.org/fr/docs/Web/HTTP/CSP stratégie de sécurité du contenu] permet d'améliorer la sécurité des sites web.&lt;br /&gt;
&lt;br /&gt;
{{version1000}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CSP&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des règles séparées par &amp;quot;;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple &lt;br /&gt;
&lt;br /&gt;
HTTP CSP = default-src 'self'; script-src https://example.com&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est ''default-src 'self'''&lt;br /&gt;
&lt;br /&gt;
====HTTP CORS====&lt;br /&gt;
Le [https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS CORS] permet d'autoriser des requêtes provenant d'autre domaine.&lt;br /&gt;
&lt;br /&gt;
{{version800}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CORS Allow origin&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des domaines autorisés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des domaines doit être séparée par des virgules, utilisez * pour autoriser tous les domaines.&lt;br /&gt;
&lt;br /&gt;
Les domaines doivent être qualifié par le protocole, par exemple http://origin.com&lt;br /&gt;
&lt;br /&gt;
Les domaines indiqués ici seront comparés à la valeur du champ d'entête Origin&lt;br /&gt;
&lt;br /&gt;
Lorsque le domain est autorisé, le service retourne dans la réponse :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Champ&lt;br /&gt;
!Valeur&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Origin&lt;br /&gt;
|Valeur du chanmp Origin de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Vary&lt;br /&gt;
|Origin&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Credentials&lt;br /&gt;
|true&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Methods&lt;br /&gt;
|POST,PUT,DELETE,GET,OPTION&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Headers&lt;br /&gt;
|Valeur de Access-Control-Request-Headers de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Max-Age&lt;br /&gt;
|86400&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====FTPs====&lt;br /&gt;
Ces variables configurent le serveur FTPs inclu dans le servcice.&lt;br /&gt;
Le serveur FTP peut être utilisé sur les containeurs.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\FTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;FTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Start&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Démarre le service FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP ACL&lt;br /&gt;
|Chaîne&lt;br /&gt;
|Définit une liste d'ACL optionnelle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====WEB====&lt;br /&gt;
Ces variables configurent le service WEB inclu dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section WEB&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\WEB\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;WEB Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|WEB Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section WEB&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes chargées dans une grille (défaut 5000)&lt;br /&gt;
|-&lt;br /&gt;
|GridWindowSize&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes affichées dans une page de grille. (Défaut 25)&lt;br /&gt;
|-&lt;br /&gt;
|MDIForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|MDIAssistants&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|UseTreeBookClassic&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|SavePortalTabForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|DebugJS&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Utilise les javascript en mode debug (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|RecordMode&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active le mode enregistrement pour JMeter (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|FormRedirect&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active la redirection des urls d'écran, pour IIS cette redirection doit être désactivée. (défaut 1, ativé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Export de grille ====&lt;br /&gt;
&lt;br /&gt;
{{Version2025r2}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Grid exporters&lt;br /&gt;
|liste de nom d'extension de fichier séparés par une virgule&lt;br /&gt;
|Défini les formats d'export autorisés&lt;br /&gt;
|-&lt;br /&gt;
|Grid export limits&lt;br /&gt;
|Entier&lt;br /&gt;
|Limite le nombre de lignes exportées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Mise au point, debugger {{Version700}}====&lt;br /&gt;
Ces variables configurent le remote debugger inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Le remote debugger permet à un poste client desktop de visualiser, modifier et poser des points d'arrêt dans le code métier exécuté par le service. &lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section DEBUGGER&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\DEBUGGER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;DEBUGGER Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section DEBUGGER&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Users&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des utilisateurs autorisés à utiliser le service de remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Handlers&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des handlers des évènements de trace qui seront interceptés et redirigés vers le journal d'évènement, ceci vous permet de visualiser en temps réel ces traces dans la console SNMP. Les handlers possibles sont:&lt;br /&gt;
* script&lt;br /&gt;
: Evènements générés par la fonction dbgMsg() du code métier&lt;br /&gt;
* queries&lt;br /&gt;
: Evènements de trace des requêtes SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|L'utilisation de DEBUGGER Handlers peut provoquer une forte consommation de mémoire}}&lt;br /&gt;
{{warning|Ces fonctionnalités ne doivent pas être activés sur un serveur de production}}&lt;br /&gt;
&lt;br /&gt;
====LDAP====&lt;br /&gt;
Ces variables configurent le serveur LDAP inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section LDAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\LDAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;LDAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service LDAP (défaut false).&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port d'écoute du service LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe administrateur du compte system du serveur LDAP ('uid=admin,ou=system')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SAML====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SAMLv2 Log=1&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la trace SAML (à retirer une fois la mise au point effectuée)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SOAP====&lt;br /&gt;
Ces variables configurent le service SOAP inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SOAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SOAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;SOAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Documents&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des documents SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des messages SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP 5.5x&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise l'implémentation SOAP des versions 5.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*SOAP 5.5x&lt;br /&gt;
:L'implémentation de SOAP a été récrite en version 5.6x, en cas de problème de compatibilité avec des développements existant il est possible d'utiliser l'ancienne implémentation.&lt;br /&gt;
&lt;br /&gt;
====SMTP====&lt;br /&gt;
Ces variables configurent le client SMTP utilisé par le service pour envoyer des EMails.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SMTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SMTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SMTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SMTP&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP From&lt;br /&gt;
|String&lt;br /&gt;
|Adresse EMail de l'expéditeur.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP UseTLS&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise une sécurisation TLS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SNMP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SNMP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SNMP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent l'agent SNMP inclus dans le serveur. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'agent SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port UDP de l'agent SNMP (161)&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysName&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysName pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysContact&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysContact pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysLocation&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysLocation pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Traps&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|Référence des sections SNMPTRAP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les sections SNMPTRAP permettent de définir des points d'écoute SNMP auquels seront envoyés les messages de traps.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Host&lt;br /&gt;
|string&lt;br /&gt;
|Nom réseau du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Categories&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Catégories des traps à envoyer à ce point d'écoute&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des catégories de trap est la suivante :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de catégorie&lt;br /&gt;
!Type de message&lt;br /&gt;
|-&lt;br /&gt;
|Service&lt;br /&gt;
|Messages relatifs au processus du service.&lt;br /&gt;
|-&lt;br /&gt;
|Automate&lt;br /&gt;
|Messages relatifs aux exécutions de l'automate.&lt;br /&gt;
|-&lt;br /&gt;
|BP&lt;br /&gt;
|Messages relatifs aux exécutions des Processus métiers.&lt;br /&gt;
|-&lt;br /&gt;
|Authenticate&lt;br /&gt;
|Messages relatifs aux erreurs d'authentification.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration SNMP : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\CONFIG_SNMP_1]&lt;br /&gt;
SNMP Started=1&lt;br /&gt;
SNMP Start=1&lt;br /&gt;
SNMP Port=161&lt;br /&gt;
SNMP sysContact = toto@sage.com&lt;br /&gt;
SNMP sysName = toto&lt;br /&gt;
SNMP sysLocation = Paris,France&lt;br /&gt;
SNMP Traps=Service,Automate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Service]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Service,Authenticate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Automate]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Automate,BP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PROXY====&lt;br /&gt;
&lt;br /&gt;
{{tip|Déprécié, utiliser le paramétrage dans la console d'administration.}}&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le PROXY utilisé par le client HTTP.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROXY&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROXY\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;PROXY Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROXY&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur PROXY (défaut 8080).&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|Délai d'expiration du PROXY. (défaut 60 secondes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Exceptions====&lt;br /&gt;
Ces variables configurent l'enregistrement des exceptions du service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section EXCEPTIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\EXCEPTIONS\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Exceptions logs Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section EXCEPTIONS&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Enregistrer les exceptions. Vrai par défaut.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs path&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire dans lequel seront créés les fichiers d'exception.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs ignore&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste d'exception à ignorer.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs write file&lt;br /&gt;
|booléen&lt;br /&gt;
|Un fichier d'exception est écrit. Vrai par défaut. Il peut être inutile d'écrire un fichier d'exception si les exceptions sont transmises à un gestionnaire de log (voir LOG MANAGER) et permet dans ce cas ne ne pas encombrer le disque.(V8)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Captcha====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs souhaitant s'enregistrer peuvent être soumis à un captcha.&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur commet trois erreurs lors de l'authentification, il devra saisir un captcha.&lt;br /&gt;
&lt;br /&gt;
voir http://www.google.com/recaptcha&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Public Key&lt;br /&gt;
|string&lt;br /&gt;
|Clef publique Recaptcha&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Private Key&lt;br /&gt;
|String&lt;br /&gt;
|Clef privée Recaptcha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Quotas====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs téléversent des fichiers dans un répertoire propres à la session.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers doivent avoir une extension prévue pour des questions de sécurité.&lt;br /&gt;
&lt;br /&gt;
La taille totale du répertoire est définie pour éviter un manque de place sur le disque.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Upload Document Size&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb d'un fichier uploadé; valeur par défaut : 0 (non limité)&lt;br /&gt;
|-&lt;br /&gt;
|Upload User Quota&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb du répertoire upload de l'utilisateur par session; valeur par défaut : 50&lt;br /&gt;
|-&lt;br /&gt;
|Upload Ext Allowed&lt;br /&gt;
|String&lt;br /&gt;
|Extensions autorisées; valeur par défaut : vide (tout est autorisé)&lt;br /&gt;
|-&lt;br /&gt;
|Auto delete messages&lt;br /&gt;
|Entier&lt;br /&gt;
|Durée de conservation en jours des messages &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|La liste des extensions suivantes n'est jamais filtrée car le service est susceptible de créer des fichiers de ce type (xlsx,ods,xml,pdf,,csv,sxc,xls,,jpg,jpeg,png,asice)}}&lt;br /&gt;
&lt;br /&gt;
====Clefs====&lt;br /&gt;
&lt;br /&gt;
Le stockage de certaines clefs peut être externalié&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Key Cookie&lt;br /&gt;
|chaine&lt;br /&gt;
|[[keyvault_url|url d'un stockage sécurisé externe]], si la clef est non trouvée, elle y sera créée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Logs====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Log keep days&lt;br /&gt;
|entier&lt;br /&gt;
|durée en jour de rétention des fichiers dans le répertoire de log, par défaut 10&lt;br /&gt;
|-&lt;br /&gt;
|SDATA Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Enregistre les messages SDATA dans le répertoire de log &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sections SDATA===&lt;br /&gt;
Ces sections permettent de configurer les points d'accès SDATA qui seront exposés par le service.&lt;br /&gt;
&lt;br /&gt;
Les noms de ces sections sont&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\&amp;lt;&amp;lt;nom du service&amp;gt;&amp;gt;\SData\&amp;lt;&amp;lt;incrément 1...&amp;gt;&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DataSetName&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dataset dans l'URL SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Title&lt;br /&gt;
|string&lt;br /&gt;
|Libellé informatif sur l'usage du point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Contract&lt;br /&gt;
|string&lt;br /&gt;
|Nom du paquet de service SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Version&lt;br /&gt;
|string&lt;br /&gt;
|Numéro de version, peut être utilisé pour supporté plusieurs version du même contrat&lt;br /&gt;
|-&lt;br /&gt;
|Folder&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dossier utilisé par ce point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Database&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la base de donnée utilisé pour ce point d'accès (multi-bases)&lt;br /&gt;
|-&lt;br /&gt;
|Society&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la société pour ce point d'accès (multi-société) &lt;br /&gt;
|-&lt;br /&gt;
|Restitution&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la famille de restitution pour ce point d'accès (multi-société) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\SData\1]&lt;br /&gt;
DataSetName=iphone&lt;br /&gt;
Title=syfre iphone&lt;br /&gt;
Contract=ndfContract&lt;br /&gt;
Version=1&lt;br /&gt;
Folder=Test Syfre iPhone&lt;br /&gt;
Database=dbTestIPhone&lt;br /&gt;
Society=&lt;br /&gt;
Restitution=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Export===&lt;br /&gt;
Cette section permet de configurer la fonction d'exportation des vignettes de portail des Services. &lt;br /&gt;
&lt;br /&gt;
Deux mode d'exportation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*ftp&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire public accessible par ftp.&lt;br /&gt;
&lt;br /&gt;
*file&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire local du serveur. Ce mode n'est utile que si le répertoire est un répertoire du Site et que celui-ci est public.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Protocol&lt;br /&gt;
|String&lt;br /&gt;
|ftp ou file&lt;br /&gt;
|-&lt;br /&gt;
|Export URL&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL référence le répertoire où la vignette a été générée.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'ftp' les variables suivantes sont utilisées :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP host&lt;br /&gt;
|String&lt;br /&gt;
|Addresse du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur FTP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'file' les variables suivantes sont utilisées : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration ftp utilisant une zone publique Free : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\Export]&lt;br /&gt;
Protocol=ftp&lt;br /&gt;
Export URL=http://syfre.free.fr/sage/&lt;br /&gt;
FTP Host=ftpperso.free.fr&lt;br /&gt;
FTP Port=21&lt;br /&gt;
FTP Login=syfre&lt;br /&gt;
FTP Password=XXXXXXXXXX&lt;br /&gt;
FTP Directory=sage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section ConfigServer===&lt;br /&gt;
&lt;br /&gt;
Cette section permet d'utiliser un fichier de configuration disponible sur une url.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL permet de récupérer le fichier de configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un POST HTTP est effectué sur cette url avec les données suivantes : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;deploymentId&amp;quot;:&amp;quot;nom_système_de_la_machine&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le résultat attendu est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;config&amp;quot;:&amp;quot;contenu_du_fichier_de_configuration&amp;quot;},&lt;br /&gt;
{&amp;quot;certificate&amp;quot;:&amp;quot;certificat_au_format_pfx&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Exemple de configuration (server)|Exemple de configuration]]&lt;br /&gt;
*[[Service_1000_(server)|Ligne de commande]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Serveur}}&lt;br /&gt;
[[category:Serveur]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Main_Page"/>
				<updated>2026-03-16T14:28:48Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Sage FRP 1000 =&lt;br /&gt;
&lt;br /&gt;
===Architectures===&lt;br /&gt;
* [[Vue d'ensemble 1000 (arch)|Vue d'ensemble]]&lt;br /&gt;
* [[Architecture 2 Tiers (arch)|Architecture 2 Tiers]]&lt;br /&gt;
* [[Architecture 3 Tiers (arch)|Architecture 3 Tiers]]&lt;br /&gt;
* [[Architecture cluster (arch)|Architecture cluster]]&lt;br /&gt;
&lt;br /&gt;
===Guides des administrateurs===&lt;br /&gt;
&lt;br /&gt;
* [[Administration (admin)|Administration]]&lt;br /&gt;
* [[Console d'administration (admin)|Référence de la console d'administration]]&lt;br /&gt;
* [[Flux d'administration|Flux d'administration]]&lt;br /&gt;
&lt;br /&gt;
===Guides des intégrateurs===&lt;br /&gt;
&lt;br /&gt;
* [[Automates|Automates]]&lt;br /&gt;
* [[Processus Métiers (bp)|Processus Métiers et Workflow]]&lt;br /&gt;
* [[Imports|Imports]]&lt;br /&gt;
* [[Exports|Exports]]&lt;br /&gt;
* [[Guide de la traduction|Traduction]]&lt;br /&gt;
* [[Pilotage|Pilotage]]&lt;br /&gt;
* [[Publication|Publication]]&lt;br /&gt;
* [[Portail|Portail]]&lt;br /&gt;
* [[Serveur|Serveur]]&lt;br /&gt;
* [[Complément Outlook (Outlook)|Complément Outlook]]&lt;br /&gt;
* [[Complément Excel (Excel)|Complément Excel]]&lt;br /&gt;
&lt;br /&gt;
===Guides des développeurs===&lt;br /&gt;
&lt;br /&gt;
* [[Développement ESM|Guide de développement ESM]]&lt;br /&gt;
* [[Développement DSM|Guide de développement DSM]]&lt;br /&gt;
{{IfLatest|&lt;br /&gt;
* [[Développement Mobile|Guide de développement d'applications Mobiles]]&lt;br /&gt;
}}&lt;br /&gt;
* [[Processus Métiers (bp)|Guide des processus métiers et Workflow]]&lt;br /&gt;
* [[Web Services (ws)|Guide de développement de Web Services]]&lt;br /&gt;
* [[SData|Guide de développement de l'API Rest SData]]&lt;br /&gt;
* [[Tableaux de bord (dev)|Guide de développement des Tableaux de bord]]&lt;br /&gt;
&lt;br /&gt;
* [[Concepteur de modèle|Concepteur de modèle]]&lt;br /&gt;
* [[Concepteur d'écran|Concepteur d'écran]]&lt;br /&gt;
* [[Concepteur de requêtes (Concepteur de requêtes)|Concepteur de requête]] &lt;br /&gt;
* [[Guide des formats |Guide des formats de génération/intégration de fichier]]&lt;br /&gt;
* [[Référence_pour_les_formats_de_fichier|Référence pour les formats de fichier]]&lt;br /&gt;
&lt;br /&gt;
===Références===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:RTL|Référence du langage et de l'API]]&lt;br /&gt;
* [[Référence des styles|Référence des styles desktop]]&lt;br /&gt;
* [[Référence des styles web|Référence des styles webtop]]&lt;br /&gt;
&lt;br /&gt;
===Vidéos===&lt;br /&gt;
* [[:Category:Video|Didactitiels vidéo (nécessite flash version 9.02 ou plus)]]&lt;br /&gt;
&lt;br /&gt;
===Versions===&lt;br /&gt;
&lt;br /&gt;
* [[Version 6.00 (release note)|Version 6.00]] &lt;br /&gt;
* [[Version 6.50 (release note)|Version 6.50]] &lt;br /&gt;
* [[Version 7.00 (release note)|Version 7.00]]&lt;br /&gt;
* [[Version 7.10 (release_note)|Version 7.10]]&lt;br /&gt;
* [[Version 8.00 (release_note)|Version 8.00]]&lt;br /&gt;
* [[Version 9.00 (release_note)|Version 9.00]]&lt;br /&gt;
* [[Version 9.10 (release_note)|Version 9.10]]&lt;br /&gt;
* [[Version 9.20 (release_note)|Version 9.20]]&lt;br /&gt;
* [[Version 10.00 (release_note)|Version 10.00]]&lt;br /&gt;
* [[Version 11.00 (release_note)|Version 11.00]]&lt;br /&gt;
* [[Version 2024 r1 (release_note)|Version 2024 r1]]&lt;br /&gt;
* [[Version 2024 r2 (release_note)|Version 2024 r2]]&lt;br /&gt;
* [[Version 2025 r1 (release_note)|Version 2025 r1]]&lt;br /&gt;
* [[Version 2025 r2 (release_note)|Version 2025 r2]]&lt;br /&gt;
* [[Version 2026 r1 (release_note)|Version 2026 r1]]&lt;br /&gt;
&lt;br /&gt;
===Documents===&lt;br /&gt;
* [[Documents|Documents]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Version_2026_r1_(release_note)</id>
		<title>Version 2026 r1 (release note)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Version_2026_r1_(release_note)"/>
				<updated>2026-03-16T14:28:22Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Portail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2026r1}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
''' PREVIEW '''&lt;br /&gt;
&lt;br /&gt;
==Redirection Portail==&lt;br /&gt;
&lt;br /&gt;
Le portail supporte la redirection à partir de l'écran de connexion vers un écran ou un tableau de bord de l'application.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&lt;br /&gt;
Redirection vers un écran:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://..../service_name/htmls/htmlhomepage/index.html?redirectUrl=frm%3A%2F%2Fegescom_tiersform.dfm%2FDAC19ACF0B210002079000000E690002&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection vers un dashboard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://..../service_name/htmls/htmlhomepage/index.html?redirectUrl=tab%3A%2F%2Fdashboard%2FTDashboardAdminDatabase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection vers un écran à partir de l'url de callback d'un workflow :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://.../service_name/server/rpc.l1000/rest/forms.url?value=frm%3A%2F%2Fegescom_tiersform.dfm%2FDAC19ACF0B210002079000000E690002%2F%3Fparams%3D%22ArgOidSiteCommercial%3DmptString%28%27%27%29%26SiteOid%3DmptString%28%27%27%29%22%26options%3D%22%7B%22showCaption%22%3Atrue%2C%22screenCenter%22%3Atrue%2C%22close%22%3Atrue%2C%22formType%22%3A0%2C%22formTitle%22%3A%22ACARIS%20-%20Fiche%20Tiers%22%2C%22helpUrl%22%3A%22https%3A%5C%2F%5C%2Fsagefrp1000.online-help.sage.fr%5C%2F%22%2C%22width%22%3A1827%2C%22height%22%3A912%7D%22%0A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Version2026r1]]&lt;br /&gt;
[[Category:Release note]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)</id>
		<title>Version 2025 r2 (release note)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)"/>
				<updated>2026-03-16T14:28:05Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Langage==&lt;br /&gt;
&lt;br /&gt;
* Valeur par défaut de paramètre&lt;br /&gt;
: Il est possible de définir des valeurs par défaut aux paramètres des méthodes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  MyClass = Class(TitObject)&lt;br /&gt;
    Procedure TestDeffParams;&lt;br /&gt;
    Procedure TestDefParamBool(p1:string; p2:boolean=true);&lt;br /&gt;
    Procedure TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
    Procedure TestDefParamJson2(p1:string; p2:TJson='{a:false}');&lt;br /&gt;
    Procedure TestDefParamEnum(p1:string; p2:Integer=WFCAState_Etat2);&lt;br /&gt;
    Procedure TestDefParamMulti(p1:string; p2:string='a'; p3:string='b');&lt;br /&gt;
    Function TestDefParamOne(p1:string='a'):string;&lt;br /&gt;
    Function TestDefParamFunc(p1:string='a'):string;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
var json:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  json := TJsonStruct.Create('{}');&lt;br /&gt;
  //&lt;br /&gt;
  // use Assigned insted of p2&amp;lt;&amp;gt;nil&lt;br /&gt;
  //&lt;br /&gt;
  if assigned(p2) then json.addStruct('p2',p2);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDeffParams;&lt;br /&gt;
var V:string;&lt;br /&gt;
begin&lt;br /&gt;
  V := TestDefParamFunc('c'); &lt;br /&gt;
  ShowMessage(V); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamOne;&lt;br /&gt;
  TestDefParamOne(); &lt;br /&gt;
  TestDefParamOne('x'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamMulti('a'); &lt;br /&gt;
  TestDefParamMulti('a','1'); &lt;br /&gt;
  TestDefParamMulti('a','1','2'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamBool('a'); &lt;br /&gt;
  TestDefParamBool('a',false); &lt;br /&gt;
  TestDefParamBool('a',true); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamJson2('b');&lt;br /&gt;
  TestDefParamJson2('b','{a:true}'); &lt;br /&gt;
&lt;br /&gt;
  TestDefParamEnum('c');&lt;br /&gt;
  TestDefParamEnum('c',WFCAState_Final); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type classe&lt;br /&gt;
: Les paramètres de type classe peuvent être passé directement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  MyClass1 = class&lt;br /&gt;
    class procedure foo(rg:TRegClass);&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass2 = class&lt;br /&gt;
    ....&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass3 = class&lt;br /&gt;
    procedure oldbar();&lt;br /&gt;
    procedure newbar();&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
class procedure MyClass1.foo(rg:TRegClass);&lt;br /&gt;
begin&lt;br /&gt;
  // =&amp;gt; MyClass2&lt;br /&gt;
  showMessage(rg.aClassName);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.oldbar();&lt;br /&gt;
var rg:TRegClass;&lt;br /&gt;
begin&lt;br /&gt;
  ModelManager.FindClass('MyClass2');&lt;br /&gt;
  myClass1.foo(rg);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.newbar();&lt;br /&gt;
begin&lt;br /&gt;
  myClass1.foo(MyClass2);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Json==&lt;br /&gt;
* Opérateur In&lt;br /&gt;
: Un json de type structure supporte l'opérateur In &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := True;&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Getter et Setter&lt;br /&gt;
: Un json de type structure supporte l'accès direct aux valeur des membres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  js['b'] := False; &lt;br /&gt;
  js['a'] := not js['b']; &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Constructeur implicite&lt;br /&gt;
: Un paramètre TJson peut être instancié à partir d'une chaine de caractère&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  if _foo('{a:true}') then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|La chaine doit être une constante, l'instanciation à partir d'une chaîne construite dynamiquement ne marche pas :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):string;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var v:string;&lt;br /&gt;
begin&lt;br /&gt;
  v := 'une chaine';&lt;br /&gt;
  if _foo('{a:&amp;quot;'+uneChaine+'&amp;quot;}')&amp;lt;&amp;gt;'' then showMessage('ok') else showMessage('nok'); // don't work !&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enumérateurs&lt;br /&gt;
: Un json de type strutucture supporte l'énumérateur sur les clés&lt;br /&gt;
: Un json de type tableau supporte l'énumérateur sur les éléments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 procedure _enumValues(p:TJson);&lt;br /&gt;
 var i:Integer; V:Variant;&lt;br /&gt;
 begin&lt;br /&gt;
   forEach V in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      showMessageFmt('%d:%s',[i,V]); &lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
 procedure _enumKeys(p:TJson);&lt;br /&gt;
 var i:Integer; Key,Keys,stag:string; &lt;br /&gt;
 begin&lt;br /&gt;
   Keys := ''; stag := '';&lt;br /&gt;
   forEach key in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      Keys := Keys+stag+inttostr(i)+':'+key;&lt;br /&gt;
      stag := ','; &lt;br /&gt;
    end; &lt;br /&gt;
   showMessage(Keys); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  _enumKeys('{a:true, b:false}'); &lt;br /&gt;
  _enumValues('[{a:true, b:false},{a:false, b:true}]'); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle==&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
* Méthode AllocOID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;class function AllocOID:TOID;&amp;lt;/source&amp;gt;&lt;br /&gt;
* Alloue un oid de la classe&lt;br /&gt;
: Peut être utile dans les tests unitaires&lt;br /&gt;
&lt;br /&gt;
* Méthode ToJson()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure ToJson(SA:variant);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sérialize l'objet en json &lt;br /&gt;
: SA peut être un TJsonArray ou un TJsonStruct&lt;br /&gt;
&lt;br /&gt;
===Classes SQL===&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoRefIndex&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoForeignKey&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
===Trace===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgClear();&amp;lt;/source&amp;gt;&lt;br /&gt;
: Vide la trace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgEnable(value:boolean);&amp;lt;/source&amp;gt;&lt;br /&gt;
: Active / désactive la trace&lt;br /&gt;
&lt;br /&gt;
===Vue locale===&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs &amp;quot;oidXXX&amp;quot; sans définir le rôle&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
   oidRef:TOID = oidrefB;&lt;br /&gt;
   ..&lt;br /&gt;
   idRefB:TOID = oidrefB notInSelect;&lt;br /&gt;
   [ (idRefB=%ArgRefB) and ....]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs non mappés dans la définition, ces attributs peuvent ensuite être mappés dynamiquement par le selecteur en utilisant addColumn()&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
    ACount:Integer = count(oid)&lt;br /&gt;
    oidRef:TOID;&lt;br /&gt;
    codeRef:string;&lt;br /&gt;
    libelleRef:string;&lt;br /&gt;
   ..&lt;br /&gt;
   [  ...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  sel := vue1.createSelector();&lt;br /&gt;
  case iGroupBy of&lt;br /&gt;
   'refB':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefB','oidRef'); &lt;br /&gt;
       sel.AddColumn('refB.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refB.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
   'refC':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefC','oidRef'); &lt;br /&gt;
       sel.AddColumn('refC.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refC.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type de donnée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Qualifier d'attribut NotInGroupBy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = expression('...') notInGroupBy;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Héritage de vue locale&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
   [...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
   [inherited and (...)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&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;
//function GetSelector(iGroupBy:string; iFilter:TJsonArray):TSelector;&lt;br /&gt;
Type&lt;br /&gt;
  // défini une classe de base avec tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrage = viewOf(TEcriture)&lt;br /&gt;
    lettrable:boolean = compteGeneral.lettrable notInSelect; &lt;br /&gt;
    idEtablissement:TOID = piece.oidEtablissement notInSelect; &lt;br /&gt;
    idCompteGeneral:TOID = oidCompteGeneral notInSelect; &lt;br /&gt;
    idRoleTiers:TOID = oidroleTiers notInSelect; &lt;br /&gt;
    [(lettrable=true) &lt;br /&gt;
      and ((oidLettrageEcriture='') or (dateLettrage=0)) &lt;br /&gt;
      and (typeEcriture&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (piece.lot.origineLot&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (eDate&amp;gt;=%ArgDateInf) &lt;br /&gt;
      and (eDate&amp;lt;=%ArgDateSup) &lt;br /&gt;
      and (idEtablissement=%ArgEtablissement) &lt;br /&gt;
      and (idCompteGeneral=%ArgCompteGeneral)&lt;br /&gt;
      and (idRoleTiers=%ArgRoleTiers)&lt;br /&gt;
    ] &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // Hérite de tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrageGroupBy = viewOf(vueEcritureLettrage)&lt;br /&gt;
    dateMin:TDatetime = min(eDate);&lt;br /&gt;
    dateMax:TDatetime = max(eDate); &lt;br /&gt;
    ACount:Integer = count(oid); &lt;br /&gt;
    credit:Currency = sum('credit:TCValue'); &lt;br /&gt;
    debit:Currency = sum('debit:TCValue'); &lt;br /&gt;
    solde:Currency = sumDiff(debit,credit); &lt;br /&gt;
    [inherited] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  Result := vueLettrageGroupBy.CreateSelector('','',True,[]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scope de vue locale&lt;br /&gt;
&lt;br /&gt;
Une vue locale peut être référencée en dehors de la méthode où elle est définie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure Class1.foo;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Class2.bar;&lt;br /&gt;
Type&lt;br /&gt;
  vue2 = viewOf(class1.foo.vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression Exists()&lt;br /&gt;
&lt;br /&gt;
Une expression existe peut être utilisée dans les filtres comme une valeur logique&lt;br /&gt;
&lt;br /&gt;
{{tip|Une expression Exists() est beaucoup plus rapide qu'un &amp;quot;Count&amp;lt;&amp;gt;0&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(ClassB)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
   bb:boolean = vue1.Exists('(id=self.id)',True,[]) notInSelect;&lt;br /&gt;
   [(bb=true) and (....)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression de Sous requête &lt;br /&gt;
&lt;br /&gt;
Une expression peut être définie par une sous requête&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  VueTauxADate = ViewOf(TTauxADate)&lt;br /&gt;
    idTVA : TOid = oidTVA;&lt;br /&gt;
    tDate : Date = tDate;&lt;br /&gt;
    taux : float = taux; &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vueMontantTVA = viewOf(TEcriture)&lt;br /&gt;
    dateEcriture:TDatetime=eDate notInSelect;&lt;br /&gt;
    oidTVA:TOID = ProfilTVA.oidTVA notInSelect; &lt;br /&gt;
    oidPiece:TOID = oidPiece; &lt;br /&gt;
    montantTVAReel:Currency = vueTauxADate.select('taux * self.montant_TCValue /100','(tDate&amp;lt;=self.dateEcriture)and(idTVA=self.oidTVA)','',True,[]); &lt;br /&gt;
    montantTVAReel_CodeDevise:string = montantTVAReel:CodeDevise; &lt;br /&gt;
  end; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ToJson==&lt;br /&gt;
&lt;br /&gt;
Permet de sérialiser l'objet ou l'ensemble d'objets au format json compatible avec les tables du client React&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TRole.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TSerializeJsonOptions :&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsGuid&lt;br /&gt;
: Le membre id de la sérialisation sera un GUID&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsOid&lt;br /&gt;
: Le membre id de la sérialisation sera l'OID de l'objet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//procedure GetData(SRows:TJsonArray);&lt;br /&gt;
Type&lt;br /&gt;
  myView = viewOf(...)&lt;br /&gt;
   ...&lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var sel:TSelector; &lt;br /&gt;
begin&lt;br /&gt;
  // Selector to retreive the data&lt;br /&gt;
  // &lt;br /&gt;
  sel := myView.CreateSelector('','',True,[]);&lt;br /&gt;
  sel.ToJson(SRows); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formats===&lt;br /&gt;
&lt;br /&gt;
Le formattage de la sérialisation des propriétés peut être controllé par les propriétés du type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue = viewOf(...)&lt;br /&gt;
    p:string(typeParam1,typeParam2,typeParam3) = x;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de l'attribut&lt;br /&gt;
!TypeParam1&lt;br /&gt;
!TypeParam2&lt;br /&gt;
!TypeParam3&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de tenue de compte&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtRP&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de reporting&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameters&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Valeur des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameter&lt;br /&gt;
|Nom du paramètre &lt;br /&gt;
|Valeur par défaut si le paramètre n'existe pas&lt;br /&gt;
|Valeur du paramètre &lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|fmtTaskCategory&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Catégorie de tâche&lt;br /&gt;
|-&lt;br /&gt;
|oid de TdbfDocument&lt;br /&gt;
|fmtDocumentUrl&lt;br /&gt;
|Paramètre optionnel contenant le nom du document&lt;br /&gt;
|Paramètre optionnel contenant une url externe&lt;br /&gt;
|Lien sur le document&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|fmtUTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|La date en considérée UTC et convertie en date locale&lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassLabel&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le libellé de la classe &lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassName&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le nom de la classe &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Sélecteur==&lt;br /&gt;
&lt;br /&gt;
* lastOpeStamp, lastOpeAffected, lastOpeFirstOID&lt;br /&gt;
: Attributs mis à jour par la dernière opération assembliste.&lt;br /&gt;
&lt;br /&gt;
* operationId, operation&lt;br /&gt;
: Permet d'enregistrer les opérations dans la table TsqlOperation&lt;br /&gt;
: S'applique à CopyTo()&lt;br /&gt;
&lt;br /&gt;
* RmvParameter()&lt;br /&gt;
: Permet de retirer un paramètre qui a été ajouté par AddParameter()&lt;br /&gt;
&lt;br /&gt;
* Amélioration de CopyTo&lt;br /&gt;
: Permet de créer des objets à partir d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
* CopyTo, Update, UpdateFrom&lt;br /&gt;
: Fonctionne sur les classes de stéréotype SQL&lt;br /&gt;
&lt;br /&gt;
* InsertInto&lt;br /&gt;
: Permet de créer une table temporaire à partir d'un sélecteur&lt;br /&gt;
: Réalise un select ... into TEMPTABLE from ...&lt;br /&gt;
&lt;br /&gt;
* SourceTableName&lt;br /&gt;
: Permet de sélectionner une table SQL comme source de l'opération &lt;br /&gt;
: Utiliser dans les opérations ensemblistes sur des tables temporaires&lt;br /&gt;
&lt;br /&gt;
===TsqlOperation===&lt;br /&gt;
&lt;br /&gt;
Classe SQL définie par le framework et permettant d'enregistrer les opérations du sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  TsqlOperation = Class(TsqlObject)&lt;br /&gt;
  public&lt;br /&gt;
    class procedure CleanOpe(iOpeId:string);&lt;br /&gt;
    //&lt;br /&gt;
    property action: StringS[128];&lt;br /&gt;
    property id: SQLIdentity;&lt;br /&gt;
    property oidSourceObject: TOID;&lt;br /&gt;
    property oidTargetObject: TOID;&lt;br /&gt;
    property opeId: StringS[128];&lt;br /&gt;
    property operation: StringS[128];&lt;br /&gt;
    property SourceObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
    property TargetObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* opeId, operationId&lt;br /&gt;
: Un identifiant unique (guid) identifiant l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* opération&lt;br /&gt;
: Nom de l'opération dans l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* action&lt;br /&gt;
: Action de l'opération &lt;br /&gt;
: Par exemple INSERT pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidSourceObject&lt;br /&gt;
: identifiant de l'objet source dans l'opération &lt;br /&gt;
: Par exemple l'objet source de la copie pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidTargetObject&lt;br /&gt;
: identifiant de l'objet cible dans l'opération&lt;br /&gt;
: Par exemple l'objet copié par un CopyTo&lt;br /&gt;
&lt;br /&gt;
'''Exemple d'utilisation:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // Créer des écritures a partir des réglements&lt;br /&gt;
 //&lt;br /&gt;
 procedure  _doCreateEcritureReglements(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueEcritureReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgBordereau',oidBordereauReglement); &lt;br /&gt;
   sel.Operation := 'EcrReg'; &lt;br /&gt;
   sel.OpeId := iOpeId; &lt;br /&gt;
   // &lt;br /&gt;
   sel.CopyTo('TEcriture',['oidpiece','eDate','sens','sensProrata','regimeTVA','typeEcriture'],[&lt;br /&gt;
    iOidPiece,&lt;br /&gt;
    BordereauReglement.dateReglement, &lt;br /&gt;
    sens_credit,&lt;br /&gt;
    sens_credit, &lt;br /&gt;
    regimeTVA_Encaissements,&lt;br /&gt;
    typeEcriture_Brouillard &lt;br /&gt;
   ]); &lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Type&lt;br /&gt;
  vueUpdateReglement = viewOf(TReglement)&lt;br /&gt;
   vl:TsqlOperation = join('(opeId=%ArgOpeId) and (operation=%ArgOperation) and (oidSourceObject=self.oid)'); &lt;br /&gt;
   oidEcriture:TOID = oidEcriture; &lt;br /&gt;
   oidTargetEcriture:TOID = vl.oidTargetObject; &lt;br /&gt;
   oidBordereau:TOID = oidBordereauReglement; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 // Met à jour l'oidEcriture créée sur les réglements correspondants&lt;br /&gt;
 ..&lt;br /&gt;
 procedure _doUpdateReglementsEcriture(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueUpdateReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgOpeId',iOpeId); &lt;br /&gt;
   sel.AddParameter('ArgOperation','EcrReg'); &lt;br /&gt;
   //&lt;br /&gt;
   sel.Update(['oidEcriture'],['oidTargetEcriture']); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  aOpeId := CreateGuid;&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     aOidPiece := _doCreatePiece();&lt;br /&gt;
     _doCreateEcritureReglements(aOidPiece,aOpeId);&lt;br /&gt;
     _doUpdateReglementsEcriture(aOidPice,aOpeId); &lt;br /&gt;
     ...&lt;br /&gt;
     TsqlOperation.CleanOpe(aOpeId);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UpdateFrom()===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function updateFrom(sel:TSelector; iMatchedProps:Array of string; iUpdatedProps:Array of string; iUpdatedValue:Array of variant):Integer;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permet de mettre à jour une classe à partir d'un sélecteur et d'une colonne de correspondance.&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;
Type&lt;br /&gt;
  // Update the temp table &lt;br /&gt;
  vueTemp = viewOf(TempLettrage)&lt;br /&gt;
    reference1:string = reference1;&lt;br /&gt;
    reference2:string = reference2;&lt;br /&gt;
    modeLettrage:Integer = modeLettrage; &lt;br /&gt;
  end;&lt;br /&gt;
   &lt;br /&gt;
  vueRef1 = viewOf(TempLettrage)&lt;br /&gt;
    //ACount:Integer = count(id);&lt;br /&gt;
    ATotal:Currency = sumSign(montant:TCValue,sens,'1');&lt;br /&gt;
    reference1:string = reference1; &lt;br /&gt;
    [(modeLettrage=0) and (reference1&amp;lt;&amp;gt;'')] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var selT,selG:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
    begin&lt;br /&gt;
     // for updating the temp table on &amp;quot;match&amp;quot; &lt;br /&gt;
     selT := vueTemp.CreateSelector('','',True,[]);&lt;br /&gt;
&lt;br /&gt;
     // Lettrage sur reference 1 &lt;br /&gt;
     selG := vueRef1.CreateSelector('(ATotal=0)','',True,[]);&lt;br /&gt;
     selG.useCTE := True; &lt;br /&gt;
     selT.UpdateFrom(selG,['reference1'],['modeLettrage'],[1]); &lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with CTE as (&lt;br /&gt;
select sum(case when t0.sens=1 then ISNULL(t0.montant_TCValue, 0) else -ISNULL(t0.montant_TCValue, 0) end)  as &amp;quot;ATotal&amp;quot;,t0.reference1  as &amp;quot;reference1&amp;quot;&lt;br /&gt;
from dbo.TEMPLETTRAGE t0 WITH (NOLOCK)&lt;br /&gt;
where ((t0.modeLettrage = 0) and (t0.reference1 IS NOT NULL))&lt;br /&gt;
group by t0.reference1&lt;br /&gt;
)&lt;br /&gt;
merge into dbo.TEMPLETTRAGE tm0 using (&lt;br /&gt;
SELECT  *&lt;br /&gt;
FROM CTE&lt;br /&gt;
Where (ATotal = 0.0000)&lt;br /&gt;
) tm1 on (tm1.reference1=tm0.reference1)&lt;br /&gt;
when matched then update set&lt;br /&gt;
tm0.modeLettrage = 1&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opérations ensemblistes SQL==&lt;br /&gt;
&lt;br /&gt;
Des opérations ensemblistes utilisant des tables SQL temporaires peuvent être réalisées en utilisant l'opération InserInto du selecteur.&lt;br /&gt;
&lt;br /&gt;
===Table temporaire===&lt;br /&gt;
&lt;br /&gt;
* TDatabase.AllocTempTable(JobId:string)&lt;br /&gt;
: Génère un nom de table temporaire&lt;br /&gt;
&lt;br /&gt;
* TDatabase.DropTempTables(JobId:string)&lt;br /&gt;
: Supprime (drop) les tables temporaires&lt;br /&gt;
&lt;br /&gt;
===Vue SQL locale===&lt;br /&gt;
&lt;br /&gt;
Une vue SQL locale permet d'utiliser une table SQL comme source d'opération d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // define an interface&lt;br /&gt;
  intf = interface&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // create a view which support the interface&lt;br /&gt;
  // will be used to create the temp table&lt;br /&gt;
  //&lt;br /&gt;
  vue = viewOf(MyClass,intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // define a sql class based on the interface&lt;br /&gt;
  //&lt;br /&gt;
  sql = sqlClass(intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // view on the sql class&lt;br /&gt;
  //&lt;br /&gt;
  vue2 = viewOf(sql)&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:Tselector; aJob,aTempTable:string; keepTables:boolean;&lt;br /&gt;
begin&lt;br /&gt;
  // Alloc a temp table name&lt;br /&gt;
  //&lt;br /&gt;
  aJob := CreateGuid;&lt;br /&gt;
  aTempTable := ClassManager.DefDatabase.AllocTempTable(aJob);&lt;br /&gt;
  KeepTables := false; // for debuging&lt;br /&gt;
  try&lt;br /&gt;
   // Create a temp table from MyClass view&lt;br /&gt;
   //&lt;br /&gt;
   sel := vue.CreateSelector(...);&lt;br /&gt;
   sel.insertInto(aTempTable,[...],[...]); // we create a tempTable&lt;br /&gt;
&lt;br /&gt;
   // Query the temp table throught the vue2 &lt;br /&gt;
   //&lt;br /&gt;
   sel := vue2.CreateSelector(...);&lt;br /&gt;
   sel.SourceTableName := aTempTable; // because we select the tempTable&lt;br /&gt;
&lt;br /&gt;
  ...&lt;br /&gt;
  finally&lt;br /&gt;
  if not KeepTables then ClassManager.DefDatabase.DropTempTables(aJob); &lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updater==&lt;br /&gt;
&lt;br /&gt;
Classe technique permettant de mettre à jour un attribut sur un ensemble d'objet.&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Mise à jour des compteurs qui ne peuvent pas être déterminés en SQL'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // Should returns all attributes part of the counter&lt;br /&gt;
  //&lt;br /&gt;
  vueNumeroPiece = viewOf(TPiece)&lt;br /&gt;
   pDate:TDatetime = pDate;&lt;br /&gt;
   numero:TCounter = numero; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 procedure _doUpdateNumeroPiece(iOidPiece:string);&lt;br /&gt;
 var sel:TSelector; vueNP:vueNumeroPiece; upd:TUpdater;&lt;br /&gt;
 begin&lt;br /&gt;
   upd := TPiece.CreateUpdater('numero'); &lt;br /&gt;
   // &lt;br /&gt;
   sel := vueNumeroPiece.CreateSelector('(oid=%1)','',True,[iOidPiece]);&lt;br /&gt;
   forEach vueNP in sel.AsCursor do&lt;br /&gt;
    begin&lt;br /&gt;
      vueNP.numero.AllocValue;&lt;br /&gt;
      upd.AddValue(vueNP.OID,vueNP.numero.value); &lt;br /&gt;
    end; &lt;br /&gt;
   //&lt;br /&gt;
   upd.Execute; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
&lt;br /&gt;
* [[Améliorations des contrôles d'interface (Version 11.00 2025 r2)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Version2025r2]]&lt;br /&gt;
[[Category:Release note]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Version_2026_r1_(release_note)</id>
		<title>Version 2026 r1 (release note)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Version_2026_r1_(release_note)"/>
				<updated>2026-03-16T14:27:54Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « {{version2026r1}} __TOC__  ''' PREVIEW '''  ==Portail==  Le portail supporte la redirection à partir de l'écran de connexion vers un écran ou un tableau de bord de l'ap... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2026r1}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
''' PREVIEW '''&lt;br /&gt;
&lt;br /&gt;
==Portail==&lt;br /&gt;
&lt;br /&gt;
Le portail supporte la redirection à partir de l'écran de connexion vers un écran ou un tableau de bord de l'application.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&lt;br /&gt;
Redirection vers un écran:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://..../service_name/htmls/htmlhomepage/index.html?redirectUrl=frm%3A%2F%2Fegescom_tiersform.dfm%2FDAC19ACF0B210002079000000E690002&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection vers un dashboard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://..../service_name/htmls/htmlhomepage/index.html?redirectUrl=tab%3A%2F%2Fdashboard%2FTDashboardAdminDatabase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection vers un écran à partir de l'url de callback d'un workflow :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://.../service_name/server/rpc.l1000/rest/forms.url?value=frm%3A%2F%2Fegescom_tiersform.dfm%2FDAC19ACF0B210002079000000E690002%2F%3Fparams%3D%22ArgOidSiteCommercial%3DmptString%28%27%27%29%26SiteOid%3DmptString%28%27%27%29%22%26options%3D%22%7B%22showCaption%22%3Atrue%2C%22screenCenter%22%3Atrue%2C%22close%22%3Atrue%2C%22formType%22%3A0%2C%22formTitle%22%3A%22ACARIS%20-%20Fiche%20Tiers%22%2C%22helpUrl%22%3A%22https%3A%5C%2F%5C%2Fsagefrp1000.online-help.sage.fr%5C%2F%22%2C%22width%22%3A1827%2C%22height%22%3A912%7D%22%0A&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Version2026r1]]&lt;br /&gt;
[[Category:Release note]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)</id>
		<title>Ressource (sdata)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)"/>
				<updated>2026-03-11T12:57:44Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Mise au point */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
{{tip|Voir aussi l'[[API Json (SData)|API en mode JSON]], qui permet d'encapsuler d'avantage les appels de service.}}&lt;br /&gt;
&lt;br /&gt;
==Prérequis==&lt;br /&gt;
Les requêtes SData sont exécutées sur [[SData|le point d'accès SData du service]].&lt;br /&gt;
&lt;br /&gt;
La forme simplifiée des urls est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/societe/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les requêtes sont authentifiées par un jeton d'authentification placé dans l'entête Authorization de la requêtes.&lt;br /&gt;
&lt;br /&gt;
[[Gestion des jetons d'authentification (Administration)|Le jeton d'authentification peut être géré par le client dans l'administration.]]&lt;br /&gt;
&lt;br /&gt;
Les requêtes doivent comporter les entêtes suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|accept&lt;br /&gt;
|application/json&lt;br /&gt;
|-&lt;br /&gt;
|Authorization&lt;br /&gt;
|Bearer token&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les url des requêtes doivent être encodées, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata/Société 1/ttiers...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
doit être transmis encodé en&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata.Soci%C3%A9t%C3%A9%201/ttiers....&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélection de version==&lt;br /&gt;
Il es possible d'indiquer un numéro de version dans l'url de la requête.&lt;br /&gt;
&lt;br /&gt;
Placez le numéro de version derrière le préfix sdata :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 https://.../sdata/1/....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En absence de numéro de version la dernière version sera utilisée.&lt;br /&gt;
&lt;br /&gt;
==Informations de version==&lt;br /&gt;
Utilisez la fonction $version pour retrouver les informations de version &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/$version&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;shareEnable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://localhost/sdata/$version?select=details&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;minors&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Fix $batch : Error in commit don't return message and continue execution&amp;quot;,&lt;br /&gt;
                &amp;quot;Fix time measure decimal format use . instead of local&amp;quot;,&lt;br /&gt;
                &amp;quot;Add extension information to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add operations to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add select options to $schema&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Add version information&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre select accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
!usage&lt;br /&gt;
|-&lt;br /&gt;
|details&lt;br /&gt;
|Détails des modifications des versions mineurs&lt;br /&gt;
|-&lt;br /&gt;
|patches&lt;br /&gt;
|Liste des patches installés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Mise au point==&lt;br /&gt;
Vous pouvez activer l'enregistrement des messages SDATA dans le répertoire de log du service, en [[[[Fichier_de_configuration_(server)#Logs|configurant le fichier de service]] ou bien en utilisant l'interface de configuration du service.&lt;br /&gt;
&lt;br /&gt;
[[image:Sdata-conf-log.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==Ressource (GET)==&lt;br /&gt;
Dans l'interface SData les ressources sont les objets de l'application.&lt;br /&gt;
&lt;br /&gt;
Une ressource est identifié par son uri qui représente le chemin de la ressource.&lt;br /&gt;
&lt;br /&gt;
L'uri est composé du chemin de la classe et d'un sélecteur qui est l'oid de l'objet. &lt;br /&gt;
&lt;br /&gt;
'''Exemple :''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/&amp;quot;,&lt;br /&gt;
   &amp;quot;$title&amp;quot;:&amp;quot;TTiers - -&amp;quot;,&lt;br /&gt;
   &amp;quot;$updated&amp;quot;:&amp;quot;2020-12-22T08:10:09.740Z&amp;quot;,&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;TTiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$title&amp;quot;:&amp;quot;ABI Jardin&amp;quot;,&lt;br /&gt;
         &amp;quot;$updated&amp;quot;:&amp;quot;2010-03-23T15:37:46.000Z&amp;quot;,&lt;br /&gt;
         &amp;quot;$etag&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE-000002C60000421C&amp;quot;,&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE&amp;quot;,&lt;br /&gt;
         &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/GenTiers/-/&amp;quot;,&lt;br /&gt;
         &amp;quot;stamp&amp;quot;:&amp;quot;000002C60000421C&amp;quot;,&lt;br /&gt;
         .... Attribute list ...&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sélecteur de ressource===&lt;br /&gt;
&lt;br /&gt;
Un sélecteur permet de retrouver une ressource spécifique, il est possible de rechercher une ressource par clé ou clause  &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sélecteur&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Clé&lt;br /&gt;
|TTiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
|-&lt;br /&gt;
|clause&lt;br /&gt;
|TTiers(code eq 'ABI 007')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Code de retour HTTP===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Code&lt;br /&gt;
!Résultat&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|La ressource existe &lt;br /&gt;
|-&lt;br /&gt;
|404&lt;br /&gt;
|La ressource n'existe pas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles dans les ressources===&lt;br /&gt;
La gestion des rôles de la ressource dépend du type et de la nature du rôle :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de rôle&lt;br /&gt;
!Nature&lt;br /&gt;
!Retour&lt;br /&gt;
|-&lt;br /&gt;
|Référence,Liste&lt;br /&gt;
|Composition&lt;br /&gt;
|Les ressources composants sont retournées dans le corps de la ressource composée&lt;br /&gt;
|-&lt;br /&gt;
|Référence&lt;br /&gt;
| -&lt;br /&gt;
|La ressource référencée est retournée par référence dans le corps de la ressource&lt;br /&gt;
|-&lt;br /&gt;
|Liste&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe référencée filtrée sur la référence réciproque.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
|Avec suppression en cascade &lt;br /&gt;
|Les ressources associées sont considérées comme des composants et retournées dans le corps de la ressource composée.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe associée filtrée sur la classe d'association&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Utilisez une vue pour retourner directement les attributs liés par des références, voir le paramètre select}}&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre société===&lt;br /&gt;
Par défaut, les requêtes s'exécutent dans le contexte société défini dans le jeton d'authentification.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez définir le contexte société dans le l'url de la requête :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  METHOD https://host/sdata/society/package/class ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Définir le contexte société dans l'url n'est utilisable que sur une base supportant le multi-société. Pour connaitre le statut multi-société, utilisez la requête $version ou bien interrogez [[Utilisation_du_contrôleur_de_partage_(API)|le contrôleur de partage]]}}&lt;br /&gt;
&lt;br /&gt;
==Requête sur les ressources (GET)==&lt;br /&gt;
Une requête sur les ressources est une requête sur une classe du modèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Paramètres de la requête===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!valeur&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|select&lt;br /&gt;
|liste d'attributs séparés par des virgules&lt;br /&gt;
|Liste des attributs à retourner&lt;br /&gt;
|-&lt;br /&gt;
|where&lt;br /&gt;
|Expression objet&lt;br /&gt;
|Filtre de la requête&lt;br /&gt;
|-&lt;br /&gt;
|orderBy&lt;br /&gt;
|Attribut de tri&lt;br /&gt;
|Ordre de tri de la requête&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|Taille de page (*)&lt;br /&gt;
|Pagination : Taille de page&lt;br /&gt;
|-&lt;br /&gt;
|startIndex&lt;br /&gt;
|Index de page&lt;br /&gt;
|Pagination par page : Numéro de page (0 première)&lt;br /&gt;
|-&lt;br /&gt;
|startKey&lt;br /&gt;
|Valeur de clé ou de tri&lt;br /&gt;
|Pagination par clé : Clé de position&lt;br /&gt;
|-&lt;br /&gt;
|keyDirection &lt;br /&gt;
|lt,le,gt,ge&lt;br /&gt;
|Pagination par clé : direction par rapport à startKey&lt;br /&gt;
|-&lt;br /&gt;
|dateFormat&lt;br /&gt;
|noTime, locale, utc&lt;br /&gt;
|Indique le format de date retourné pour les types de données date comptable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Il existe une limite par défaut si la valeur de count n'est pas précisée.&lt;br /&gt;
&lt;br /&gt;
Les valeurs passées en paramètre doivent être encodées en HTML &lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
 where=code eq 'ABI 007'&lt;br /&gt;
&lt;br /&gt;
doit être encodée en :&lt;br /&gt;
&lt;br /&gt;
 where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
&lt;br /&gt;
====Select====&lt;br /&gt;
Select permet de définir les attributs à retourner, par défaut tous les attributs non vide sont retournés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La présence du paramètre select conditionne la façon d'exécuter la requête.&lt;br /&gt;
&lt;br /&gt;
Les formats possibles sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!Usage&lt;br /&gt;
!Génère l'utilisation d'une vue&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Attribut x de la ressource&lt;br /&gt;
|non&lt;br /&gt;
|-&lt;br /&gt;
|x.y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure exacte)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x.+y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure externe)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as y&lt;br /&gt;
|Attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y)&lt;br /&gt;
|Opération sur l'attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y;z)&lt;br /&gt;
|Opération sur les attributs y et z de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Une vue sera utilisée si au moins un des membres de select nécessite l'utilisation d'une vue.&lt;br /&gt;
&lt;br /&gt;
Pour les opérateurs utilisables consultez [[Vue_locale_(langage)|la page sur les vues locales]]&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
* La sélection d'attribut référencé non défini peut générer l'absence de ressources dans le résultat, pour éviter ceci utilisez un spécificateur de jointure externe.&lt;br /&gt;
* La sélection d'attribut référencé par un rôle liste peut générer plusieurs ressources dans le résultat correspondant à chaque ressource liée par la relation.&lt;br /&gt;
* La séparation des paramètres pour les opérateurs ayant plusieurs paramètres utilise le séparateur ; et pas ,&lt;br /&gt;
* Lorsqu'une vue est utilisée, les filtres et ordre de tri sont exprimés par rapport à la vue. &lt;br /&gt;
&lt;br /&gt;
Par exemple : &lt;br /&gt;
* TCompteGeneral?select=codeCompte&amp;amp;where=codeCompte ge '4'&amp;amp;orderBy=codeCompte&lt;br /&gt;
mais&lt;br /&gt;
* TCompteGeneral?select=code as codeCompte&amp;amp;where=code ge '4'&amp;amp;orderBy=code&lt;br /&gt;
&lt;br /&gt;
====Dates comptables====&lt;br /&gt;
Le paramètre dateFormat permet de définir le format des dates comptables retournées par l'API&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version API&lt;br /&gt;
!dateFormat&lt;br /&gt;
!Exemple&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Temps UTC&lt;br /&gt;
|-&lt;br /&gt;
|1.6&lt;br /&gt;
|&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
| &lt;br /&gt;
|2021-06-01T00:00:00+02&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Format heure locale&lt;br /&gt;
|Un instant heure locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|noTime&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Format date locale&lt;br /&gt;
|Une date locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format heure UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
====Filtre====&lt;br /&gt;
&lt;br /&gt;
'''Opérateurs:'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!opérateur&lt;br /&gt;
!équivalence&lt;br /&gt;
!exemple&lt;br /&gt;
!encoded&lt;br /&gt;
|-&lt;br /&gt;
|eq&lt;br /&gt;
|=&lt;br /&gt;
|where=code eq 'ABI 007'&lt;br /&gt;
|where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
|-&lt;br /&gt;
|ne&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|lt&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|le&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gt&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ge&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|like&lt;br /&gt;
|like&lt;br /&gt;
|where=code like 'ABI %'&lt;br /&gt;
|where=code%20like%20%27ABI %25%27&lt;br /&gt;
|-&lt;br /&gt;
|in&lt;br /&gt;
|in&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Valeurs des paramètres:'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs des paramètres sont passées en littérale&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de donnée&lt;br /&gt;
!exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|code eq 'xxx'&lt;br /&gt;
|-&lt;br /&gt;
|boolean&lt;br /&gt;
|flag eq true&lt;br /&gt;
|-&lt;br /&gt;
|numérique&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|flottant&lt;br /&gt;
|value eq 1.0&lt;br /&gt;
|-&lt;br /&gt;
|date (voir format)&lt;br /&gt;
|$updated &amp;gt; '2019-12-31T23:00:00Z'&lt;br /&gt;
|-&lt;br /&gt;
|enum (par index)&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|enum (par constant)&lt;br /&gt;
|value eq sens_credit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format des paramètres date :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!décodage&lt;br /&gt;
!Exemple (1 jan. 2020 France)&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMMZ&lt;br /&gt;
|ISO-8601 UTC&lt;br /&gt;
|2019-12-31T23:00:00Z&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM+OFFSET&lt;br /&gt;
|ISO-8601 avec timezone&lt;br /&gt;
|2019-12-31T23:00:00+1&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM&lt;br /&gt;
|ISO-8601 sans timezone&lt;br /&gt;
|2020-01-01T00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|AAA-MM-DD&lt;br /&gt;
|Date au format ISO-8601&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|-&lt;br /&gt;
|DD/MM/AAAA&lt;br /&gt;
|Date au format local&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ordre de tri====&lt;br /&gt;
&lt;br /&gt;
Tri ascendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code&lt;br /&gt;
&lt;br /&gt;
Tri descendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code%20desc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pagination par page====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, count et startIndex&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=0&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=10&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=20&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Incrémentez startIndex du nombre de ressource retourné par la requête}}&lt;br /&gt;
&lt;br /&gt;
====Pagination par clé====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, startKey et keyDirection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startKey=1B28EFFFF1C3000200F6000000230893&amp;amp;keyDirection=lt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création de ressource (POST)== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRE1&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre 1&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site1 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E20022&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')&amp;quot;,&lt;br /&gt;
            ... attribute list ...&lt;br /&gt;
        } &lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre de partage===&lt;br /&gt;
&lt;br /&gt;
Le niveau de partage d'une ressource de niveau activité peut être contrôlé par des propriétés de contrôle au niveau de la définition de la ressource : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Contrôle&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|$shareId&lt;br /&gt;
|Valeur du périmètre sur lequel créer l'objet&lt;br /&gt;
|-&lt;br /&gt;
|$shareLevel&lt;br /&gt;
|Niveau de partage sur lequel créer l'objet (0:dossier,1:activité ou 2:société)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://localhost/sdata/S3/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$shareLevel&amp;quot;:2,&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRES3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre S3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site 1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 201 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Par défaut la ressource sera créée au niveau activité}}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles===&lt;br /&gt;
&lt;br /&gt;
La création de ressource dans les rôles dépend de la nature du rôle.&lt;br /&gt;
&lt;br /&gt;
* Pour les rôles de type composition les ressources liées sont créés simultanément.&lt;br /&gt;
* Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.&lt;br /&gt;
&lt;br /&gt;
'''Identification des références'''&lt;br /&gt;
&lt;br /&gt;
'''Par clé:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par uri:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$url&amp;quot;:TPays(&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par expression:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
    &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.&lt;br /&gt;
&lt;br /&gt;
===Gestion des dates comptables===&lt;br /&gt;
Pour les dates comptables, le serveur convertit la date reçu en heure locale puis conserve la partie date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Exemple&lt;br /&gt;
!Interprète&lt;br /&gt;
|-&lt;br /&gt;
|locale&lt;br /&gt;
|Une heure locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Conserve l’heure reçue en heure locale et conserve la date, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|noTime&lt;br /&gt;
|Une date sans heure	&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Conserve la date reçue sans conversion, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|UTC&lt;br /&gt;
|Un instant universel UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
2021-05-31T22:00:00+02&lt;br /&gt;
|Convertit l’heure UTC en heure locale du service et conserve la date reçue, la date peut être différente de la date transmise si le client et le service ne sont pas dans le même fuseau horaire.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
==Modification de ressource (PUT)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;codeSIRET&amp;quot;:&amp;quot;12345678&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
[&lt;br /&gt;
{ &lt;br /&gt;
.... resource modified ...&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modification de rôle liste composition===&lt;br /&gt;
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle &amp;quot;$&amp;quot; pour le rôle :&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par remplacement des composants :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
            ... Site3 has been added, other sites has been removed.&lt;br /&gt;
            ... There is one site left in the list&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par ajout de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;create&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
                ... Site3 has been added, other sites are not affected&lt;br /&gt;
                ... There is one site more in the list&lt;br /&gt;
            }&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par mise à jour de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;update&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;, &lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;Site maj&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!contrôle&lt;br /&gt;
!action&lt;br /&gt;
|-&lt;br /&gt;
|create&lt;br /&gt;
|Les nouvelles ressources sont ajoutées au rôle&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|Les ressources existantes dans le rôle sont mise à jour&lt;br /&gt;
|-&lt;br /&gt;
|delete&lt;br /&gt;
|Les ressources existantes et non présentes dans la requête sont supprimées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est &amp;quot;create&amp;quot;,&amp;quot;update&amp;quot;,&amp;quot;delete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Modification des attributs privés===&lt;br /&gt;
Par défaut les attributs privés sont modifiés sur le niveau de partage correspondant au périmètre société, pour contrôler le niveau de partage des attributs privés utilisez un élément de contrôle $sharePrivateLevel.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!sharePrivateLevel&lt;br /&gt;
!Périmètre de définition&lt;br /&gt;
|-&lt;br /&gt;
|absent&lt;br /&gt;
|Périmètre courant de l'objet&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Dossier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Activité&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Société&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le périmètre courant de l'objet dépend de l'état de l'objet. Par exemple, si l'objet est de niveau activité et n'a pas de propriété défini pour la société courante, le périmètre courant sera l'activité, mais si l'objet a des propriétés définies pour la société courante alors le périmètre courant sera la société. Ne pas définir explicitement le niveau de partage peut amener à des ambiguïtés.}}&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour les sociétés de l'activité du Tiers (le tiers n'a pas de propriété défini pour la société S3):'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CHQ'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour la société S3 :'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$sharePrivateLevel&amp;quot;:2,&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CBB'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suppression de ressource (DELETE)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opération sur une ressource (POST)==&lt;br /&gt;
&lt;br /&gt;
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.&lt;br /&gt;
&lt;br /&gt;
===Méthode d'instance de ressource===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Méthode de classe de ressource, ou méthode de classe non persistante===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Passage des paramètres===&lt;br /&gt;
Les paramètres sont passés par nom et valeur.&lt;br /&gt;
&lt;br /&gt;
Les types de paramètres et de retour supportés sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;xxx&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Entier&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|&amp;quot;p&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
|Flottant&lt;br /&gt;
|&amp;quot;p&amp;quot;:1.1&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;2020-12-25T01:01:01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Enuméré (par valeur)&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Liste d'objets&lt;br /&gt;
|&amp;quot;p&amp;quot;:[ {$key:&amp;quot;key&amp;quot;, $uuid:&amp;quot;uuid&amp;quot;, $where:&amp;quot;expression&amp;quot;}, ...],&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Les références des objets passés dans des listes peuvent être définies par clé ($key), identifiant appelant ($uuid) ou expression ($where)&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;paramList&amp;quot;:[&lt;br /&gt;
    {&amp;quot;$key&amp;quot;:&amp;quot;B5A28A92EB0C00020010000001F500A1&amp;quot;},&lt;br /&gt;
    {&amp;quot;$where&amp;quot;:&amp;quot;uneChaine like 'cN%'&amp;quot;}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Résultat de type ressource===&lt;br /&gt;
Lorsque l'opération retourne un objet ou une liste d'objets ceux-ci sont retournés sous forme de ressource.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//class Function GetWFClasseA(const iCode:string):WFClasseA;&lt;br /&gt;
begin&lt;br /&gt;
  Result := WFClasseA.Find('(unCode = %1)','unCode',True,[iCode]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassea&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:41:41.015Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Class Function GetWFClasseA(const iCodeLike:string):WFClasseAList;&lt;br /&gt;
begin&lt;br /&gt;
 Result := WFClasseA.CreateListWhere('(unCode like %1)','','unCode',True,-1,[iCodeLike]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassealist&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:49:14.061Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E-0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaalb&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 2,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 2&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A-0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaale&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Initial&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            ......&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialisation de la ressource===&lt;br /&gt;
Il est possible d'initialiser la ressource avant d'exécuter la méthode, par exemple pour un processus :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  TmyProcessus = class&lt;br /&gt;
  public&lt;br /&gt;
   procedure Execute(p:string);&lt;br /&gt;
   property attString:string;&lt;br /&gt;
   property attInt:Integer;&lt;br /&gt;
   property attRef:TRefClass;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/execute&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$resource&amp;quot;:{&lt;br /&gt;
 &amp;quot;attString&amp;quot;:&amp;quot;value 1&amp;quot;,&lt;br /&gt;
 &amp;quot;attInt&amp;quot;:100,&lt;br /&gt;
 &amp;quot;attRef&amp;quot;:{&amp;quot;$url&amp;quot;:&amp;quot;TRefClass('xxx')&amp;quot;},&lt;br /&gt;
},&lt;br /&gt;
&amp;quot;p&amp;quot;:&amp;quot;value&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requête Batch (POST $batch)==&lt;br /&gt;
Une requête Batch permet de réaliser plusieurs opérations de type GET,POST/PUT/DELETE/EXEC en une seule fois.&lt;br /&gt;
&lt;br /&gt;
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://.../sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;POST&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers&amp;quot;,&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SYFRE2&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;syfre 2&amp;quot;,&lt;br /&gt;
         &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
               &amp;quot;caption&amp;quot;:&amp;quot;site2 de syfre2&amp;quot;,&lt;br /&gt;
               &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
                  &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
                  &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
                  &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
                  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
                     &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
                     &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
                  }&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Le format d'url complet de $Batch est https://hostname/service/server/sdata/l1000/-/-/$batch}}&lt;br /&gt;
&lt;br /&gt;
===Gestion de la transaction dans un batch===&lt;br /&gt;
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une opération Batch atomique (une seule transaction longue) utilisez un élément de contrôle transaction :&lt;br /&gt;
&lt;br /&gt;
Lorsque l'opération est atomique la réponse contient un élément $batch indiquant le statut de l'opération.&lt;br /&gt;
&lt;br /&gt;
Le code de retour http est le code de retour de la dernière opération réalisée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;: {&amp;quot;$transaction&amp;quot;:[&amp;quot;atomic&amp;quot;]},&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:7200,&amp;quot;CodeDevise&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:1000,&amp;quot;CodeDevise&amp;quot;:&amp;quot;EUR&amp;quot;}&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 401&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;PUT&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
            &amp;quot;$etag&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000000285DAE-0000018C00000001&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 410,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
            &amp;quot;$&amp;quot;: {&lt;br /&gt;
                &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                        &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                        &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;$batch&amp;quot;: {&lt;br /&gt;
        &amp;quot;$httpStatus&amp;quot;: 400,&lt;br /&gt;
        &amp;quot;$httpMessage&amp;quot;: &amp;quot;ROLLBACK&amp;quot;,&lt;br /&gt;
        &amp;quot;$&amp;quot;: {&lt;br /&gt;
            &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                    &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                    &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;,&lt;br /&gt;
                    &amp;quot;entry&amp;quot;: {&lt;br /&gt;
                        &amp;quot;number&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;uuid&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''$transaction :'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Commande&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|atomic&lt;br /&gt;
|Démarre une transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|flush&lt;br /&gt;
|Force un batch de la transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|commit&lt;br /&gt;
|Valide la transaction longue&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|L'élément de contrôle de transaction peut être placé au niveau d'un ordre du lot.}}&lt;br /&gt;
&lt;br /&gt;
===Execution de méthode dans un batch===&lt;br /&gt;
Utiliser le verbe EXEC pour exécuter une méthode &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;EXEC&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
         &amp;quot;$resource&amp;quot;:{&lt;br /&gt;
            &amp;quot;uneChaine&amp;quot;:&amp;quot;value 1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;p&amp;quot;:&amp;quot;value 2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Executed&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: &amp;quot;value 1 value 2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schéma d'une ressource (GET $schema)==&lt;br /&gt;
Le schéma d'une ressource retourne la structure de la classe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Libellé de la Classe A&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;unBool&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Bool&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un code&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDerive&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un dérivé&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDouble&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;double&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un double&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEmail&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un email&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Entier&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Etat&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unStatus&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Statut de l'objet (Panel)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseBRef&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
                &amp;quot;$ref&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema&amp;quot;,&lt;br /&gt;
                &amp;quot;$relationship&amp;quot;: &amp;quot;reference&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Référence B&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseCList&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
            &amp;quot;item&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;Classe C&amp;quot;,&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;un entier&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu de la réponse peut être configurée avec le paramètre &amp;quot;select&amp;quot;, à défaut toutes les informations sont retournées.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|Retourne uniquement les attributs issus d'extension&lt;br /&gt;
|-&lt;br /&gt;
|properties&lt;br /&gt;
|Retourne la liste de tous les attributs&lt;br /&gt;
|-&lt;br /&gt;
|selfProperties&lt;br /&gt;
|Retourne uniquement les attributs de la classe elle même&lt;br /&gt;
|-&lt;br /&gt;
|operations&lt;br /&gt;
|Retourne les opérations de la classe&lt;br /&gt;
|-&lt;br /&gt;
|compositions&lt;br /&gt;
|Retourne le schéma des classes composants &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : Retrouver uniquement les attributs d'extension d'une classe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/ttiers/$schema?select=extensions&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Tiers&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;extensions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;class&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Extension de TTiers&amp;quot;,&lt;br /&gt;
            &amp;quot;package&amp;quot;: &amp;quot;esmPackage&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;esmCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;extension&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;un code esm&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/gentiers/TTiers/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle de ressource (GET $template)==&lt;br /&gt;
Le modèle de ressource retourne une ressource initialisée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gcimport/TImportContratCommercial/$template&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gcimport/-/TImportContratCommercial&amp;quot;,&lt;br /&gt;
    &amp;quot;stamp&amp;quot;: &amp;quot;000001D900000001&amp;quot;,&lt;br /&gt;
    &amp;quot;acompte&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;affaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;budget&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;Caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;commandeEngagement&amp;quot;: false,&lt;br /&gt;
    &amp;quot;commercial&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;coursDevise&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;CodeDevise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;Date&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
        &amp;quot;TCConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;TCValue&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;RPConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;RPValue&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coursNegocie&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dateCommande&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;dateLivraison&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;devise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI1&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI2&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI3&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI4&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;echeancement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;etablissement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTaxe&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;gestionTransport&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Automatique&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;immobilisation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;B&amp;amp;S&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ImportCCDetailList&amp;quot;: [],&lt;br /&gt;
    &amp;quot;importeGMAO&amp;quot;: false,&lt;br /&gt;
    &amp;quot;importerRemisePied&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ImportSiteAdresse&amp;quot;: {},&lt;br /&gt;
    &amp;quot;incoterm&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;MentionExonerationTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;posteBudgetaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;pourcentAcompte&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;pourcentRemisePied&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;reference&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;referenceMandat&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;regimeTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiers&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiersLivre&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;SessionImportation&amp;quot;: {},&lt;br /&gt;
    &amp;quot;typeFacturation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;HT&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SData|Point d'accès et url SData]]&lt;br /&gt;
* [[Gestion des jetons d'authentification (Administration)|Gestion des jetons d'authentification]]&lt;br /&gt;
* [[API Json (SData)|API SData en mode json]]&lt;br /&gt;
* [[Fichier_de_configuration_(server)#Logs|Enregistrement des messages SDATA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi les exemples suivants : &lt;br /&gt;
&lt;br /&gt;
* [[Utilisation du contrôleur de partage (API)|Utilisation du contrôleur de partage]]&lt;br /&gt;
* [[Interrogation des écritures (API)|Interrogation des écritures avec l'API SData]]&lt;br /&gt;
* [[Interrogation des fournisseurs (API)|Interrogation des fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Creation d'un fournisseur (API)|Création d'un fournisseur avec l'API SData]]&lt;br /&gt;
* [[Import_de commandes_(API)|Import de commandes avec l'API SData]]&lt;br /&gt;
* [[Import_d%27écritures_(API)|Import d'écritures avec l'API SData]]&lt;br /&gt;
* [[Gestion des réceptions fournisseurs (API)|Gestion des réceptions fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Facturation d'un bon de livraison (API)|Facturation d'un bon de livraison avec l'API SData]]&lt;br /&gt;
* [[Creation_d%27un_Tiers_et_son_compte_bancaire_(API)|Creation_d'un Tiers et son compte bancaire (API)]]&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier:Sdata-conf-log.png</id>
		<title>Fichier:Sdata-conf-log.png</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier:Sdata-conf-log.png"/>
				<updated>2026-03-11T12:53:30Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-03-11T09:43:43Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Méthode JSON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
A la différence de l'API en mode ressource, elle nécessite le déploiement de paquet DSM pour gérer les appels de service.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
var json:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  json := TJson.Create('{}');&lt;br /&gt;
  ....&lt;br /&gt;
  resp := json;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Paquet de classes non persistantes ==&lt;br /&gt;
&lt;br /&gt;
Les méthodes Json membres de classes non persistantes peuvent aussi être appelées.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez spécifier le nom de la classe dans l'URL d'appel de la méthode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetAPI/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-4.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
* [[Ressource (sdata)|API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-03-11T09:43:18Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Méthode JSON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
A la différence de l'API en mode ressource, elle nécessite le déploiement de paquet DSM pour gérer les appels de service.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
var json:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  json := TJson.Create('');&lt;br /&gt;
  ....&lt;br /&gt;
  resp := json;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Paquet de classes non persistantes ==&lt;br /&gt;
&lt;br /&gt;
Les méthodes Json membres de classes non persistantes peuvent aussi être appelées.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez spécifier le nom de la classe dans l'URL d'appel de la méthode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetAPI/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-4.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
* [[Ressource (sdata)|API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)</id>
		<title>Ressource (sdata)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)"/>
				<updated>2026-03-11T09:22:18Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Modèle de ressource (GET $template) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
{{tip|Voir aussi l'[[API Json (SData)|API en mode JSON]], qui permet d'encapsuler d'avantage les appels de service.}}&lt;br /&gt;
&lt;br /&gt;
==Prérequis==&lt;br /&gt;
Les requêtes SData sont exécutées sur [[SData|le point d'accès SData du service]].&lt;br /&gt;
&lt;br /&gt;
La forme simplifiée des urls est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/societe/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les requêtes sont authentifiées par un jeton d'authentification placé dans l'entête Authorization de la requêtes.&lt;br /&gt;
&lt;br /&gt;
[[Gestion des jetons d'authentification (Administration)|Le jeton d'authentification peut être géré par le client dans l'administration.]]&lt;br /&gt;
&lt;br /&gt;
Les requêtes doivent comporter les entêtes suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|accept&lt;br /&gt;
|application/json&lt;br /&gt;
|-&lt;br /&gt;
|Authorization&lt;br /&gt;
|Bearer token&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les url des requêtes doivent être encodées, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata/Société 1/ttiers...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
doit être transmis encodé en&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata.Soci%C3%A9t%C3%A9%201/ttiers....&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélection de version==&lt;br /&gt;
Il es possible d'indiquer un numéro de version dans l'url de la requête.&lt;br /&gt;
&lt;br /&gt;
Placez le numéro de version derrière le préfix sdata :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 https://.../sdata/1/....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En absence de numéro de version la dernière version sera utilisée.&lt;br /&gt;
&lt;br /&gt;
==Informations de version==&lt;br /&gt;
Utilisez la fonction $version pour retrouver les informations de version &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/$version&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;shareEnable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://localhost/sdata/$version?select=details&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;minors&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Fix $batch : Error in commit don't return message and continue execution&amp;quot;,&lt;br /&gt;
                &amp;quot;Fix time measure decimal format use . instead of local&amp;quot;,&lt;br /&gt;
                &amp;quot;Add extension information to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add operations to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add select options to $schema&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Add version information&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre select accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
!usage&lt;br /&gt;
|-&lt;br /&gt;
|details&lt;br /&gt;
|Détails des modifications des versions mineurs&lt;br /&gt;
|-&lt;br /&gt;
|patches&lt;br /&gt;
|Liste des patches installés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Mise au point==&lt;br /&gt;
Vous pouvez activer [[Fichier_de_configuration_(server)#Logs|l'enregistrement des messages SDATA]] dans le répertoire de log du service.&lt;br /&gt;
&lt;br /&gt;
==Ressource (GET)==&lt;br /&gt;
Dans l'interface SData les ressources sont les objets de l'application.&lt;br /&gt;
&lt;br /&gt;
Une ressource est identifié par son uri qui représente le chemin de la ressource.&lt;br /&gt;
&lt;br /&gt;
L'uri est composé du chemin de la classe et d'un sélecteur qui est l'oid de l'objet. &lt;br /&gt;
&lt;br /&gt;
'''Exemple :''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/&amp;quot;,&lt;br /&gt;
   &amp;quot;$title&amp;quot;:&amp;quot;TTiers - -&amp;quot;,&lt;br /&gt;
   &amp;quot;$updated&amp;quot;:&amp;quot;2020-12-22T08:10:09.740Z&amp;quot;,&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;TTiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$title&amp;quot;:&amp;quot;ABI Jardin&amp;quot;,&lt;br /&gt;
         &amp;quot;$updated&amp;quot;:&amp;quot;2010-03-23T15:37:46.000Z&amp;quot;,&lt;br /&gt;
         &amp;quot;$etag&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE-000002C60000421C&amp;quot;,&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE&amp;quot;,&lt;br /&gt;
         &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/GenTiers/-/&amp;quot;,&lt;br /&gt;
         &amp;quot;stamp&amp;quot;:&amp;quot;000002C60000421C&amp;quot;,&lt;br /&gt;
         .... Attribute list ...&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sélecteur de ressource===&lt;br /&gt;
&lt;br /&gt;
Un sélecteur permet de retrouver une ressource spécifique, il est possible de rechercher une ressource par clé ou clause  &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sélecteur&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Clé&lt;br /&gt;
|TTiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
|-&lt;br /&gt;
|clause&lt;br /&gt;
|TTiers(code eq 'ABI 007')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Code de retour HTTP===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Code&lt;br /&gt;
!Résultat&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|La ressource existe &lt;br /&gt;
|-&lt;br /&gt;
|404&lt;br /&gt;
|La ressource n'existe pas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles dans les ressources===&lt;br /&gt;
La gestion des rôles de la ressource dépend du type et de la nature du rôle :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de rôle&lt;br /&gt;
!Nature&lt;br /&gt;
!Retour&lt;br /&gt;
|-&lt;br /&gt;
|Référence,Liste&lt;br /&gt;
|Composition&lt;br /&gt;
|Les ressources composants sont retournées dans le corps de la ressource composée&lt;br /&gt;
|-&lt;br /&gt;
|Référence&lt;br /&gt;
| -&lt;br /&gt;
|La ressource référencée est retournée par référence dans le corps de la ressource&lt;br /&gt;
|-&lt;br /&gt;
|Liste&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe référencée filtrée sur la référence réciproque.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
|Avec suppression en cascade &lt;br /&gt;
|Les ressources associées sont considérées comme des composants et retournées dans le corps de la ressource composée.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe associée filtrée sur la classe d'association&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Utilisez une vue pour retourner directement les attributs liés par des références, voir le paramètre select}}&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre société===&lt;br /&gt;
Par défaut, les requêtes s'exécutent dans le contexte société défini dans le jeton d'authentification.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez définir le contexte société dans le l'url de la requête :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  METHOD https://host/sdata/society/package/class ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Définir le contexte société dans l'url n'est utilisable que sur une base supportant le multi-société. Pour connaitre le statut multi-société, utilisez la requête $version ou bien interrogez [[Utilisation_du_contrôleur_de_partage_(API)|le contrôleur de partage]]}}&lt;br /&gt;
&lt;br /&gt;
==Requête sur les ressources (GET)==&lt;br /&gt;
Une requête sur les ressources est une requête sur une classe du modèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Paramètres de la requête===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!valeur&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|select&lt;br /&gt;
|liste d'attributs séparés par des virgules&lt;br /&gt;
|Liste des attributs à retourner&lt;br /&gt;
|-&lt;br /&gt;
|where&lt;br /&gt;
|Expression objet&lt;br /&gt;
|Filtre de la requête&lt;br /&gt;
|-&lt;br /&gt;
|orderBy&lt;br /&gt;
|Attribut de tri&lt;br /&gt;
|Ordre de tri de la requête&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|Taille de page (*)&lt;br /&gt;
|Pagination : Taille de page&lt;br /&gt;
|-&lt;br /&gt;
|startIndex&lt;br /&gt;
|Index de page&lt;br /&gt;
|Pagination par page : Numéro de page (0 première)&lt;br /&gt;
|-&lt;br /&gt;
|startKey&lt;br /&gt;
|Valeur de clé ou de tri&lt;br /&gt;
|Pagination par clé : Clé de position&lt;br /&gt;
|-&lt;br /&gt;
|keyDirection &lt;br /&gt;
|lt,le,gt,ge&lt;br /&gt;
|Pagination par clé : direction par rapport à startKey&lt;br /&gt;
|-&lt;br /&gt;
|dateFormat&lt;br /&gt;
|noTime, locale, utc&lt;br /&gt;
|Indique le format de date retourné pour les types de données date comptable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Il existe une limite par défaut si la valeur de count n'est pas précisée.&lt;br /&gt;
&lt;br /&gt;
Les valeurs passées en paramètre doivent être encodées en HTML &lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
 where=code eq 'ABI 007'&lt;br /&gt;
&lt;br /&gt;
doit être encodée en :&lt;br /&gt;
&lt;br /&gt;
 where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
&lt;br /&gt;
====Select====&lt;br /&gt;
Select permet de définir les attributs à retourner, par défaut tous les attributs non vide sont retournés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La présence du paramètre select conditionne la façon d'exécuter la requête.&lt;br /&gt;
&lt;br /&gt;
Les formats possibles sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!Usage&lt;br /&gt;
!Génère l'utilisation d'une vue&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Attribut x de la ressource&lt;br /&gt;
|non&lt;br /&gt;
|-&lt;br /&gt;
|x.y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure exacte)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x.+y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure externe)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as y&lt;br /&gt;
|Attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y)&lt;br /&gt;
|Opération sur l'attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y;z)&lt;br /&gt;
|Opération sur les attributs y et z de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Une vue sera utilisée si au moins un des membres de select nécessite l'utilisation d'une vue.&lt;br /&gt;
&lt;br /&gt;
Pour les opérateurs utilisables consultez [[Vue_locale_(langage)|la page sur les vues locales]]&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
* La sélection d'attribut référencé non défini peut générer l'absence de ressources dans le résultat, pour éviter ceci utilisez un spécificateur de jointure externe.&lt;br /&gt;
* La sélection d'attribut référencé par un rôle liste peut générer plusieurs ressources dans le résultat correspondant à chaque ressource liée par la relation.&lt;br /&gt;
* La séparation des paramètres pour les opérateurs ayant plusieurs paramètres utilise le séparateur ; et pas ,&lt;br /&gt;
* Lorsqu'une vue est utilisée, les filtres et ordre de tri sont exprimés par rapport à la vue. &lt;br /&gt;
&lt;br /&gt;
Par exemple : &lt;br /&gt;
* TCompteGeneral?select=codeCompte&amp;amp;where=codeCompte ge '4'&amp;amp;orderBy=codeCompte&lt;br /&gt;
mais&lt;br /&gt;
* TCompteGeneral?select=code as codeCompte&amp;amp;where=code ge '4'&amp;amp;orderBy=code&lt;br /&gt;
&lt;br /&gt;
====Dates comptables====&lt;br /&gt;
Le paramètre dateFormat permet de définir le format des dates comptables retournées par l'API&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version API&lt;br /&gt;
!dateFormat&lt;br /&gt;
!Exemple&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Temps UTC&lt;br /&gt;
|-&lt;br /&gt;
|1.6&lt;br /&gt;
|&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
| &lt;br /&gt;
|2021-06-01T00:00:00+02&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Format heure locale&lt;br /&gt;
|Un instant heure locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|noTime&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Format date locale&lt;br /&gt;
|Une date locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format heure UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
====Filtre====&lt;br /&gt;
&lt;br /&gt;
'''Opérateurs:'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!opérateur&lt;br /&gt;
!équivalence&lt;br /&gt;
!exemple&lt;br /&gt;
!encoded&lt;br /&gt;
|-&lt;br /&gt;
|eq&lt;br /&gt;
|=&lt;br /&gt;
|where=code eq 'ABI 007'&lt;br /&gt;
|where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
|-&lt;br /&gt;
|ne&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|lt&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|le&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gt&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ge&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|like&lt;br /&gt;
|like&lt;br /&gt;
|where=code like 'ABI %'&lt;br /&gt;
|where=code%20like%20%27ABI %25%27&lt;br /&gt;
|-&lt;br /&gt;
|in&lt;br /&gt;
|in&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Valeurs des paramètres:'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs des paramètres sont passées en littérale&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de donnée&lt;br /&gt;
!exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|code eq 'xxx'&lt;br /&gt;
|-&lt;br /&gt;
|boolean&lt;br /&gt;
|flag eq true&lt;br /&gt;
|-&lt;br /&gt;
|numérique&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|flottant&lt;br /&gt;
|value eq 1.0&lt;br /&gt;
|-&lt;br /&gt;
|date (voir format)&lt;br /&gt;
|$updated &amp;gt; '2019-12-31T23:00:00Z'&lt;br /&gt;
|-&lt;br /&gt;
|enum (par index)&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|enum (par constant)&lt;br /&gt;
|value eq sens_credit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format des paramètres date :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!décodage&lt;br /&gt;
!Exemple (1 jan. 2020 France)&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMMZ&lt;br /&gt;
|ISO-8601 UTC&lt;br /&gt;
|2019-12-31T23:00:00Z&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM+OFFSET&lt;br /&gt;
|ISO-8601 avec timezone&lt;br /&gt;
|2019-12-31T23:00:00+1&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM&lt;br /&gt;
|ISO-8601 sans timezone&lt;br /&gt;
|2020-01-01T00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|AAA-MM-DD&lt;br /&gt;
|Date au format ISO-8601&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|-&lt;br /&gt;
|DD/MM/AAAA&lt;br /&gt;
|Date au format local&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ordre de tri====&lt;br /&gt;
&lt;br /&gt;
Tri ascendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code&lt;br /&gt;
&lt;br /&gt;
Tri descendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code%20desc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pagination par page====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, count et startIndex&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=0&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=10&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=20&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Incrémentez startIndex du nombre de ressource retourné par la requête}}&lt;br /&gt;
&lt;br /&gt;
====Pagination par clé====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, startKey et keyDirection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startKey=1B28EFFFF1C3000200F6000000230893&amp;amp;keyDirection=lt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création de ressource (POST)== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRE1&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre 1&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site1 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E20022&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')&amp;quot;,&lt;br /&gt;
            ... attribute list ...&lt;br /&gt;
        } &lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre de partage===&lt;br /&gt;
&lt;br /&gt;
Le niveau de partage d'une ressource de niveau activité peut être contrôlé par des propriétés de contrôle au niveau de la définition de la ressource : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Contrôle&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|$shareId&lt;br /&gt;
|Valeur du périmètre sur lequel créer l'objet&lt;br /&gt;
|-&lt;br /&gt;
|$shareLevel&lt;br /&gt;
|Niveau de partage sur lequel créer l'objet (0:dossier,1:activité ou 2:société)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://localhost/sdata/S3/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$shareLevel&amp;quot;:2,&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRES3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre S3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site 1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 201 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Par défaut la ressource sera créée au niveau activité}}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles===&lt;br /&gt;
&lt;br /&gt;
La création de ressource dans les rôles dépend de la nature du rôle.&lt;br /&gt;
&lt;br /&gt;
* Pour les rôles de type composition les ressources liées sont créés simultanément.&lt;br /&gt;
* Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.&lt;br /&gt;
&lt;br /&gt;
'''Identification des références'''&lt;br /&gt;
&lt;br /&gt;
'''Par clé:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par uri:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$url&amp;quot;:TPays(&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par expression:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
    &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.&lt;br /&gt;
&lt;br /&gt;
===Gestion des dates comptables===&lt;br /&gt;
Pour les dates comptables, le serveur convertit la date reçu en heure locale puis conserve la partie date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Exemple&lt;br /&gt;
!Interprète&lt;br /&gt;
|-&lt;br /&gt;
|locale&lt;br /&gt;
|Une heure locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Conserve l’heure reçue en heure locale et conserve la date, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|noTime&lt;br /&gt;
|Une date sans heure	&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Conserve la date reçue sans conversion, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|UTC&lt;br /&gt;
|Un instant universel UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
2021-05-31T22:00:00+02&lt;br /&gt;
|Convertit l’heure UTC en heure locale du service et conserve la date reçue, la date peut être différente de la date transmise si le client et le service ne sont pas dans le même fuseau horaire.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
==Modification de ressource (PUT)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;codeSIRET&amp;quot;:&amp;quot;12345678&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
[&lt;br /&gt;
{ &lt;br /&gt;
.... resource modified ...&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modification de rôle liste composition===&lt;br /&gt;
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle &amp;quot;$&amp;quot; pour le rôle :&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par remplacement des composants :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
            ... Site3 has been added, other sites has been removed.&lt;br /&gt;
            ... There is one site left in the list&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par ajout de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;create&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
                ... Site3 has been added, other sites are not affected&lt;br /&gt;
                ... There is one site more in the list&lt;br /&gt;
            }&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par mise à jour de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;update&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;, &lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;Site maj&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!contrôle&lt;br /&gt;
!action&lt;br /&gt;
|-&lt;br /&gt;
|create&lt;br /&gt;
|Les nouvelles ressources sont ajoutées au rôle&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|Les ressources existantes dans le rôle sont mise à jour&lt;br /&gt;
|-&lt;br /&gt;
|delete&lt;br /&gt;
|Les ressources existantes et non présentes dans la requête sont supprimées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est &amp;quot;create&amp;quot;,&amp;quot;update&amp;quot;,&amp;quot;delete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Modification des attributs privés===&lt;br /&gt;
Par défaut les attributs privés sont modifiés sur le niveau de partage correspondant au périmètre société, pour contrôler le niveau de partage des attributs privés utilisez un élément de contrôle $sharePrivateLevel.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!sharePrivateLevel&lt;br /&gt;
!Périmètre de définition&lt;br /&gt;
|-&lt;br /&gt;
|absent&lt;br /&gt;
|Périmètre courant de l'objet&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Dossier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Activité&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Société&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le périmètre courant de l'objet dépend de l'état de l'objet. Par exemple, si l'objet est de niveau activité et n'a pas de propriété défini pour la société courante, le périmètre courant sera l'activité, mais si l'objet a des propriétés définies pour la société courante alors le périmètre courant sera la société. Ne pas définir explicitement le niveau de partage peut amener à des ambiguïtés.}}&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour les sociétés de l'activité du Tiers (le tiers n'a pas de propriété défini pour la société S3):'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CHQ'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour la société S3 :'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$sharePrivateLevel&amp;quot;:2,&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CBB'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suppression de ressource (DELETE)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opération sur une ressource (POST)==&lt;br /&gt;
&lt;br /&gt;
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.&lt;br /&gt;
&lt;br /&gt;
===Méthode d'instance de ressource===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Méthode de classe de ressource, ou méthode de classe non persistante===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Passage des paramètres===&lt;br /&gt;
Les paramètres sont passés par nom et valeur.&lt;br /&gt;
&lt;br /&gt;
Les types de paramètres et de retour supportés sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;xxx&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Entier&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|&amp;quot;p&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
|Flottant&lt;br /&gt;
|&amp;quot;p&amp;quot;:1.1&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;2020-12-25T01:01:01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Enuméré (par valeur)&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Liste d'objets&lt;br /&gt;
|&amp;quot;p&amp;quot;:[ {$key:&amp;quot;key&amp;quot;, $uuid:&amp;quot;uuid&amp;quot;, $where:&amp;quot;expression&amp;quot;}, ...],&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Les références des objets passés dans des listes peuvent être définies par clé ($key), identifiant appelant ($uuid) ou expression ($where)&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;paramList&amp;quot;:[&lt;br /&gt;
    {&amp;quot;$key&amp;quot;:&amp;quot;B5A28A92EB0C00020010000001F500A1&amp;quot;},&lt;br /&gt;
    {&amp;quot;$where&amp;quot;:&amp;quot;uneChaine like 'cN%'&amp;quot;}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Résultat de type ressource===&lt;br /&gt;
Lorsque l'opération retourne un objet ou une liste d'objets ceux-ci sont retournés sous forme de ressource.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//class Function GetWFClasseA(const iCode:string):WFClasseA;&lt;br /&gt;
begin&lt;br /&gt;
  Result := WFClasseA.Find('(unCode = %1)','unCode',True,[iCode]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassea&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:41:41.015Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Class Function GetWFClasseA(const iCodeLike:string):WFClasseAList;&lt;br /&gt;
begin&lt;br /&gt;
 Result := WFClasseA.CreateListWhere('(unCode like %1)','','unCode',True,-1,[iCodeLike]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassealist&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:49:14.061Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E-0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaalb&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 2,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 2&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A-0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaale&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Initial&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            ......&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialisation de la ressource===&lt;br /&gt;
Il est possible d'initialiser la ressource avant d'exécuter la méthode, par exemple pour un processus :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  TmyProcessus = class&lt;br /&gt;
  public&lt;br /&gt;
   procedure Execute(p:string);&lt;br /&gt;
   property attString:string;&lt;br /&gt;
   property attInt:Integer;&lt;br /&gt;
   property attRef:TRefClass;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/execute&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$resource&amp;quot;:{&lt;br /&gt;
 &amp;quot;attString&amp;quot;:&amp;quot;value 1&amp;quot;,&lt;br /&gt;
 &amp;quot;attInt&amp;quot;:100,&lt;br /&gt;
 &amp;quot;attRef&amp;quot;:{&amp;quot;$url&amp;quot;:&amp;quot;TRefClass('xxx')&amp;quot;},&lt;br /&gt;
},&lt;br /&gt;
&amp;quot;p&amp;quot;:&amp;quot;value&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requête Batch (POST $batch)==&lt;br /&gt;
Une requête Batch permet de réaliser plusieurs opérations de type GET,POST/PUT/DELETE/EXEC en une seule fois.&lt;br /&gt;
&lt;br /&gt;
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://.../sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;POST&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers&amp;quot;,&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SYFRE2&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;syfre 2&amp;quot;,&lt;br /&gt;
         &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
               &amp;quot;caption&amp;quot;:&amp;quot;site2 de syfre2&amp;quot;,&lt;br /&gt;
               &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
                  &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
                  &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
                  &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
                  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
                     &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
                     &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
                  }&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Le format d'url complet de $Batch est https://hostname/service/server/sdata/l1000/-/-/$batch}}&lt;br /&gt;
&lt;br /&gt;
===Gestion de la transaction dans un batch===&lt;br /&gt;
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une opération Batch atomique (une seule transaction longue) utilisez un élément de contrôle transaction :&lt;br /&gt;
&lt;br /&gt;
Lorsque l'opération est atomique la réponse contient un élément $batch indiquant le statut de l'opération.&lt;br /&gt;
&lt;br /&gt;
Le code de retour http est le code de retour de la dernière opération réalisée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;: {&amp;quot;$transaction&amp;quot;:[&amp;quot;atomic&amp;quot;]},&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:7200,&amp;quot;CodeDevise&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:1000,&amp;quot;CodeDevise&amp;quot;:&amp;quot;EUR&amp;quot;}&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 401&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;PUT&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
            &amp;quot;$etag&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000000285DAE-0000018C00000001&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 410,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
            &amp;quot;$&amp;quot;: {&lt;br /&gt;
                &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                        &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                        &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;$batch&amp;quot;: {&lt;br /&gt;
        &amp;quot;$httpStatus&amp;quot;: 400,&lt;br /&gt;
        &amp;quot;$httpMessage&amp;quot;: &amp;quot;ROLLBACK&amp;quot;,&lt;br /&gt;
        &amp;quot;$&amp;quot;: {&lt;br /&gt;
            &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                    &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                    &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;,&lt;br /&gt;
                    &amp;quot;entry&amp;quot;: {&lt;br /&gt;
                        &amp;quot;number&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;uuid&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''$transaction :'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Commande&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|atomic&lt;br /&gt;
|Démarre une transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|flush&lt;br /&gt;
|Force un batch de la transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|commit&lt;br /&gt;
|Valide la transaction longue&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|L'élément de contrôle de transaction peut être placé au niveau d'un ordre du lot.}}&lt;br /&gt;
&lt;br /&gt;
===Execution de méthode dans un batch===&lt;br /&gt;
Utiliser le verbe EXEC pour exécuter une méthode &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;EXEC&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
         &amp;quot;$resource&amp;quot;:{&lt;br /&gt;
            &amp;quot;uneChaine&amp;quot;:&amp;quot;value 1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;p&amp;quot;:&amp;quot;value 2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Executed&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: &amp;quot;value 1 value 2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schéma d'une ressource (GET $schema)==&lt;br /&gt;
Le schéma d'une ressource retourne la structure de la classe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Libellé de la Classe A&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;unBool&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Bool&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un code&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDerive&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un dérivé&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDouble&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;double&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un double&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEmail&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un email&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Entier&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Etat&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unStatus&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Statut de l'objet (Panel)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseBRef&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
                &amp;quot;$ref&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema&amp;quot;,&lt;br /&gt;
                &amp;quot;$relationship&amp;quot;: &amp;quot;reference&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Référence B&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseCList&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
            &amp;quot;item&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;Classe C&amp;quot;,&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;un entier&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu de la réponse peut être configurée avec le paramètre &amp;quot;select&amp;quot;, à défaut toutes les informations sont retournées.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|Retourne uniquement les attributs issus d'extension&lt;br /&gt;
|-&lt;br /&gt;
|properties&lt;br /&gt;
|Retourne la liste de tous les attributs&lt;br /&gt;
|-&lt;br /&gt;
|selfProperties&lt;br /&gt;
|Retourne uniquement les attributs de la classe elle même&lt;br /&gt;
|-&lt;br /&gt;
|operations&lt;br /&gt;
|Retourne les opérations de la classe&lt;br /&gt;
|-&lt;br /&gt;
|compositions&lt;br /&gt;
|Retourne le schéma des classes composants &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : Retrouver uniquement les attributs d'extension d'une classe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/ttiers/$schema?select=extensions&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Tiers&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;extensions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;class&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Extension de TTiers&amp;quot;,&lt;br /&gt;
            &amp;quot;package&amp;quot;: &amp;quot;esmPackage&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;esmCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;extension&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;un code esm&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/gentiers/TTiers/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle de ressource (GET $template)==&lt;br /&gt;
Le modèle de ressource retourne une ressource initialisée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gcimport/TImportContratCommercial/$template&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gcimport/-/TImportContratCommercial&amp;quot;,&lt;br /&gt;
    &amp;quot;stamp&amp;quot;: &amp;quot;000001D900000001&amp;quot;,&lt;br /&gt;
    &amp;quot;acompte&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;affaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;budget&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;Caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;commandeEngagement&amp;quot;: false,&lt;br /&gt;
    &amp;quot;commercial&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;coursDevise&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;CodeDevise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;Date&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
        &amp;quot;TCConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;TCValue&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;RPConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;RPValue&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coursNegocie&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dateCommande&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;dateLivraison&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;devise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI1&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI2&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI3&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI4&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;echeancement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;etablissement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTaxe&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;gestionTransport&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Automatique&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;immobilisation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;B&amp;amp;S&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ImportCCDetailList&amp;quot;: [],&lt;br /&gt;
    &amp;quot;importeGMAO&amp;quot;: false,&lt;br /&gt;
    &amp;quot;importerRemisePied&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ImportSiteAdresse&amp;quot;: {},&lt;br /&gt;
    &amp;quot;incoterm&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;MentionExonerationTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;posteBudgetaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;pourcentAcompte&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;pourcentRemisePied&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;reference&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;referenceMandat&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;regimeTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiers&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiersLivre&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;SessionImportation&amp;quot;: {},&lt;br /&gt;
    &amp;quot;typeFacturation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;HT&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SData|Point d'accès et url SData]]&lt;br /&gt;
* [[Gestion des jetons d'authentification (Administration)|Gestion des jetons d'authentification]]&lt;br /&gt;
* [[API Json (SData)|API SData en mode json]]&lt;br /&gt;
* [[Fichier_de_configuration_(server)#Logs|Enregistrement des messages SDATA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi les exemples suivants : &lt;br /&gt;
&lt;br /&gt;
* [[Utilisation du contrôleur de partage (API)|Utilisation du contrôleur de partage]]&lt;br /&gt;
* [[Interrogation des écritures (API)|Interrogation des écritures avec l'API SData]]&lt;br /&gt;
* [[Interrogation des fournisseurs (API)|Interrogation des fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Creation d'un fournisseur (API)|Création d'un fournisseur avec l'API SData]]&lt;br /&gt;
* [[Import_de commandes_(API)|Import de commandes avec l'API SData]]&lt;br /&gt;
* [[Import_d%27écritures_(API)|Import d'écritures avec l'API SData]]&lt;br /&gt;
* [[Gestion des réceptions fournisseurs (API)|Gestion des réceptions fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Facturation d'un bon de livraison (API)|Facturation d'un bon de livraison avec l'API SData]]&lt;br /&gt;
* [[Creation_d%27un_Tiers_et_son_compte_bancaire_(API)|Creation_d'un Tiers et son compte bancaire (API)]]&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)</id>
		<title>Ressource (sdata)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)"/>
				<updated>2026-03-11T09:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Ressource (GET) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
{{tip|Voir aussi l'[[API Json (SData)|API en mode JSON]], qui permet d'encapsuler d'avantage les appels de service.}}&lt;br /&gt;
&lt;br /&gt;
==Prérequis==&lt;br /&gt;
Les requêtes SData sont exécutées sur [[SData|le point d'accès SData du service]].&lt;br /&gt;
&lt;br /&gt;
La forme simplifiée des urls est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/societe/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les requêtes sont authentifiées par un jeton d'authentification placé dans l'entête Authorization de la requêtes.&lt;br /&gt;
&lt;br /&gt;
[[Gestion des jetons d'authentification (Administration)|Le jeton d'authentification peut être géré par le client dans l'administration.]]&lt;br /&gt;
&lt;br /&gt;
Les requêtes doivent comporter les entêtes suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|accept&lt;br /&gt;
|application/json&lt;br /&gt;
|-&lt;br /&gt;
|Authorization&lt;br /&gt;
|Bearer token&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les url des requêtes doivent être encodées, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata/Société 1/ttiers...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
doit être transmis encodé en&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata.Soci%C3%A9t%C3%A9%201/ttiers....&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélection de version==&lt;br /&gt;
Il es possible d'indiquer un numéro de version dans l'url de la requête.&lt;br /&gt;
&lt;br /&gt;
Placez le numéro de version derrière le préfix sdata :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 https://.../sdata/1/....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En absence de numéro de version la dernière version sera utilisée.&lt;br /&gt;
&lt;br /&gt;
==Informations de version==&lt;br /&gt;
Utilisez la fonction $version pour retrouver les informations de version &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/$version&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;shareEnable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://localhost/sdata/$version?select=details&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;minors&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Fix $batch : Error in commit don't return message and continue execution&amp;quot;,&lt;br /&gt;
                &amp;quot;Fix time measure decimal format use . instead of local&amp;quot;,&lt;br /&gt;
                &amp;quot;Add extension information to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add operations to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add select options to $schema&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Add version information&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre select accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
!usage&lt;br /&gt;
|-&lt;br /&gt;
|details&lt;br /&gt;
|Détails des modifications des versions mineurs&lt;br /&gt;
|-&lt;br /&gt;
|patches&lt;br /&gt;
|Liste des patches installés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Mise au point==&lt;br /&gt;
Vous pouvez activer [[Fichier_de_configuration_(server)#Logs|l'enregistrement des messages SDATA]] dans le répertoire de log du service.&lt;br /&gt;
&lt;br /&gt;
==Ressource (GET)==&lt;br /&gt;
Dans l'interface SData les ressources sont les objets de l'application.&lt;br /&gt;
&lt;br /&gt;
Une ressource est identifié par son uri qui représente le chemin de la ressource.&lt;br /&gt;
&lt;br /&gt;
L'uri est composé du chemin de la classe et d'un sélecteur qui est l'oid de l'objet. &lt;br /&gt;
&lt;br /&gt;
'''Exemple :''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/&amp;quot;,&lt;br /&gt;
   &amp;quot;$title&amp;quot;:&amp;quot;TTiers - -&amp;quot;,&lt;br /&gt;
   &amp;quot;$updated&amp;quot;:&amp;quot;2020-12-22T08:10:09.740Z&amp;quot;,&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;TTiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$title&amp;quot;:&amp;quot;ABI Jardin&amp;quot;,&lt;br /&gt;
         &amp;quot;$updated&amp;quot;:&amp;quot;2010-03-23T15:37:46.000Z&amp;quot;,&lt;br /&gt;
         &amp;quot;$etag&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE-000002C60000421C&amp;quot;,&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE&amp;quot;,&lt;br /&gt;
         &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/GenTiers/-/&amp;quot;,&lt;br /&gt;
         &amp;quot;stamp&amp;quot;:&amp;quot;000002C60000421C&amp;quot;,&lt;br /&gt;
         .... Attribute list ...&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sélecteur de ressource===&lt;br /&gt;
&lt;br /&gt;
Un sélecteur permet de retrouver une ressource spécifique, il est possible de rechercher une ressource par clé ou clause  &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sélecteur&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Clé&lt;br /&gt;
|TTiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
|-&lt;br /&gt;
|clause&lt;br /&gt;
|TTiers(code eq 'ABI 007')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Code de retour HTTP===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Code&lt;br /&gt;
!Résultat&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|La ressource existe &lt;br /&gt;
|-&lt;br /&gt;
|404&lt;br /&gt;
|La ressource n'existe pas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles dans les ressources===&lt;br /&gt;
La gestion des rôles de la ressource dépend du type et de la nature du rôle :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de rôle&lt;br /&gt;
!Nature&lt;br /&gt;
!Retour&lt;br /&gt;
|-&lt;br /&gt;
|Référence,Liste&lt;br /&gt;
|Composition&lt;br /&gt;
|Les ressources composants sont retournées dans le corps de la ressource composée&lt;br /&gt;
|-&lt;br /&gt;
|Référence&lt;br /&gt;
| -&lt;br /&gt;
|La ressource référencée est retournée par référence dans le corps de la ressource&lt;br /&gt;
|-&lt;br /&gt;
|Liste&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe référencée filtrée sur la référence réciproque.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
|Avec suppression en cascade &lt;br /&gt;
|Les ressources associées sont considérées comme des composants et retournées dans le corps de la ressource composée.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe associée filtrée sur la classe d'association&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Utilisez une vue pour retourner directement les attributs liés par des références, voir le paramètre select}}&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre société===&lt;br /&gt;
Par défaut, les requêtes s'exécutent dans le contexte société défini dans le jeton d'authentification.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez définir le contexte société dans le l'url de la requête :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  METHOD https://host/sdata/society/package/class ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Définir le contexte société dans l'url n'est utilisable que sur une base supportant le multi-société. Pour connaitre le statut multi-société, utilisez la requête $version ou bien interrogez [[Utilisation_du_contrôleur_de_partage_(API)|le contrôleur de partage]]}}&lt;br /&gt;
&lt;br /&gt;
==Requête sur les ressources (GET)==&lt;br /&gt;
Une requête sur les ressources est une requête sur une classe du modèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Paramètres de la requête===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!valeur&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|select&lt;br /&gt;
|liste d'attributs séparés par des virgules&lt;br /&gt;
|Liste des attributs à retourner&lt;br /&gt;
|-&lt;br /&gt;
|where&lt;br /&gt;
|Expression objet&lt;br /&gt;
|Filtre de la requête&lt;br /&gt;
|-&lt;br /&gt;
|orderBy&lt;br /&gt;
|Attribut de tri&lt;br /&gt;
|Ordre de tri de la requête&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|Taille de page (*)&lt;br /&gt;
|Pagination : Taille de page&lt;br /&gt;
|-&lt;br /&gt;
|startIndex&lt;br /&gt;
|Index de page&lt;br /&gt;
|Pagination par page : Numéro de page (0 première)&lt;br /&gt;
|-&lt;br /&gt;
|startKey&lt;br /&gt;
|Valeur de clé ou de tri&lt;br /&gt;
|Pagination par clé : Clé de position&lt;br /&gt;
|-&lt;br /&gt;
|keyDirection &lt;br /&gt;
|lt,le,gt,ge&lt;br /&gt;
|Pagination par clé : direction par rapport à startKey&lt;br /&gt;
|-&lt;br /&gt;
|dateFormat&lt;br /&gt;
|noTime, locale, utc&lt;br /&gt;
|Indique le format de date retourné pour les types de données date comptable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Il existe une limite par défaut si la valeur de count n'est pas précisée.&lt;br /&gt;
&lt;br /&gt;
Les valeurs passées en paramètre doivent être encodées en HTML &lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
 where=code eq 'ABI 007'&lt;br /&gt;
&lt;br /&gt;
doit être encodée en :&lt;br /&gt;
&lt;br /&gt;
 where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
&lt;br /&gt;
====Select====&lt;br /&gt;
Select permet de définir les attributs à retourner, par défaut tous les attributs non vide sont retournés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La présence du paramètre select conditionne la façon d'exécuter la requête.&lt;br /&gt;
&lt;br /&gt;
Les formats possibles sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!Usage&lt;br /&gt;
!Génère l'utilisation d'une vue&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Attribut x de la ressource&lt;br /&gt;
|non&lt;br /&gt;
|-&lt;br /&gt;
|x.y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure exacte)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x.+y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure externe)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as y&lt;br /&gt;
|Attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y)&lt;br /&gt;
|Opération sur l'attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y;z)&lt;br /&gt;
|Opération sur les attributs y et z de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Une vue sera utilisée si au moins un des membres de select nécessite l'utilisation d'une vue.&lt;br /&gt;
&lt;br /&gt;
Pour les opérateurs utilisables consultez [[Vue_locale_(langage)|la page sur les vues locales]]&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
* La sélection d'attribut référencé non défini peut générer l'absence de ressources dans le résultat, pour éviter ceci utilisez un spécificateur de jointure externe.&lt;br /&gt;
* La sélection d'attribut référencé par un rôle liste peut générer plusieurs ressources dans le résultat correspondant à chaque ressource liée par la relation.&lt;br /&gt;
* La séparation des paramètres pour les opérateurs ayant plusieurs paramètres utilise le séparateur ; et pas ,&lt;br /&gt;
* Lorsqu'une vue est utilisée, les filtres et ordre de tri sont exprimés par rapport à la vue. &lt;br /&gt;
&lt;br /&gt;
Par exemple : &lt;br /&gt;
* TCompteGeneral?select=codeCompte&amp;amp;where=codeCompte ge '4'&amp;amp;orderBy=codeCompte&lt;br /&gt;
mais&lt;br /&gt;
* TCompteGeneral?select=code as codeCompte&amp;amp;where=code ge '4'&amp;amp;orderBy=code&lt;br /&gt;
&lt;br /&gt;
====Dates comptables====&lt;br /&gt;
Le paramètre dateFormat permet de définir le format des dates comptables retournées par l'API&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version API&lt;br /&gt;
!dateFormat&lt;br /&gt;
!Exemple&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Temps UTC&lt;br /&gt;
|-&lt;br /&gt;
|1.6&lt;br /&gt;
|&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
| &lt;br /&gt;
|2021-06-01T00:00:00+02&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Format heure locale&lt;br /&gt;
|Un instant heure locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|noTime&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Format date locale&lt;br /&gt;
|Une date locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format heure UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
====Filtre====&lt;br /&gt;
&lt;br /&gt;
'''Opérateurs:'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!opérateur&lt;br /&gt;
!équivalence&lt;br /&gt;
!exemple&lt;br /&gt;
!encoded&lt;br /&gt;
|-&lt;br /&gt;
|eq&lt;br /&gt;
|=&lt;br /&gt;
|where=code eq 'ABI 007'&lt;br /&gt;
|where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
|-&lt;br /&gt;
|ne&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|lt&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|le&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gt&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ge&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|like&lt;br /&gt;
|like&lt;br /&gt;
|where=code like 'ABI %'&lt;br /&gt;
|where=code%20like%20%27ABI %25%27&lt;br /&gt;
|-&lt;br /&gt;
|in&lt;br /&gt;
|in&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Valeurs des paramètres:'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs des paramètres sont passées en littérale&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de donnée&lt;br /&gt;
!exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|code eq 'xxx'&lt;br /&gt;
|-&lt;br /&gt;
|boolean&lt;br /&gt;
|flag eq true&lt;br /&gt;
|-&lt;br /&gt;
|numérique&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|flottant&lt;br /&gt;
|value eq 1.0&lt;br /&gt;
|-&lt;br /&gt;
|date (voir format)&lt;br /&gt;
|$updated &amp;gt; '2019-12-31T23:00:00Z'&lt;br /&gt;
|-&lt;br /&gt;
|enum (par index)&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|enum (par constant)&lt;br /&gt;
|value eq sens_credit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format des paramètres date :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!décodage&lt;br /&gt;
!Exemple (1 jan. 2020 France)&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMMZ&lt;br /&gt;
|ISO-8601 UTC&lt;br /&gt;
|2019-12-31T23:00:00Z&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM+OFFSET&lt;br /&gt;
|ISO-8601 avec timezone&lt;br /&gt;
|2019-12-31T23:00:00+1&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM&lt;br /&gt;
|ISO-8601 sans timezone&lt;br /&gt;
|2020-01-01T00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|AAA-MM-DD&lt;br /&gt;
|Date au format ISO-8601&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|-&lt;br /&gt;
|DD/MM/AAAA&lt;br /&gt;
|Date au format local&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ordre de tri====&lt;br /&gt;
&lt;br /&gt;
Tri ascendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code&lt;br /&gt;
&lt;br /&gt;
Tri descendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code%20desc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pagination par page====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, count et startIndex&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=0&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=10&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=20&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Incrémentez startIndex du nombre de ressource retourné par la requête}}&lt;br /&gt;
&lt;br /&gt;
====Pagination par clé====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, startKey et keyDirection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startKey=1B28EFFFF1C3000200F6000000230893&amp;amp;keyDirection=lt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création de ressource (POST)== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRE1&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre 1&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site1 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E20022&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')&amp;quot;,&lt;br /&gt;
            ... attribute list ...&lt;br /&gt;
        } &lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre de partage===&lt;br /&gt;
&lt;br /&gt;
Le niveau de partage d'une ressource de niveau activité peut être contrôlé par des propriétés de contrôle au niveau de la définition de la ressource : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Contrôle&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|$shareId&lt;br /&gt;
|Valeur du périmètre sur lequel créer l'objet&lt;br /&gt;
|-&lt;br /&gt;
|$shareLevel&lt;br /&gt;
|Niveau de partage sur lequel créer l'objet (0:dossier,1:activité ou 2:société)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://localhost/sdata/S3/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$shareLevel&amp;quot;:2,&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRES3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre S3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site 1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 201 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Par défaut la ressource sera créée au niveau activité}}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles===&lt;br /&gt;
&lt;br /&gt;
La création de ressource dans les rôles dépend de la nature du rôle.&lt;br /&gt;
&lt;br /&gt;
* Pour les rôles de type composition les ressources liées sont créés simultanément.&lt;br /&gt;
* Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.&lt;br /&gt;
&lt;br /&gt;
'''Identification des références'''&lt;br /&gt;
&lt;br /&gt;
'''Par clé:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par uri:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$url&amp;quot;:TPays(&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par expression:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
    &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.&lt;br /&gt;
&lt;br /&gt;
===Gestion des dates comptables===&lt;br /&gt;
Pour les dates comptables, le serveur convertit la date reçu en heure locale puis conserve la partie date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Exemple&lt;br /&gt;
!Interprète&lt;br /&gt;
|-&lt;br /&gt;
|locale&lt;br /&gt;
|Une heure locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Conserve l’heure reçue en heure locale et conserve la date, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|noTime&lt;br /&gt;
|Une date sans heure	&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Conserve la date reçue sans conversion, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|UTC&lt;br /&gt;
|Un instant universel UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
2021-05-31T22:00:00+02&lt;br /&gt;
|Convertit l’heure UTC en heure locale du service et conserve la date reçue, la date peut être différente de la date transmise si le client et le service ne sont pas dans le même fuseau horaire.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
==Modification de ressource (PUT)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;codeSIRET&amp;quot;:&amp;quot;12345678&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
[&lt;br /&gt;
{ &lt;br /&gt;
.... resource modified ...&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modification de rôle liste composition===&lt;br /&gt;
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle &amp;quot;$&amp;quot; pour le rôle :&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par remplacement des composants :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
            ... Site3 has been added, other sites has been removed.&lt;br /&gt;
            ... There is one site left in the list&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par ajout de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;create&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
                ... Site3 has been added, other sites are not affected&lt;br /&gt;
                ... There is one site more in the list&lt;br /&gt;
            }&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par mise à jour de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;update&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;, &lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;Site maj&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!contrôle&lt;br /&gt;
!action&lt;br /&gt;
|-&lt;br /&gt;
|create&lt;br /&gt;
|Les nouvelles ressources sont ajoutées au rôle&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|Les ressources existantes dans le rôle sont mise à jour&lt;br /&gt;
|-&lt;br /&gt;
|delete&lt;br /&gt;
|Les ressources existantes et non présentes dans la requête sont supprimées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est &amp;quot;create&amp;quot;,&amp;quot;update&amp;quot;,&amp;quot;delete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Modification des attributs privés===&lt;br /&gt;
Par défaut les attributs privés sont modifiés sur le niveau de partage correspondant au périmètre société, pour contrôler le niveau de partage des attributs privés utilisez un élément de contrôle $sharePrivateLevel.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!sharePrivateLevel&lt;br /&gt;
!Périmètre de définition&lt;br /&gt;
|-&lt;br /&gt;
|absent&lt;br /&gt;
|Périmètre courant de l'objet&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Dossier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Activité&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Société&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le périmètre courant de l'objet dépend de l'état de l'objet. Par exemple, si l'objet est de niveau activité et n'a pas de propriété défini pour la société courante, le périmètre courant sera l'activité, mais si l'objet a des propriétés définies pour la société courante alors le périmètre courant sera la société. Ne pas définir explicitement le niveau de partage peut amener à des ambiguïtés.}}&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour les sociétés de l'activité du Tiers (le tiers n'a pas de propriété défini pour la société S3):'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CHQ'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour la société S3 :'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$sharePrivateLevel&amp;quot;:2,&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CBB'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suppression de ressource (DELETE)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opération sur une ressource (POST)==&lt;br /&gt;
&lt;br /&gt;
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.&lt;br /&gt;
&lt;br /&gt;
===Méthode d'instance de ressource===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Méthode de classe de ressource, ou méthode de classe non persistante===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Passage des paramètres===&lt;br /&gt;
Les paramètres sont passés par nom et valeur.&lt;br /&gt;
&lt;br /&gt;
Les types de paramètres et de retour supportés sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;xxx&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Entier&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|&amp;quot;p&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
|Flottant&lt;br /&gt;
|&amp;quot;p&amp;quot;:1.1&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;2020-12-25T01:01:01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Enuméré (par valeur)&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Liste d'objets&lt;br /&gt;
|&amp;quot;p&amp;quot;:[ {$key:&amp;quot;key&amp;quot;, $uuid:&amp;quot;uuid&amp;quot;, $where:&amp;quot;expression&amp;quot;}, ...],&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Les références des objets passés dans des listes peuvent être définies par clé ($key), identifiant appelant ($uuid) ou expression ($where)&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;paramList&amp;quot;:[&lt;br /&gt;
    {&amp;quot;$key&amp;quot;:&amp;quot;B5A28A92EB0C00020010000001F500A1&amp;quot;},&lt;br /&gt;
    {&amp;quot;$where&amp;quot;:&amp;quot;uneChaine like 'cN%'&amp;quot;}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Résultat de type ressource===&lt;br /&gt;
Lorsque l'opération retourne un objet ou une liste d'objets ceux-ci sont retournés sous forme de ressource.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//class Function GetWFClasseA(const iCode:string):WFClasseA;&lt;br /&gt;
begin&lt;br /&gt;
  Result := WFClasseA.Find('(unCode = %1)','unCode',True,[iCode]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassea&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:41:41.015Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Class Function GetWFClasseA(const iCodeLike:string):WFClasseAList;&lt;br /&gt;
begin&lt;br /&gt;
 Result := WFClasseA.CreateListWhere('(unCode like %1)','','unCode',True,-1,[iCodeLike]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassealist&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:49:14.061Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E-0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaalb&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 2,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 2&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A-0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaale&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Initial&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            ......&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialisation de la ressource===&lt;br /&gt;
Il est possible d'initialiser la ressource avant d'exécuter la méthode, par exemple pour un processus :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  TmyProcessus = class&lt;br /&gt;
  public&lt;br /&gt;
   procedure Execute(p:string);&lt;br /&gt;
   property attString:string;&lt;br /&gt;
   property attInt:Integer;&lt;br /&gt;
   property attRef:TRefClass;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/execute&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$resource&amp;quot;:{&lt;br /&gt;
 &amp;quot;attString&amp;quot;:&amp;quot;value 1&amp;quot;,&lt;br /&gt;
 &amp;quot;attInt&amp;quot;:100,&lt;br /&gt;
 &amp;quot;attRef&amp;quot;:{&amp;quot;$url&amp;quot;:&amp;quot;TRefClass('xxx')&amp;quot;},&lt;br /&gt;
},&lt;br /&gt;
&amp;quot;p&amp;quot;:&amp;quot;value&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requête Batch (POST $batch)==&lt;br /&gt;
Une requête Batch permet de réaliser plusieurs opérations de type GET,POST/PUT/DELETE/EXEC en une seule fois.&lt;br /&gt;
&lt;br /&gt;
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://.../sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;POST&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers&amp;quot;,&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SYFRE2&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;syfre 2&amp;quot;,&lt;br /&gt;
         &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
               &amp;quot;caption&amp;quot;:&amp;quot;site2 de syfre2&amp;quot;,&lt;br /&gt;
               &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
                  &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
                  &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
                  &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
                  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
                     &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
                     &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
                  }&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Le format d'url complet de $Batch est https://hostname/service/server/sdata/l1000/-/-/$batch}}&lt;br /&gt;
&lt;br /&gt;
===Gestion de la transaction dans un batch===&lt;br /&gt;
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une opération Batch atomique (une seule transaction longue) utilisez un élément de contrôle transaction :&lt;br /&gt;
&lt;br /&gt;
Lorsque l'opération est atomique la réponse contient un élément $batch indiquant le statut de l'opération.&lt;br /&gt;
&lt;br /&gt;
Le code de retour http est le code de retour de la dernière opération réalisée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;: {&amp;quot;$transaction&amp;quot;:[&amp;quot;atomic&amp;quot;]},&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:7200,&amp;quot;CodeDevise&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:1000,&amp;quot;CodeDevise&amp;quot;:&amp;quot;EUR&amp;quot;}&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 401&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;PUT&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
            &amp;quot;$etag&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000000285DAE-0000018C00000001&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 410,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
            &amp;quot;$&amp;quot;: {&lt;br /&gt;
                &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                        &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                        &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;$batch&amp;quot;: {&lt;br /&gt;
        &amp;quot;$httpStatus&amp;quot;: 400,&lt;br /&gt;
        &amp;quot;$httpMessage&amp;quot;: &amp;quot;ROLLBACK&amp;quot;,&lt;br /&gt;
        &amp;quot;$&amp;quot;: {&lt;br /&gt;
            &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                    &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                    &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;,&lt;br /&gt;
                    &amp;quot;entry&amp;quot;: {&lt;br /&gt;
                        &amp;quot;number&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;uuid&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''$transaction :'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Commande&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|atomic&lt;br /&gt;
|Démarre une transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|flush&lt;br /&gt;
|Force un batch de la transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|commit&lt;br /&gt;
|Valide la transaction longue&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|L'élément de contrôle de transaction peut être placé au niveau d'un ordre du lot.}}&lt;br /&gt;
&lt;br /&gt;
===Execution de méthode dans un batch===&lt;br /&gt;
Utiliser le verbe EXEC pour exécuter une méthode &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;EXEC&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
         &amp;quot;$resource&amp;quot;:{&lt;br /&gt;
            &amp;quot;uneChaine&amp;quot;:&amp;quot;value 1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;p&amp;quot;:&amp;quot;value 2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Executed&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: &amp;quot;value 1 value 2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schéma d'une ressource (GET $schema)==&lt;br /&gt;
Le schéma d'une ressource retourne la structure de la classe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Libellé de la Classe A&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;unBool&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Bool&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un code&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDerive&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un dérivé&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDouble&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;double&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un double&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEmail&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un email&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Entier&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Etat&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unStatus&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Statut de l'objet (Panel)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseBRef&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
                &amp;quot;$ref&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema&amp;quot;,&lt;br /&gt;
                &amp;quot;$relationship&amp;quot;: &amp;quot;reference&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Référence B&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseCList&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
            &amp;quot;item&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;Classe C&amp;quot;,&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;un entier&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu de la réponse peut être configurée avec le paramètre &amp;quot;select&amp;quot;, à défaut toutes les informations sont retournées.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|Retourne uniquement les attributs issus d'extension&lt;br /&gt;
|-&lt;br /&gt;
|properties&lt;br /&gt;
|Retourne la liste de tous les attributs&lt;br /&gt;
|-&lt;br /&gt;
|selfProperties&lt;br /&gt;
|Retourne uniquement les attributs de la classe elle même&lt;br /&gt;
|-&lt;br /&gt;
|operations&lt;br /&gt;
|Retourne les opérations de la classe&lt;br /&gt;
|-&lt;br /&gt;
|compositions&lt;br /&gt;
|Retourne le schéma des classes composants &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : Retrouver uniquement les attributs d'extension d'une classe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/ttiers/$schema?select=extensions&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Tiers&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;extensions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;class&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Extension de TTiers&amp;quot;,&lt;br /&gt;
            &amp;quot;package&amp;quot;: &amp;quot;esmPackage&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;esmCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;extension&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;un code esm&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/gentiers/TTiers/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle de ressource (GET $template)==&lt;br /&gt;
Le modèle de ressource retourne une ressource initialisée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gcimport/TImportContratCommercial/$template&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gcimport/-/TImportContratCommercial&amp;quot;,&lt;br /&gt;
    &amp;quot;stamp&amp;quot;: &amp;quot;000001D900000001&amp;quot;,&lt;br /&gt;
    &amp;quot;acompte&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;affaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;budget&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;Caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;commandeEngagement&amp;quot;: false,&lt;br /&gt;
    &amp;quot;commercial&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;coursDevise&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;CodeDevise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;Date&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
        &amp;quot;TCConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;TCValue&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;RPConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;RPValue&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coursNegocie&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dateCommande&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;dateLivraison&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;devise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI1&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI2&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI3&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI4&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;echeancement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;etablissement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTaxe&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;gestionTransport&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Automatique&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;immobilisation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;B&amp;amp;S&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ImportCCDetailList&amp;quot;: [],&lt;br /&gt;
    &amp;quot;importeGMAO&amp;quot;: false,&lt;br /&gt;
    &amp;quot;importerRemisePied&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ImportSiteAdresse&amp;quot;: {},&lt;br /&gt;
    &amp;quot;incoterm&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;MentionExonerationTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;posteBudgetaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;pourcentAcompte&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;pourcentRemisePied&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;reference&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;referenceMandat&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;regimeTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiers&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiersLivre&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;SessionImportation&amp;quot;: {},&lt;br /&gt;
    &amp;quot;typeFacturation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;HT&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SData|Point d'accès et url SData]]&lt;br /&gt;
* [[Gestion des jetons d'authentification (Administration)|Gestion des jetons d'authentification]]&lt;br /&gt;
* [[API Json (SData)|API SData en mode json]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi les exemples suivants : &lt;br /&gt;
&lt;br /&gt;
* [[Utilisation du contrôleur de partage (API)|Utilisation du contrôleur de partage]]&lt;br /&gt;
* [[Interrogation des écritures (API)|Interrogation des écritures avec l'API SData]]&lt;br /&gt;
* [[Interrogation des fournisseurs (API)|Interrogation des fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Creation d'un fournisseur (API)|Création d'un fournisseur avec l'API SData]]&lt;br /&gt;
* [[Import_de commandes_(API)|Import de commandes avec l'API SData]]&lt;br /&gt;
* [[Import_d%27écritures_(API)|Import d'écritures avec l'API SData]]&lt;br /&gt;
* [[Gestion des réceptions fournisseurs (API)|Gestion des réceptions fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Facturation d'un bon de livraison (API)|Facturation d'un bon de livraison avec l'API SData]]&lt;br /&gt;
* [[Creation_d%27un_Tiers_et_son_compte_bancaire_(API)|Creation_d'un Tiers et son compte bancaire (API)]]&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)</id>
		<title>Fichier de configuration (server)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)"/>
				<updated>2026-03-11T09:16:45Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Logs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
Le Serveur d'application Sage 1000 utilise un fichier de configuration situé dans le répertoire du serveur.&lt;br /&gt;
&lt;br /&gt;
{{info|Le nom du fichier est serverl1000.ini}}&lt;br /&gt;
&lt;br /&gt;
Ce fichier peut être soit modifié à l'aide de la console d'administration des services, soit manuellement par un éditeur de texte.&lt;br /&gt;
&lt;br /&gt;
{{tip|Le fichier est chargé au démarrage du service.}}&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
Le fichier peut configurer plusieurs services exécutés sur le même serveur, chaque service comporte au moins deux sections :&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SERVICE_NAME]&lt;br /&gt;
: Cette entrée détermine la configuration réseau du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE]&lt;br /&gt;
: Cette entrée détermine la configuration logicielle du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE\Export]&lt;br /&gt;
: Cette entrée configure la fonction d'exportation du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\MYSERVICE]&lt;br /&gt;
ipcMode=ipcSHM&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
shmAddress=SYFRE&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\MYSERVICE]&lt;br /&gt;
Master base=orasql://myhost/DBMASTER_ORA?prefix=&amp;quot;DBMASTERT_ORA.&amp;quot;&lt;br /&gt;
Master driver=orasql&lt;br /&gt;
Master OS Authentication=0&lt;br /&gt;
Master user=DBMASTER_ORA&lt;br /&gt;
Master password=DBMASTER_ORA&lt;br /&gt;
Server Societies=Société de démonstration GCF 1000&lt;br /&gt;
Server Application=Sage 1000 Suite Financière&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chaque section est composée d'une liste de variables (NomVariable=ValeurVariable), les types de données des variables sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|Chaîne de caractère&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|Valeur logique 0:Non 1:Oui&lt;br /&gt;
|-&lt;br /&gt;
|Integer&lt;br /&gt;
|Valeur entière&lt;br /&gt;
|-&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste de chaîne de caractère séparée par des virgules.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Section IPC===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Contexte&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|ipcMode&lt;br /&gt;
|enumération&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|&lt;br /&gt;
*ipcTCP&lt;br /&gt;
:Mode de communication par TCP/IP&lt;br /&gt;
*ipcSHM&lt;br /&gt;
:Mode de communication par mémoire partagée (dépréciée)&lt;br /&gt;
|-&lt;br /&gt;
|tcpPort&lt;br /&gt;
|Integer&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Port de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|tcpAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Adresse de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|shmAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Nom du segment de mémoire partagé&lt;br /&gt;
|-&lt;br /&gt;
|serverList&lt;br /&gt;
|Serveur&lt;br /&gt;
|String list&lt;br /&gt;
|Configuration de Cluster&amp;lt;br&amp;gt;&lt;br /&gt;
Liste des services associés à cet identifiant de service. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\TRESO]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
tcpAddress=localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration Cluster :&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration des services :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration du client HTTP :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Servers===&lt;br /&gt;
====IPC====&lt;br /&gt;
Ces variables configurent la gestion des services IPC.&lt;br /&gt;
&lt;br /&gt;
La configuration des services IPC peut être renseignée dans une section IPC&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;IPC Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|IPC Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section IPC contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|IPC Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre les services IPC (défaut true)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les services IPC sont les services permettant de communiquer via RPC.&lt;br /&gt;
&lt;br /&gt;
Vous avez besoins des services IPC si :&lt;br /&gt;
* Vous utilisez un serveur HTTP externe (IIS ou Apache).&lt;br /&gt;
* Vous utilisez la Console des Processus Métiers pour dialoguer avec ce Service.&lt;br /&gt;
* Vous utilisez le Contrôleur des services.&lt;br /&gt;
* Ce Service exécute des tâches de traitement déléguées par un autre Service.&lt;br /&gt;
&lt;br /&gt;
Si vous n'utilisez pas les services IPC il est conseillé de ne pas les démarrer.&lt;br /&gt;
&lt;br /&gt;
{{tip|Ce paramètre n'est pas modifiable depuis la console des services car si vous désactivez les services IPC le contrôleur n'est plus opérationnel}}&lt;br /&gt;
&lt;br /&gt;
====Sessions====&lt;br /&gt;
Ces variables configurent la gestion des sessions.&lt;br /&gt;
&lt;br /&gt;
La configuration des sessions peut être renseignée dans une section SESSIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SESSIONS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;SESSIONS Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Défaut&lt;br /&gt;
!Min&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SESSIONS Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Référence un nom de section SESSIONS contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|CheckInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|1 minute&lt;br /&gt;
|1 minute&lt;br /&gt;
|Délai entre chaque test d'expiration en seconde.&lt;br /&gt;
|-&lt;br /&gt;
|ExpireInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|15 minutes&lt;br /&gt;
|&lt;br /&gt;
|Délai d'expiration des sessions en seconde.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Base master====&lt;br /&gt;
Ces variables configurent la base Master utilisée par le service.&lt;br /&gt;
&lt;br /&gt;
La configuration de la base master peut être renseignée dans une section MASTER &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\MASTER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Master Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Master Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section MASTER contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|Master base&lt;br /&gt;
|String&lt;br /&gt;
|Nom de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master driver&lt;br /&gt;
|String&lt;br /&gt;
|Nom du driver de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master OS Authentication&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utiliser l'authentification du système d'exploitation.&lt;br /&gt;
|-&lt;br /&gt;
|Master user&lt;br /&gt;
|String&lt;br /&gt;
|Nom d'utilisateur utilisé pour la connexion à la base Master&lt;br /&gt;
|-&lt;br /&gt;
|Master password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe utilisé pour la connexion à la base Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Application et Sociétés====&lt;br /&gt;
Ces variables configurent l'application et les sociétés servies par le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Societies&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste des sociétés/dossiers servies par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Application&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'application servie par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Password&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Mot de passe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User Group&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du groupe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Authentication&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Annuaire utilisé pour l'authentification.&lt;br /&gt;
|-&lt;br /&gt;
|Authentication Directories&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|8.00&lt;br /&gt;
|Annuaires disponibles pour ce service.(code des annuaires séparés par &amp;quot;;&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Service====&lt;br /&gt;
Ces variables configurent le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du service.&lt;br /&gt;
|-&lt;br /&gt;
|Cache Folder&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Répertoire où stocker les fichiers temporaires et les fichiers en cache.&lt;br /&gt;
|-&lt;br /&gt;
|[[Zone publique (server)|Public Folder]]&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|[[Zone_publique_(server)|Racine des répertoires partagés du service]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Public links (server)|Public Links]]&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de répertoires réseaux (séparés par un ;) pour lesquels des [[Stockage_des_documents|documents peuvent être associés]].&lt;br /&gt;
|-&lt;br /&gt;
|Send Alert To&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste d'adresses emails (séparées par un ;) auxquelles seront envoyés les messages d'alertes.&lt;br /&gt;
|-&lt;br /&gt;
|Scripts&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de références CSS ajouté aux pages HTML&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de lignes affichées dans les grilles (par défaut à 10 000). &lt;br /&gt;
|-&lt;br /&gt;
|[[Security mode (server)|Security Mode]]&lt;br /&gt;
|String&lt;br /&gt;
|7.00&lt;br /&gt;
|Valeurs possibles : Intranet (valeur par défaut) / Internet [[Service_exposé_sur_internet|Voir Service exposé sur internet]]&lt;br /&gt;
|-&lt;br /&gt;
|Enable Remember User&lt;br /&gt;
|boolean&lt;br /&gt;
|7.10&lt;br /&gt;
|Permet à l'utilisateur d'avoir son nom pré-renseigné dans la page d'authentification (par défaut à vrai) &lt;br /&gt;
|-&lt;br /&gt;
|MaxPreviewPageCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview max page&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview blocking&lt;br /&gt;
|Boolean&lt;br /&gt;
|10.00&lt;br /&gt;
|1:Les aperçus sont affichés directement en onglet 0:les aperçus sont envoyés dans la bam. &lt;br /&gt;
|-&lt;br /&gt;
|Preview timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Délai d'attente de fin d'aperçu si Preview blocking=1. &lt;br /&gt;
|-&lt;br /&gt;
|Printer Filter&lt;br /&gt;
|chaine&lt;br /&gt;
|&lt;br /&gt;
|Noms des imprimantes à ne pas proposer, séparées par des points virgules (9.20)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Automates====&lt;br /&gt;
Ces variables configurent le serveur d'automate inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section AUTOMATE &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\AUTOMATE\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Automate Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Automate Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Référence une section AUTOMATE.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Started&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|Démarre le serveur d'automate. (défaut) (*)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Automate Name&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du serveur d'automate à démarrer. (*)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Message Box&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Message Box&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Boite à messages utilisé par le serveur d'automate.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Service&amp;lt;br&amp;gt;&lt;br /&gt;
Process Task Service&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du Service 1000 exécutant les tâches du serveur d'automate.(hostname.servicename)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Count&amp;lt;br&amp;gt;&lt;br /&gt;
|Integer&lt;br /&gt;
|6.50&lt;br /&gt;
|Nombre maximal de tâches automates simultanées (défaut 1).&lt;br /&gt;
|-&lt;br /&gt;
|Automate Debug&amp;lt;br&amp;gt;&lt;br /&gt;
|Boolean&lt;br /&gt;
|7.00 Patch&lt;br /&gt;
|Active le mode debug verbose (**).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (*) Ces valeurs peuvent être modifiées sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (**) A utiliser conjointement avec la console de trap snmp&lt;br /&gt;
&lt;br /&gt;
====Processus métiers====&lt;br /&gt;
Ces variables configurent le service de Processus Métiers inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|BP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Processus Métiers (défault).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} Cette valeur peut être modifiée sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
====Système====&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROCESS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROCESS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Process Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Process Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROCESS&lt;br /&gt;
|-&lt;br /&gt;
|ProcessAffinity&lt;br /&gt;
|String&lt;br /&gt;
|Détermine les coeurs utilisés par le processus sur une machine multi-coeurs&amp;lt;br&amp;gt;&lt;br /&gt;
ex : 1,3 pour utiliser les coeurs 1 et 3 d'une machine multi-coeurs.&lt;br /&gt;
|-&lt;br /&gt;
|ThreadPoolSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du pool de thread (20)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour un écran (défaut:20, 0:désactive l'utilisation du cache)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheLimit&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour l'ensemble des écrans (256)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheReuse&lt;br /&gt;
|Integer&lt;br /&gt;
|Nombre de fois qu'un écran peut être réutilisé (-1 : pas de limite)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*ProcessAffinity&lt;br /&gt;
:Le Processus du serveur est un processus multi-threadé, sur une machine multi-coeurs il utilise tous les coeurs disponibles sur le système d'exploitation. Dans certain cas il est souhaitable de restreindre l'exécution à certains coeurs.&lt;br /&gt;
&lt;br /&gt;
*ThreadPoolsize&lt;br /&gt;
:Chaque requête sur le service est exécutée par une thread allouée d'un pool ; lorsque le pool est plein la requête est suspendue jusqu'à ce qu'une thread se libère dans le pool. Cette variable limite la taille du pool de thread et par conséquence limite les contentions et les &amp;quot;context switches&amp;quot; provoqués par le processus.&lt;br /&gt;
&lt;br /&gt;
*FormCacheSize&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre d'instance d'un écran dans le cache.&lt;br /&gt;
&lt;br /&gt;
*FormCacheLimit&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre maximal d'écran dans le cache et par conséquent la mémoire utilisée par le cache d'écran.&lt;br /&gt;
&lt;br /&gt;
*FormCacheReuse&lt;br /&gt;
:Indique le nombre de fois qu'un écran en cache peut être réutilisé. &lt;br /&gt;
&lt;br /&gt;
{{info|Pour pouvoir utiliser WMI la dll serviceL1000perf.dll doit être présente dans le répertoire du serveur.}}&lt;br /&gt;
{{info|Pour désactiver le cache, définir la valeur de FormCacheSize à 0}}&lt;br /&gt;
&lt;br /&gt;
====Files d'attente====&lt;br /&gt;
Ces variables configurent le service de consommation de file d'attente.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\QUEUELISTENER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Queue listener Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de consommation de file d'attente.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener queues&lt;br /&gt;
|Liste de chaînes séparées par des ,&lt;br /&gt;
|Liste des files d'attente à consommer.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Task count&lt;br /&gt;
|Entier&lt;br /&gt;
|Nombre maximal de tâches simultanées par service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les paramètres de scrutation d'une file d'attente peuvent être configurés à la suite du nom de la file d'attente en séparant les paramètres par un caractère &amp;quot;:&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Valeur par défaut (ms)&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Initial&lt;br /&gt;
|1000&lt;br /&gt;
|Délai initial de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Max&lt;br /&gt;
|10000&lt;br /&gt;
|Délai maximal de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Increment&lt;br /&gt;
|1000&lt;br /&gt;
|Incrément du délai jusqu'au délai maximal si aucun message n'est disponible (ms)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Queue listener queues=MyQueue1:2000:10:20000,MyQueue2,MyQueue3:100:10:1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec les valeurs par défaut, une file d'attente est lue initialement toutes les secondes, puis si aucun message n'est reçu, ce délai monte jusqu'à 10 secondes. Lorsque un message est reçu le délai est réinitialisé à 1 seconde et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
====Compteurs de performance====&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PERF\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Performance Counters Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Counters&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre les compteurs de performance&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Clock&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'horloge de performance&lt;br /&gt;
|-&lt;br /&gt;
|Performance Clock Delay&lt;br /&gt;
|Cardinal&lt;br /&gt;
|Période de l'horloge de performance (ms)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Start&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole du serveur HTTP de performance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Start Performance Counters&lt;br /&gt;
:Le serveur inclus un certain nombre de [[Compteurs de performance (monitoring)|compteurs de performance]] interrogeables par le [[Serveur de performance (monitoring)|serveur de performance]].&lt;br /&gt;
&lt;br /&gt;
*Start Performance Clock&lt;br /&gt;
: Démarre une horloge permettant de générer un évènement de monitoring.&lt;br /&gt;
&lt;br /&gt;
*Performance Clock Delay&lt;br /&gt;
: Période de l'horloge de performance. (défaut 1000)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Start&lt;br /&gt;
: Démarre le server HTTP de performance.&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Port&lt;br /&gt;
: Port du serveur HTTP de performance. (défaut 9999)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Protocol&lt;br /&gt;
:Protocole du serveur HTTP de performance (défaut http)&lt;br /&gt;
&lt;br /&gt;
Voir la catégorie [[:Category:Monitoring]]&lt;br /&gt;
&lt;br /&gt;
====HTTP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section HTTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\HTTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;HTTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent le protocole HTTP utilisé par le service, elles sont utilisées pour construire des URL pointant sur le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Par défaut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|http:&lt;br /&gt;
|Protocole HTTP publique du Service (http: ou https:)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Toute&lt;br /&gt;
|80&lt;br /&gt;
|Port HTTP publique du Service&lt;br /&gt;
|-&lt;br /&gt;
|HTTP HostName&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|Nom local de la machine &lt;br /&gt;
|Domaine publique du serveur HTTP frontal&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ServiceName&lt;br /&gt;
|String&lt;br /&gt;
|6.51&lt;br /&gt;
|Nom du service&lt;br /&gt;
|&lt;br /&gt;
Nom du service load-balancé utilisé par le service&amp;lt;br&amp;gt;&lt;br /&gt;
Ce nom peut différer du nom du service dans une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
C'est ce nom qui est enregistrée dans les URLs de la registry SDATA&amp;lt;br&amp;gt;&lt;br /&gt;
Implémenté pour SOAP à partir de la version 7 &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent [[Serveur HTTP (server)|le service HTTP interne]] inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{{Version700}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le protocole est défini par HTTP Protocol&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le port est défini par HTTP Port&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Site&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire du site utilisé par le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Alias&lt;br /&gt;
|String&lt;br /&gt;
|Nom de section des alias de répertoire du serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat (.pem) &lt;br /&gt;
|-&lt;br /&gt;
|HTTP RootCertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat de l'autorité intermédiaire qui a signé le certificat &amp;quot;CertFile&amp;quot; (.pem).&amp;lt;br&amp;gt;&lt;br /&gt;
Ce paramètre est optionnel, il est utile si l'autorité intermédiaire n'est pas directement reconnue par le navigateur. &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier clef privée (.pem ou .key) qui est liée au certificat &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyPassword&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le mot de passe qui permet de décoder la clef privée&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertIssuer&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente l'émetteur du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertSerial&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le numéro de série du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLVersion&lt;br /&gt;
|String&lt;br /&gt;
|Version du protocole SSL à utiliser: sslvTLSv1_1, sslvTLSv1_2, sslvTLSv1_3 (par défaut :sslvTLSv1_2)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLCipherList&lt;br /&gt;
|String&lt;br /&gt;
|Sceaux proposés par le serveur (par défaut &amp;quot;HIGH:!aNULL:!MD5:!RC4&amp;quot;) [https://www.openssl.org/docs/manmaster/apps/ciphers.html en savoir plus] Version 7.10&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|Boolean&lt;br /&gt;
|Détermine la valeur du paramètre KeepAlive des réponses du serveur HTTP.&amp;lt;br&amp;gt;&lt;br /&gt;
La valeur est True (1) par défaut et le serveur renvoi KeepAlive dans ses réponses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette valeur doit être false (0) pour une configuration load balancée.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Permet de démarrer un service http &amp;quot;privé&amp;quot;, utile dans le cadre d'une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
Ce service n'est adressé que par les autres services, et permet d'économiser la partie SSL des échanges.&amp;lt;br&amp;gt;&lt;br /&gt;
Le port de ce service ne doit pas être exposé au clients web.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Détermine la valeur du port http privé.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Log&lt;br /&gt;
|Booléen&lt;br /&gt;
|Active la journalisation des flux http (Version 10)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|TLS 1.3 supporté à partir de la version 10 en utilisant OpenSSL 3.0}}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le protocole/port publique peuvent être différent du protocole/port d'écoute si un load balancer est utilisé.}}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
* [[Serveur HTTP (server)|Serveur HTTP interne]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTPS|Configuration du serveur en HTTPs]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTP_derrière_un_répartiteur_de_charge|Configuration derrière un répartiteur de charge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains de ces paramètres peuvent être remplacés par [[Service_1000_(server)|les paramètres de la ligne de commande]] :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Paramètre de la ligne de commande&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|HTTPPORT&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|HTTPKEEPALIVE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HTTP ACLs====&lt;br /&gt;
{{version710}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ACL&lt;br /&gt;
|string&lt;br /&gt;
|Liste de règles séparées par une virgule, par ordre de priorité&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La syntaxe d'une règle ACL :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 action-IP/Nob&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*action&lt;br /&gt;
: Type de règle, doit être accept ou deny&lt;br /&gt;
*IP&lt;br /&gt;
: Addresse IP en notation pointé&lt;br /&gt;
*Nob (facultatif)&lt;br /&gt;
:Nombre de bits du masque de sous réseau, par exemple 29 correspond au masque 255.255.255.248 et défini un sous réseau de 8 adresses. &lt;br /&gt;
&lt;br /&gt;
[http://jodies.de/ipcalc Calculateur de masque]&lt;br /&gt;
&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&lt;br /&gt;
Autorise les adresses 192.168.1.0 ... 192.168.1.7 à l’exception de 192.168.1.5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deny-192.168.1.5&lt;br /&gt;
accept-192.168.1.0/29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&lt;br /&gt;
Autorise seulement l'adresse 192.168.1.1 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
accept-192.168.1.1&lt;br /&gt;
deny-0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Worker====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Le Web Worker est un mécanisme de notification asynchrone permettant au client Web d'être notifié des événements survenant coté serveur.&lt;br /&gt;
&lt;br /&gt;
Il permet de gérer les notifications de boîte à message ainsi que les notifications de traitement. &lt;br /&gt;
&lt;br /&gt;
L'utilisation du web worker améliore l'expérience utilisateur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web worker started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation du web worker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque le web worker est activé, le client génère des requêtes msg.pending périodiques.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Socket====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Les WebSockets utilisent un protocole permettant de créé des canaux de communication full-duplex à l'intérieur d'une connexion TCP. &lt;br /&gt;
&lt;br /&gt;
L'utilisation des WebSockets améliore l'expérience utilisateur par une meilleur fluidité des échanges.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web socket started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation de WebSocket &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip| &lt;br /&gt;
&lt;br /&gt;
#Les WebSocket ne sont prises en charge que par le serveur HTTP embarqué et en mode '''HTTPs uniquement'''.&lt;br /&gt;
#Les WebSockets sont activées par défaut.&lt;br /&gt;
#Les WebSocket peuvent ne pas fonctionner ou provoquer des problèmes dans le cas d'utilisation du serveur Sage 1000 derrière un load balancer qui ne supporterait pas le protocole WebSocket.&lt;br /&gt;
#L'url utilisée doit correspondre au domaine du certificat SSL. Par exemple, en entreprise, si votre serveur est myhost sur le domaine interne xxx.yyy.zzz le nom de domaine du certificat auto-généré sera myhost.xxx.yyy.zzz. Vous devez utiliser https://myhost.xxx.yyy.zzz comme url d'accès même si https://myhost est valide sur votre réseau. A défaut l'établissement des connexions websockets échoueront.}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque les websockets sont actives, le dialogue d'attente n'est pas affiché.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP CSP====&lt;br /&gt;
La [https://developer.mozilla.org/fr/docs/Web/HTTP/CSP stratégie de sécurité du contenu] permet d'améliorer la sécurité des sites web.&lt;br /&gt;
&lt;br /&gt;
{{version1000}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CSP&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des règles séparées par &amp;quot;;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple &lt;br /&gt;
&lt;br /&gt;
HTTP CSP = default-src 'self'; script-src https://example.com&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est ''default-src 'self'''&lt;br /&gt;
&lt;br /&gt;
====HTTP CORS====&lt;br /&gt;
Le [https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS CORS] permet d'autoriser des requêtes provenant d'autre domaine.&lt;br /&gt;
&lt;br /&gt;
{{version800}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CORS Allow origin&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des domaines autorisés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des domaines doit être séparée par des virgules, utilisez * pour autoriser tous les domaines.&lt;br /&gt;
&lt;br /&gt;
Les domaines doivent être qualifié par le protocole, par exemple http://origin.com&lt;br /&gt;
&lt;br /&gt;
Les domaines indiqués ici seront comparés à la valeur du champ d'entête Origin&lt;br /&gt;
&lt;br /&gt;
Lorsque le domain est autorisé, le service retourne dans la réponse :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Champ&lt;br /&gt;
!Valeur&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Origin&lt;br /&gt;
|Valeur du chanmp Origin de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Vary&lt;br /&gt;
|Origin&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Credentials&lt;br /&gt;
|true&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Methods&lt;br /&gt;
|POST,PUT,DELETE,GET,OPTION&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Headers&lt;br /&gt;
|Valeur de Access-Control-Request-Headers de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Max-Age&lt;br /&gt;
|86400&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====FTPs====&lt;br /&gt;
Ces variables configurent le serveur FTPs inclu dans le servcice.&lt;br /&gt;
Le serveur FTP peut être utilisé sur les containeurs.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\FTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;FTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Start&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Démarre le service FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP ACL&lt;br /&gt;
|Chaîne&lt;br /&gt;
|Définit une liste d'ACL optionnelle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====WEB====&lt;br /&gt;
Ces variables configurent le service WEB inclu dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section WEB&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\WEB\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;WEB Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|WEB Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section WEB&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes chargées dans une grille (défaut 5000)&lt;br /&gt;
|-&lt;br /&gt;
|GridWindowSize&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes affichées dans une page de grille. (Défaut 25)&lt;br /&gt;
|-&lt;br /&gt;
|MDIForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|MDIAssistants&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|UseTreeBookClassic&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|SavePortalTabForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|DebugJS&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Utilise les javascript en mode debug (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|RecordMode&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active le mode enregistrement pour JMeter (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|FormRedirect&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active la redirection des urls d'écran, pour IIS cette redirection doit être désactivée. (défaut 1, ativé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Export de grille ====&lt;br /&gt;
&lt;br /&gt;
{{Version2025r2}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Grid exporters&lt;br /&gt;
|liste de nom d'extension de fichier séparés par une virgule&lt;br /&gt;
|Défini les formats d'export autorisés&lt;br /&gt;
|-&lt;br /&gt;
|Grid export limits&lt;br /&gt;
|Entier&lt;br /&gt;
|Limite le nombre de lignes exportées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Mise au point, debugger {{Version700}}====&lt;br /&gt;
Ces variables configurent le remote debugger inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Le remote debugger permet à un poste client desktop de visualiser, modifier et poser des points d'arrêt dans le code métier exécuté par le service. &lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section DEBUGGER&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\DEBUGGER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;DEBUGGER Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section DEBUGGER&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Users&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des utilisateurs autorisés à utiliser le service de remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Handlers&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des handlers des évènements de trace qui seront interceptés et redirigés vers le journal d'évènement, ceci vous permet de visualiser en temps réel ces traces dans la console SNMP. Les handlers possibles sont:&lt;br /&gt;
* script&lt;br /&gt;
: Evènements générés par la fonction dbgMsg() du code métier&lt;br /&gt;
* queries&lt;br /&gt;
: Evènements de trace des requêtes SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|L'utilisation de DEBUGGER Handlers peut provoquer une forte consommation de mémoire}}&lt;br /&gt;
{{warning|Ces fonctionnalités ne doivent pas être activés sur un serveur de production}}&lt;br /&gt;
&lt;br /&gt;
====LDAP====&lt;br /&gt;
Ces variables configurent le serveur LDAP inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section LDAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\LDAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;LDAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service LDAP (défaut false).&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port d'écoute du service LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe administrateur du compte system du serveur LDAP ('uid=admin,ou=system')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SAML====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SAMLv2 Log=1&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la trace SAML (à retirer une fois la mise au point effectuée)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SOAP====&lt;br /&gt;
Ces variables configurent le service SOAP inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SOAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SOAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;SOAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Documents&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des documents SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des messages SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP 5.5x&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise l'implémentation SOAP des versions 5.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*SOAP 5.5x&lt;br /&gt;
:L'implémentation de SOAP a été récrite en version 5.6x, en cas de problème de compatibilité avec des développements existant il est possible d'utiliser l'ancienne implémentation.&lt;br /&gt;
&lt;br /&gt;
====SMTP====&lt;br /&gt;
Ces variables configurent le client SMTP utilisé par le service pour envoyer des EMails.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SMTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SMTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SMTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SMTP&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP From&lt;br /&gt;
|String&lt;br /&gt;
|Adresse EMail de l'expéditeur.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP UseTLS&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise une sécurisation TLS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SNMP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SNMP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SNMP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent l'agent SNMP inclus dans le serveur. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'agent SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port UDP de l'agent SNMP (161)&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysName&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysName pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysContact&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysContact pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysLocation&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysLocation pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Traps&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|Référence des sections SNMPTRAP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les sections SNMPTRAP permettent de définir des points d'écoute SNMP auquels seront envoyés les messages de traps.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Host&lt;br /&gt;
|string&lt;br /&gt;
|Nom réseau du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Categories&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Catégories des traps à envoyer à ce point d'écoute&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des catégories de trap est la suivante :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de catégorie&lt;br /&gt;
!Type de message&lt;br /&gt;
|-&lt;br /&gt;
|Service&lt;br /&gt;
|Messages relatifs au processus du service.&lt;br /&gt;
|-&lt;br /&gt;
|Automate&lt;br /&gt;
|Messages relatifs aux exécutions de l'automate.&lt;br /&gt;
|-&lt;br /&gt;
|BP&lt;br /&gt;
|Messages relatifs aux exécutions des Processus métiers.&lt;br /&gt;
|-&lt;br /&gt;
|Authenticate&lt;br /&gt;
|Messages relatifs aux erreurs d'authentification.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration SNMP : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\CONFIG_SNMP_1]&lt;br /&gt;
SNMP Started=1&lt;br /&gt;
SNMP Start=1&lt;br /&gt;
SNMP Port=161&lt;br /&gt;
SNMP sysContact = toto@sage.com&lt;br /&gt;
SNMP sysName = toto&lt;br /&gt;
SNMP sysLocation = Paris,France&lt;br /&gt;
SNMP Traps=Service,Automate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Service]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Service,Authenticate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Automate]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Automate,BP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PROXY====&lt;br /&gt;
&lt;br /&gt;
{{tip|Déprécié, utiliser le paramétrage dans la console d'administration.}}&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le PROXY utilisé par le client HTTP.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROXY&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROXY\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;PROXY Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROXY&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur PROXY (défaut 8080).&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|Délai d'expiration du PROXY. (défaut 60 secondes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Exceptions====&lt;br /&gt;
Ces variables configurent l'enregistrement des exceptions du service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section EXCEPTIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\EXCEPTIONS\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Exceptions logs Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section EXCEPTIONS&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Enregistrer les exceptions. Vrai par défaut.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs path&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire dans lequel seront créés les fichiers d'exception.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs ignore&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste d'exception à ignorer.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs write file&lt;br /&gt;
|booléen&lt;br /&gt;
|Un fichier d'exception est écrit. Vrai par défaut. Il peut être inutile d'écrire un fichier d'exception si les exceptions sont transmises à un gestionnaire de log (voir LOG MANAGER) et permet dans ce cas ne ne pas encombrer le disque.(V8)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Captcha====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs souhaitant s'enregistrer peuvent être soumis à un captcha.&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur commet trois erreurs lors de l'authentification, il devra saisir un captcha.&lt;br /&gt;
&lt;br /&gt;
voir http://www.google.com/recaptcha&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Public Key&lt;br /&gt;
|string&lt;br /&gt;
|Clef publique Recaptcha&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Private Key&lt;br /&gt;
|String&lt;br /&gt;
|Clef privée Recaptcha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Quotas====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs téléversent des fichiers dans un répertoire propres à la session.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers doivent avoir une extension prévue pour des questions de sécurité.&lt;br /&gt;
&lt;br /&gt;
La taille totale du répertoire est définie pour éviter un manque de place sur le disque.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Upload Document Size&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb d'un fichier uploadé; valeur par défaut : 0 (non limité)&lt;br /&gt;
|-&lt;br /&gt;
|Upload User Quota&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb du répertoire upload de l'utilisateur par session; valeur par défaut : 50&lt;br /&gt;
|-&lt;br /&gt;
|Upload Ext Allowed&lt;br /&gt;
|String&lt;br /&gt;
|Extensions autorisées; valeur par défaut : vide (tout est autorisé)&lt;br /&gt;
|-&lt;br /&gt;
|Auto delete messages&lt;br /&gt;
|Entier&lt;br /&gt;
|Durée de conservation en jours des messages &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|La liste des extensions suivantes n'est jamais filtrée car le service est susceptible de créer des fichiers de ce type (xlsx,ods,xml,pdf,,csv,sxc,xls,,jpg,jpeg,png,asice)}}&lt;br /&gt;
&lt;br /&gt;
====Clefs====&lt;br /&gt;
&lt;br /&gt;
Le stockage de certaines clefs peut être externalié&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Key Cookie&lt;br /&gt;
|chaine&lt;br /&gt;
|[[keyvault_url|url d'un stockage sécurisé externe]], si la clef est non trouvée, elle y sera créée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Logs====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Log keep days&lt;br /&gt;
|entier&lt;br /&gt;
|durée en jour de rétention des fichiers dans le répertoire de log, par défaut 10&lt;br /&gt;
|-&lt;br /&gt;
|SDATA Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Enregistre les messages SDATA dans le répertoire de log &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sections SDATA===&lt;br /&gt;
Ces sections permettent de configurer les points d'accès SDATA qui seront exposés par le service.&lt;br /&gt;
&lt;br /&gt;
Les noms de ces sections sont&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\&amp;lt;&amp;lt;nom du service&amp;gt;&amp;gt;\SData\&amp;lt;&amp;lt;incrément 1...&amp;gt;&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DataSetName&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dataset dans l'URL SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Title&lt;br /&gt;
|string&lt;br /&gt;
|Libellé informatif sur l'usage du point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Contract&lt;br /&gt;
|string&lt;br /&gt;
|Nom du paquet de service SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Version&lt;br /&gt;
|string&lt;br /&gt;
|Numéro de version, peut être utilisé pour supporté plusieurs version du même contrat&lt;br /&gt;
|-&lt;br /&gt;
|Folder&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dossier utilisé par ce point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Database&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la base de donnée utilisé pour ce point d'accès (multi-bases)&lt;br /&gt;
|-&lt;br /&gt;
|Society&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la société pour ce point d'accès (multi-société) &lt;br /&gt;
|-&lt;br /&gt;
|Restitution&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la famille de restitution pour ce point d'accès (multi-société) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\SData\1]&lt;br /&gt;
DataSetName=iphone&lt;br /&gt;
Title=syfre iphone&lt;br /&gt;
Contract=ndfContract&lt;br /&gt;
Version=1&lt;br /&gt;
Folder=Test Syfre iPhone&lt;br /&gt;
Database=dbTestIPhone&lt;br /&gt;
Society=&lt;br /&gt;
Restitution=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Export===&lt;br /&gt;
Cette section permet de configurer la fonction d'exportation des vignettes de portail des Services. &lt;br /&gt;
&lt;br /&gt;
Deux mode d'exportation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*ftp&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire public accessible par ftp.&lt;br /&gt;
&lt;br /&gt;
*file&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire local du serveur. Ce mode n'est utile que si le répertoire est un répertoire du Site et que celui-ci est public.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Protocol&lt;br /&gt;
|String&lt;br /&gt;
|ftp ou file&lt;br /&gt;
|-&lt;br /&gt;
|Export URL&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL référence le répertoire où la vignette a été générée.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'ftp' les variables suivantes sont utilisées :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP host&lt;br /&gt;
|String&lt;br /&gt;
|Addresse du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur FTP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'file' les variables suivantes sont utilisées : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration ftp utilisant une zone publique Free : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\Export]&lt;br /&gt;
Protocol=ftp&lt;br /&gt;
Export URL=http://syfre.free.fr/sage/&lt;br /&gt;
FTP Host=ftpperso.free.fr&lt;br /&gt;
FTP Port=21&lt;br /&gt;
FTP Login=syfre&lt;br /&gt;
FTP Password=XXXXXXXXXX&lt;br /&gt;
FTP Directory=sage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section ConfigServer===&lt;br /&gt;
&lt;br /&gt;
Cette section permet d'utiliser un fichier de configuration disponible sur une url.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL permet de récupérer le fichier de configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un POST HTTP est effectué sur cette url avec les données suivantes : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;deploymentId&amp;quot;:&amp;quot;nom_système_de_la_machine&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le résultat attendu est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;config&amp;quot;:&amp;quot;contenu_du_fichier_de_configuration&amp;quot;},&lt;br /&gt;
{&amp;quot;certificate&amp;quot;:&amp;quot;certificat_au_format_pfx&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Exemple de configuration (server)|Exemple de configuration]]&lt;br /&gt;
*[[Service_1000_(server)|Ligne de commande]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Serveur}}&lt;br /&gt;
[[category:Serveur]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)</id>
		<title>Fichier de configuration (server)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)"/>
				<updated>2026-03-11T09:16:24Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Logs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
Le Serveur d'application Sage 1000 utilise un fichier de configuration situé dans le répertoire du serveur.&lt;br /&gt;
&lt;br /&gt;
{{info|Le nom du fichier est serverl1000.ini}}&lt;br /&gt;
&lt;br /&gt;
Ce fichier peut être soit modifié à l'aide de la console d'administration des services, soit manuellement par un éditeur de texte.&lt;br /&gt;
&lt;br /&gt;
{{tip|Le fichier est chargé au démarrage du service.}}&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
Le fichier peut configurer plusieurs services exécutés sur le même serveur, chaque service comporte au moins deux sections :&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SERVICE_NAME]&lt;br /&gt;
: Cette entrée détermine la configuration réseau du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE]&lt;br /&gt;
: Cette entrée détermine la configuration logicielle du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE\Export]&lt;br /&gt;
: Cette entrée configure la fonction d'exportation du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\MYSERVICE]&lt;br /&gt;
ipcMode=ipcSHM&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
shmAddress=SYFRE&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\MYSERVICE]&lt;br /&gt;
Master base=orasql://myhost/DBMASTER_ORA?prefix=&amp;quot;DBMASTERT_ORA.&amp;quot;&lt;br /&gt;
Master driver=orasql&lt;br /&gt;
Master OS Authentication=0&lt;br /&gt;
Master user=DBMASTER_ORA&lt;br /&gt;
Master password=DBMASTER_ORA&lt;br /&gt;
Server Societies=Société de démonstration GCF 1000&lt;br /&gt;
Server Application=Sage 1000 Suite Financière&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chaque section est composée d'une liste de variables (NomVariable=ValeurVariable), les types de données des variables sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|Chaîne de caractère&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|Valeur logique 0:Non 1:Oui&lt;br /&gt;
|-&lt;br /&gt;
|Integer&lt;br /&gt;
|Valeur entière&lt;br /&gt;
|-&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste de chaîne de caractère séparée par des virgules.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Section IPC===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Contexte&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|ipcMode&lt;br /&gt;
|enumération&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|&lt;br /&gt;
*ipcTCP&lt;br /&gt;
:Mode de communication par TCP/IP&lt;br /&gt;
*ipcSHM&lt;br /&gt;
:Mode de communication par mémoire partagée (dépréciée)&lt;br /&gt;
|-&lt;br /&gt;
|tcpPort&lt;br /&gt;
|Integer&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Port de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|tcpAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Adresse de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|shmAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Nom du segment de mémoire partagé&lt;br /&gt;
|-&lt;br /&gt;
|serverList&lt;br /&gt;
|Serveur&lt;br /&gt;
|String list&lt;br /&gt;
|Configuration de Cluster&amp;lt;br&amp;gt;&lt;br /&gt;
Liste des services associés à cet identifiant de service. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\TRESO]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
tcpAddress=localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration Cluster :&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration des services :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration du client HTTP :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Servers===&lt;br /&gt;
====IPC====&lt;br /&gt;
Ces variables configurent la gestion des services IPC.&lt;br /&gt;
&lt;br /&gt;
La configuration des services IPC peut être renseignée dans une section IPC&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;IPC Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|IPC Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section IPC contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|IPC Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre les services IPC (défaut true)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les services IPC sont les services permettant de communiquer via RPC.&lt;br /&gt;
&lt;br /&gt;
Vous avez besoins des services IPC si :&lt;br /&gt;
* Vous utilisez un serveur HTTP externe (IIS ou Apache).&lt;br /&gt;
* Vous utilisez la Console des Processus Métiers pour dialoguer avec ce Service.&lt;br /&gt;
* Vous utilisez le Contrôleur des services.&lt;br /&gt;
* Ce Service exécute des tâches de traitement déléguées par un autre Service.&lt;br /&gt;
&lt;br /&gt;
Si vous n'utilisez pas les services IPC il est conseillé de ne pas les démarrer.&lt;br /&gt;
&lt;br /&gt;
{{tip|Ce paramètre n'est pas modifiable depuis la console des services car si vous désactivez les services IPC le contrôleur n'est plus opérationnel}}&lt;br /&gt;
&lt;br /&gt;
====Sessions====&lt;br /&gt;
Ces variables configurent la gestion des sessions.&lt;br /&gt;
&lt;br /&gt;
La configuration des sessions peut être renseignée dans une section SESSIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SESSIONS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;SESSIONS Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Défaut&lt;br /&gt;
!Min&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SESSIONS Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Référence un nom de section SESSIONS contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|CheckInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|1 minute&lt;br /&gt;
|1 minute&lt;br /&gt;
|Délai entre chaque test d'expiration en seconde.&lt;br /&gt;
|-&lt;br /&gt;
|ExpireInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|15 minutes&lt;br /&gt;
|&lt;br /&gt;
|Délai d'expiration des sessions en seconde.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Base master====&lt;br /&gt;
Ces variables configurent la base Master utilisée par le service.&lt;br /&gt;
&lt;br /&gt;
La configuration de la base master peut être renseignée dans une section MASTER &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\MASTER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Master Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Master Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section MASTER contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|Master base&lt;br /&gt;
|String&lt;br /&gt;
|Nom de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master driver&lt;br /&gt;
|String&lt;br /&gt;
|Nom du driver de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master OS Authentication&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utiliser l'authentification du système d'exploitation.&lt;br /&gt;
|-&lt;br /&gt;
|Master user&lt;br /&gt;
|String&lt;br /&gt;
|Nom d'utilisateur utilisé pour la connexion à la base Master&lt;br /&gt;
|-&lt;br /&gt;
|Master password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe utilisé pour la connexion à la base Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Application et Sociétés====&lt;br /&gt;
Ces variables configurent l'application et les sociétés servies par le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Societies&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste des sociétés/dossiers servies par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Application&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'application servie par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Password&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Mot de passe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User Group&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du groupe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Authentication&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Annuaire utilisé pour l'authentification.&lt;br /&gt;
|-&lt;br /&gt;
|Authentication Directories&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|8.00&lt;br /&gt;
|Annuaires disponibles pour ce service.(code des annuaires séparés par &amp;quot;;&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Service====&lt;br /&gt;
Ces variables configurent le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du service.&lt;br /&gt;
|-&lt;br /&gt;
|Cache Folder&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Répertoire où stocker les fichiers temporaires et les fichiers en cache.&lt;br /&gt;
|-&lt;br /&gt;
|[[Zone publique (server)|Public Folder]]&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|[[Zone_publique_(server)|Racine des répertoires partagés du service]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Public links (server)|Public Links]]&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de répertoires réseaux (séparés par un ;) pour lesquels des [[Stockage_des_documents|documents peuvent être associés]].&lt;br /&gt;
|-&lt;br /&gt;
|Send Alert To&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste d'adresses emails (séparées par un ;) auxquelles seront envoyés les messages d'alertes.&lt;br /&gt;
|-&lt;br /&gt;
|Scripts&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de références CSS ajouté aux pages HTML&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de lignes affichées dans les grilles (par défaut à 10 000). &lt;br /&gt;
|-&lt;br /&gt;
|[[Security mode (server)|Security Mode]]&lt;br /&gt;
|String&lt;br /&gt;
|7.00&lt;br /&gt;
|Valeurs possibles : Intranet (valeur par défaut) / Internet [[Service_exposé_sur_internet|Voir Service exposé sur internet]]&lt;br /&gt;
|-&lt;br /&gt;
|Enable Remember User&lt;br /&gt;
|boolean&lt;br /&gt;
|7.10&lt;br /&gt;
|Permet à l'utilisateur d'avoir son nom pré-renseigné dans la page d'authentification (par défaut à vrai) &lt;br /&gt;
|-&lt;br /&gt;
|MaxPreviewPageCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview max page&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview blocking&lt;br /&gt;
|Boolean&lt;br /&gt;
|10.00&lt;br /&gt;
|1:Les aperçus sont affichés directement en onglet 0:les aperçus sont envoyés dans la bam. &lt;br /&gt;
|-&lt;br /&gt;
|Preview timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Délai d'attente de fin d'aperçu si Preview blocking=1. &lt;br /&gt;
|-&lt;br /&gt;
|Printer Filter&lt;br /&gt;
|chaine&lt;br /&gt;
|&lt;br /&gt;
|Noms des imprimantes à ne pas proposer, séparées par des points virgules (9.20)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Automates====&lt;br /&gt;
Ces variables configurent le serveur d'automate inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section AUTOMATE &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\AUTOMATE\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Automate Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Automate Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Référence une section AUTOMATE.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Started&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|Démarre le serveur d'automate. (défaut) (*)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Automate Name&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du serveur d'automate à démarrer. (*)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Message Box&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Message Box&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Boite à messages utilisé par le serveur d'automate.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Service&amp;lt;br&amp;gt;&lt;br /&gt;
Process Task Service&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du Service 1000 exécutant les tâches du serveur d'automate.(hostname.servicename)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Count&amp;lt;br&amp;gt;&lt;br /&gt;
|Integer&lt;br /&gt;
|6.50&lt;br /&gt;
|Nombre maximal de tâches automates simultanées (défaut 1).&lt;br /&gt;
|-&lt;br /&gt;
|Automate Debug&amp;lt;br&amp;gt;&lt;br /&gt;
|Boolean&lt;br /&gt;
|7.00 Patch&lt;br /&gt;
|Active le mode debug verbose (**).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (*) Ces valeurs peuvent être modifiées sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (**) A utiliser conjointement avec la console de trap snmp&lt;br /&gt;
&lt;br /&gt;
====Processus métiers====&lt;br /&gt;
Ces variables configurent le service de Processus Métiers inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|BP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Processus Métiers (défault).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} Cette valeur peut être modifiée sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
====Système====&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROCESS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROCESS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Process Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Process Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROCESS&lt;br /&gt;
|-&lt;br /&gt;
|ProcessAffinity&lt;br /&gt;
|String&lt;br /&gt;
|Détermine les coeurs utilisés par le processus sur une machine multi-coeurs&amp;lt;br&amp;gt;&lt;br /&gt;
ex : 1,3 pour utiliser les coeurs 1 et 3 d'une machine multi-coeurs.&lt;br /&gt;
|-&lt;br /&gt;
|ThreadPoolSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du pool de thread (20)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour un écran (défaut:20, 0:désactive l'utilisation du cache)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheLimit&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour l'ensemble des écrans (256)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheReuse&lt;br /&gt;
|Integer&lt;br /&gt;
|Nombre de fois qu'un écran peut être réutilisé (-1 : pas de limite)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*ProcessAffinity&lt;br /&gt;
:Le Processus du serveur est un processus multi-threadé, sur une machine multi-coeurs il utilise tous les coeurs disponibles sur le système d'exploitation. Dans certain cas il est souhaitable de restreindre l'exécution à certains coeurs.&lt;br /&gt;
&lt;br /&gt;
*ThreadPoolsize&lt;br /&gt;
:Chaque requête sur le service est exécutée par une thread allouée d'un pool ; lorsque le pool est plein la requête est suspendue jusqu'à ce qu'une thread se libère dans le pool. Cette variable limite la taille du pool de thread et par conséquence limite les contentions et les &amp;quot;context switches&amp;quot; provoqués par le processus.&lt;br /&gt;
&lt;br /&gt;
*FormCacheSize&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre d'instance d'un écran dans le cache.&lt;br /&gt;
&lt;br /&gt;
*FormCacheLimit&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre maximal d'écran dans le cache et par conséquent la mémoire utilisée par le cache d'écran.&lt;br /&gt;
&lt;br /&gt;
*FormCacheReuse&lt;br /&gt;
:Indique le nombre de fois qu'un écran en cache peut être réutilisé. &lt;br /&gt;
&lt;br /&gt;
{{info|Pour pouvoir utiliser WMI la dll serviceL1000perf.dll doit être présente dans le répertoire du serveur.}}&lt;br /&gt;
{{info|Pour désactiver le cache, définir la valeur de FormCacheSize à 0}}&lt;br /&gt;
&lt;br /&gt;
====Files d'attente====&lt;br /&gt;
Ces variables configurent le service de consommation de file d'attente.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\QUEUELISTENER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Queue listener Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de consommation de file d'attente.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener queues&lt;br /&gt;
|Liste de chaînes séparées par des ,&lt;br /&gt;
|Liste des files d'attente à consommer.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Task count&lt;br /&gt;
|Entier&lt;br /&gt;
|Nombre maximal de tâches simultanées par service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les paramètres de scrutation d'une file d'attente peuvent être configurés à la suite du nom de la file d'attente en séparant les paramètres par un caractère &amp;quot;:&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Valeur par défaut (ms)&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Initial&lt;br /&gt;
|1000&lt;br /&gt;
|Délai initial de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Max&lt;br /&gt;
|10000&lt;br /&gt;
|Délai maximal de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Increment&lt;br /&gt;
|1000&lt;br /&gt;
|Incrément du délai jusqu'au délai maximal si aucun message n'est disponible (ms)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Queue listener queues=MyQueue1:2000:10:20000,MyQueue2,MyQueue3:100:10:1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec les valeurs par défaut, une file d'attente est lue initialement toutes les secondes, puis si aucun message n'est reçu, ce délai monte jusqu'à 10 secondes. Lorsque un message est reçu le délai est réinitialisé à 1 seconde et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
====Compteurs de performance====&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PERF\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Performance Counters Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Counters&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre les compteurs de performance&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Clock&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'horloge de performance&lt;br /&gt;
|-&lt;br /&gt;
|Performance Clock Delay&lt;br /&gt;
|Cardinal&lt;br /&gt;
|Période de l'horloge de performance (ms)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Start&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole du serveur HTTP de performance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Start Performance Counters&lt;br /&gt;
:Le serveur inclus un certain nombre de [[Compteurs de performance (monitoring)|compteurs de performance]] interrogeables par le [[Serveur de performance (monitoring)|serveur de performance]].&lt;br /&gt;
&lt;br /&gt;
*Start Performance Clock&lt;br /&gt;
: Démarre une horloge permettant de générer un évènement de monitoring.&lt;br /&gt;
&lt;br /&gt;
*Performance Clock Delay&lt;br /&gt;
: Période de l'horloge de performance. (défaut 1000)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Start&lt;br /&gt;
: Démarre le server HTTP de performance.&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Port&lt;br /&gt;
: Port du serveur HTTP de performance. (défaut 9999)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Protocol&lt;br /&gt;
:Protocole du serveur HTTP de performance (défaut http)&lt;br /&gt;
&lt;br /&gt;
Voir la catégorie [[:Category:Monitoring]]&lt;br /&gt;
&lt;br /&gt;
====HTTP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section HTTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\HTTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;HTTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent le protocole HTTP utilisé par le service, elles sont utilisées pour construire des URL pointant sur le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Par défaut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|http:&lt;br /&gt;
|Protocole HTTP publique du Service (http: ou https:)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Toute&lt;br /&gt;
|80&lt;br /&gt;
|Port HTTP publique du Service&lt;br /&gt;
|-&lt;br /&gt;
|HTTP HostName&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|Nom local de la machine &lt;br /&gt;
|Domaine publique du serveur HTTP frontal&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ServiceName&lt;br /&gt;
|String&lt;br /&gt;
|6.51&lt;br /&gt;
|Nom du service&lt;br /&gt;
|&lt;br /&gt;
Nom du service load-balancé utilisé par le service&amp;lt;br&amp;gt;&lt;br /&gt;
Ce nom peut différer du nom du service dans une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
C'est ce nom qui est enregistrée dans les URLs de la registry SDATA&amp;lt;br&amp;gt;&lt;br /&gt;
Implémenté pour SOAP à partir de la version 7 &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent [[Serveur HTTP (server)|le service HTTP interne]] inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{{Version700}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le protocole est défini par HTTP Protocol&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le port est défini par HTTP Port&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Site&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire du site utilisé par le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Alias&lt;br /&gt;
|String&lt;br /&gt;
|Nom de section des alias de répertoire du serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat (.pem) &lt;br /&gt;
|-&lt;br /&gt;
|HTTP RootCertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat de l'autorité intermédiaire qui a signé le certificat &amp;quot;CertFile&amp;quot; (.pem).&amp;lt;br&amp;gt;&lt;br /&gt;
Ce paramètre est optionnel, il est utile si l'autorité intermédiaire n'est pas directement reconnue par le navigateur. &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier clef privée (.pem ou .key) qui est liée au certificat &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyPassword&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le mot de passe qui permet de décoder la clef privée&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertIssuer&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente l'émetteur du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertSerial&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le numéro de série du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLVersion&lt;br /&gt;
|String&lt;br /&gt;
|Version du protocole SSL à utiliser: sslvTLSv1_1, sslvTLSv1_2, sslvTLSv1_3 (par défaut :sslvTLSv1_2)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLCipherList&lt;br /&gt;
|String&lt;br /&gt;
|Sceaux proposés par le serveur (par défaut &amp;quot;HIGH:!aNULL:!MD5:!RC4&amp;quot;) [https://www.openssl.org/docs/manmaster/apps/ciphers.html en savoir plus] Version 7.10&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|Boolean&lt;br /&gt;
|Détermine la valeur du paramètre KeepAlive des réponses du serveur HTTP.&amp;lt;br&amp;gt;&lt;br /&gt;
La valeur est True (1) par défaut et le serveur renvoi KeepAlive dans ses réponses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette valeur doit être false (0) pour une configuration load balancée.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Permet de démarrer un service http &amp;quot;privé&amp;quot;, utile dans le cadre d'une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
Ce service n'est adressé que par les autres services, et permet d'économiser la partie SSL des échanges.&amp;lt;br&amp;gt;&lt;br /&gt;
Le port de ce service ne doit pas être exposé au clients web.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Détermine la valeur du port http privé.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Log&lt;br /&gt;
|Booléen&lt;br /&gt;
|Active la journalisation des flux http (Version 10)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|TLS 1.3 supporté à partir de la version 10 en utilisant OpenSSL 3.0}}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le protocole/port publique peuvent être différent du protocole/port d'écoute si un load balancer est utilisé.}}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
* [[Serveur HTTP (server)|Serveur HTTP interne]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTPS|Configuration du serveur en HTTPs]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTP_derrière_un_répartiteur_de_charge|Configuration derrière un répartiteur de charge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains de ces paramètres peuvent être remplacés par [[Service_1000_(server)|les paramètres de la ligne de commande]] :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Paramètre de la ligne de commande&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|HTTPPORT&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|HTTPKEEPALIVE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HTTP ACLs====&lt;br /&gt;
{{version710}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ACL&lt;br /&gt;
|string&lt;br /&gt;
|Liste de règles séparées par une virgule, par ordre de priorité&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La syntaxe d'une règle ACL :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 action-IP/Nob&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*action&lt;br /&gt;
: Type de règle, doit être accept ou deny&lt;br /&gt;
*IP&lt;br /&gt;
: Addresse IP en notation pointé&lt;br /&gt;
*Nob (facultatif)&lt;br /&gt;
:Nombre de bits du masque de sous réseau, par exemple 29 correspond au masque 255.255.255.248 et défini un sous réseau de 8 adresses. &lt;br /&gt;
&lt;br /&gt;
[http://jodies.de/ipcalc Calculateur de masque]&lt;br /&gt;
&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&lt;br /&gt;
Autorise les adresses 192.168.1.0 ... 192.168.1.7 à l’exception de 192.168.1.5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deny-192.168.1.5&lt;br /&gt;
accept-192.168.1.0/29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&lt;br /&gt;
Autorise seulement l'adresse 192.168.1.1 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
accept-192.168.1.1&lt;br /&gt;
deny-0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Worker====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Le Web Worker est un mécanisme de notification asynchrone permettant au client Web d'être notifié des événements survenant coté serveur.&lt;br /&gt;
&lt;br /&gt;
Il permet de gérer les notifications de boîte à message ainsi que les notifications de traitement. &lt;br /&gt;
&lt;br /&gt;
L'utilisation du web worker améliore l'expérience utilisateur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web worker started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation du web worker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque le web worker est activé, le client génère des requêtes msg.pending périodiques.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Socket====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Les WebSockets utilisent un protocole permettant de créé des canaux de communication full-duplex à l'intérieur d'une connexion TCP. &lt;br /&gt;
&lt;br /&gt;
L'utilisation des WebSockets améliore l'expérience utilisateur par une meilleur fluidité des échanges.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web socket started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation de WebSocket &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip| &lt;br /&gt;
&lt;br /&gt;
#Les WebSocket ne sont prises en charge que par le serveur HTTP embarqué et en mode '''HTTPs uniquement'''.&lt;br /&gt;
#Les WebSockets sont activées par défaut.&lt;br /&gt;
#Les WebSocket peuvent ne pas fonctionner ou provoquer des problèmes dans le cas d'utilisation du serveur Sage 1000 derrière un load balancer qui ne supporterait pas le protocole WebSocket.&lt;br /&gt;
#L'url utilisée doit correspondre au domaine du certificat SSL. Par exemple, en entreprise, si votre serveur est myhost sur le domaine interne xxx.yyy.zzz le nom de domaine du certificat auto-généré sera myhost.xxx.yyy.zzz. Vous devez utiliser https://myhost.xxx.yyy.zzz comme url d'accès même si https://myhost est valide sur votre réseau. A défaut l'établissement des connexions websockets échoueront.}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque les websockets sont actives, le dialogue d'attente n'est pas affiché.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP CSP====&lt;br /&gt;
La [https://developer.mozilla.org/fr/docs/Web/HTTP/CSP stratégie de sécurité du contenu] permet d'améliorer la sécurité des sites web.&lt;br /&gt;
&lt;br /&gt;
{{version1000}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CSP&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des règles séparées par &amp;quot;;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple &lt;br /&gt;
&lt;br /&gt;
HTTP CSP = default-src 'self'; script-src https://example.com&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est ''default-src 'self'''&lt;br /&gt;
&lt;br /&gt;
====HTTP CORS====&lt;br /&gt;
Le [https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS CORS] permet d'autoriser des requêtes provenant d'autre domaine.&lt;br /&gt;
&lt;br /&gt;
{{version800}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CORS Allow origin&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des domaines autorisés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des domaines doit être séparée par des virgules, utilisez * pour autoriser tous les domaines.&lt;br /&gt;
&lt;br /&gt;
Les domaines doivent être qualifié par le protocole, par exemple http://origin.com&lt;br /&gt;
&lt;br /&gt;
Les domaines indiqués ici seront comparés à la valeur du champ d'entête Origin&lt;br /&gt;
&lt;br /&gt;
Lorsque le domain est autorisé, le service retourne dans la réponse :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Champ&lt;br /&gt;
!Valeur&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Origin&lt;br /&gt;
|Valeur du chanmp Origin de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Vary&lt;br /&gt;
|Origin&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Credentials&lt;br /&gt;
|true&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Methods&lt;br /&gt;
|POST,PUT,DELETE,GET,OPTION&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Headers&lt;br /&gt;
|Valeur de Access-Control-Request-Headers de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Max-Age&lt;br /&gt;
|86400&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====FTPs====&lt;br /&gt;
Ces variables configurent le serveur FTPs inclu dans le servcice.&lt;br /&gt;
Le serveur FTP peut être utilisé sur les containeurs.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\FTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;FTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Start&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Démarre le service FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP ACL&lt;br /&gt;
|Chaîne&lt;br /&gt;
|Définit une liste d'ACL optionnelle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====WEB====&lt;br /&gt;
Ces variables configurent le service WEB inclu dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section WEB&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\WEB\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;WEB Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|WEB Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section WEB&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes chargées dans une grille (défaut 5000)&lt;br /&gt;
|-&lt;br /&gt;
|GridWindowSize&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes affichées dans une page de grille. (Défaut 25)&lt;br /&gt;
|-&lt;br /&gt;
|MDIForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|MDIAssistants&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|UseTreeBookClassic&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|SavePortalTabForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|DebugJS&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Utilise les javascript en mode debug (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|RecordMode&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active le mode enregistrement pour JMeter (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|FormRedirect&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active la redirection des urls d'écran, pour IIS cette redirection doit être désactivée. (défaut 1, ativé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Export de grille ====&lt;br /&gt;
&lt;br /&gt;
{{Version2025r2}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Grid exporters&lt;br /&gt;
|liste de nom d'extension de fichier séparés par une virgule&lt;br /&gt;
|Défini les formats d'export autorisés&lt;br /&gt;
|-&lt;br /&gt;
|Grid export limits&lt;br /&gt;
|Entier&lt;br /&gt;
|Limite le nombre de lignes exportées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Mise au point, debugger {{Version700}}====&lt;br /&gt;
Ces variables configurent le remote debugger inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Le remote debugger permet à un poste client desktop de visualiser, modifier et poser des points d'arrêt dans le code métier exécuté par le service. &lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section DEBUGGER&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\DEBUGGER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;DEBUGGER Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section DEBUGGER&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Users&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des utilisateurs autorisés à utiliser le service de remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Handlers&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des handlers des évènements de trace qui seront interceptés et redirigés vers le journal d'évènement, ceci vous permet de visualiser en temps réel ces traces dans la console SNMP. Les handlers possibles sont:&lt;br /&gt;
* script&lt;br /&gt;
: Evènements générés par la fonction dbgMsg() du code métier&lt;br /&gt;
* queries&lt;br /&gt;
: Evènements de trace des requêtes SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|L'utilisation de DEBUGGER Handlers peut provoquer une forte consommation de mémoire}}&lt;br /&gt;
{{warning|Ces fonctionnalités ne doivent pas être activés sur un serveur de production}}&lt;br /&gt;
&lt;br /&gt;
====LDAP====&lt;br /&gt;
Ces variables configurent le serveur LDAP inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section LDAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\LDAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;LDAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service LDAP (défaut false).&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port d'écoute du service LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe administrateur du compte system du serveur LDAP ('uid=admin,ou=system')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SAML====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SAMLv2 Log=1&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la trace SAML (à retirer une fois la mise au point effectuée)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SOAP====&lt;br /&gt;
Ces variables configurent le service SOAP inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SOAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SOAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;SOAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Documents&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des documents SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des messages SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP 5.5x&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise l'implémentation SOAP des versions 5.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*SOAP 5.5x&lt;br /&gt;
:L'implémentation de SOAP a été récrite en version 5.6x, en cas de problème de compatibilité avec des développements existant il est possible d'utiliser l'ancienne implémentation.&lt;br /&gt;
&lt;br /&gt;
====SMTP====&lt;br /&gt;
Ces variables configurent le client SMTP utilisé par le service pour envoyer des EMails.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SMTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SMTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SMTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SMTP&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP From&lt;br /&gt;
|String&lt;br /&gt;
|Adresse EMail de l'expéditeur.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP UseTLS&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise une sécurisation TLS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SNMP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SNMP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SNMP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent l'agent SNMP inclus dans le serveur. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'agent SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port UDP de l'agent SNMP (161)&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysName&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysName pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysContact&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysContact pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysLocation&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysLocation pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Traps&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|Référence des sections SNMPTRAP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les sections SNMPTRAP permettent de définir des points d'écoute SNMP auquels seront envoyés les messages de traps.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Host&lt;br /&gt;
|string&lt;br /&gt;
|Nom réseau du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Categories&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Catégories des traps à envoyer à ce point d'écoute&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des catégories de trap est la suivante :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de catégorie&lt;br /&gt;
!Type de message&lt;br /&gt;
|-&lt;br /&gt;
|Service&lt;br /&gt;
|Messages relatifs au processus du service.&lt;br /&gt;
|-&lt;br /&gt;
|Automate&lt;br /&gt;
|Messages relatifs aux exécutions de l'automate.&lt;br /&gt;
|-&lt;br /&gt;
|BP&lt;br /&gt;
|Messages relatifs aux exécutions des Processus métiers.&lt;br /&gt;
|-&lt;br /&gt;
|Authenticate&lt;br /&gt;
|Messages relatifs aux erreurs d'authentification.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration SNMP : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\CONFIG_SNMP_1]&lt;br /&gt;
SNMP Started=1&lt;br /&gt;
SNMP Start=1&lt;br /&gt;
SNMP Port=161&lt;br /&gt;
SNMP sysContact = toto@sage.com&lt;br /&gt;
SNMP sysName = toto&lt;br /&gt;
SNMP sysLocation = Paris,France&lt;br /&gt;
SNMP Traps=Service,Automate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Service]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Service,Authenticate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Automate]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Automate,BP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PROXY====&lt;br /&gt;
&lt;br /&gt;
{{tip|Déprécié, utiliser le paramétrage dans la console d'administration.}}&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le PROXY utilisé par le client HTTP.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROXY&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROXY\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;PROXY Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROXY&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur PROXY (défaut 8080).&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|Délai d'expiration du PROXY. (défaut 60 secondes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Exceptions====&lt;br /&gt;
Ces variables configurent l'enregistrement des exceptions du service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section EXCEPTIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\EXCEPTIONS\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Exceptions logs Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section EXCEPTIONS&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Enregistrer les exceptions. Vrai par défaut.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs path&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire dans lequel seront créés les fichiers d'exception.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs ignore&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste d'exception à ignorer.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs write file&lt;br /&gt;
|booléen&lt;br /&gt;
|Un fichier d'exception est écrit. Vrai par défaut. Il peut être inutile d'écrire un fichier d'exception si les exceptions sont transmises à un gestionnaire de log (voir LOG MANAGER) et permet dans ce cas ne ne pas encombrer le disque.(V8)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Captcha====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs souhaitant s'enregistrer peuvent être soumis à un captcha.&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur commet trois erreurs lors de l'authentification, il devra saisir un captcha.&lt;br /&gt;
&lt;br /&gt;
voir http://www.google.com/recaptcha&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Public Key&lt;br /&gt;
|string&lt;br /&gt;
|Clef publique Recaptcha&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Private Key&lt;br /&gt;
|String&lt;br /&gt;
|Clef privée Recaptcha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Quotas====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs téléversent des fichiers dans un répertoire propres à la session.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers doivent avoir une extension prévue pour des questions de sécurité.&lt;br /&gt;
&lt;br /&gt;
La taille totale du répertoire est définie pour éviter un manque de place sur le disque.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Upload Document Size&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb d'un fichier uploadé; valeur par défaut : 0 (non limité)&lt;br /&gt;
|-&lt;br /&gt;
|Upload User Quota&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb du répertoire upload de l'utilisateur par session; valeur par défaut : 50&lt;br /&gt;
|-&lt;br /&gt;
|Upload Ext Allowed&lt;br /&gt;
|String&lt;br /&gt;
|Extensions autorisées; valeur par défaut : vide (tout est autorisé)&lt;br /&gt;
|-&lt;br /&gt;
|Auto delete messages&lt;br /&gt;
|Entier&lt;br /&gt;
|Durée de conservation en jours des messages &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|La liste des extensions suivantes n'est jamais filtrée car le service est susceptible de créer des fichiers de ce type (xlsx,ods,xml,pdf,,csv,sxc,xls,,jpg,jpeg,png,asice)}}&lt;br /&gt;
&lt;br /&gt;
====Clefs====&lt;br /&gt;
&lt;br /&gt;
Le stockage de certaines clefs peut être externalié&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Key Cookie&lt;br /&gt;
|chaine&lt;br /&gt;
|[[keyvault_url|url d'un stockage sécurisé externe]], si la clef est non trouvée, elle y sera créée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Logs====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Log keep days&lt;br /&gt;
|entier&lt;br /&gt;
|durée en jour de rétention des fichiers dans le répertoire de log, par défaut 10&lt;br /&gt;
|-&lt;br /&gt;
|SDATA Log Messages&lt;br /&gt;
|Logique&lt;br /&gt;
|Enregistre les messages SDATA dans le répertoire de log &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sections SDATA===&lt;br /&gt;
Ces sections permettent de configurer les points d'accès SDATA qui seront exposés par le service.&lt;br /&gt;
&lt;br /&gt;
Les noms de ces sections sont&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\&amp;lt;&amp;lt;nom du service&amp;gt;&amp;gt;\SData\&amp;lt;&amp;lt;incrément 1...&amp;gt;&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DataSetName&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dataset dans l'URL SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Title&lt;br /&gt;
|string&lt;br /&gt;
|Libellé informatif sur l'usage du point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Contract&lt;br /&gt;
|string&lt;br /&gt;
|Nom du paquet de service SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Version&lt;br /&gt;
|string&lt;br /&gt;
|Numéro de version, peut être utilisé pour supporté plusieurs version du même contrat&lt;br /&gt;
|-&lt;br /&gt;
|Folder&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dossier utilisé par ce point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Database&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la base de donnée utilisé pour ce point d'accès (multi-bases)&lt;br /&gt;
|-&lt;br /&gt;
|Society&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la société pour ce point d'accès (multi-société) &lt;br /&gt;
|-&lt;br /&gt;
|Restitution&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la famille de restitution pour ce point d'accès (multi-société) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\SData\1]&lt;br /&gt;
DataSetName=iphone&lt;br /&gt;
Title=syfre iphone&lt;br /&gt;
Contract=ndfContract&lt;br /&gt;
Version=1&lt;br /&gt;
Folder=Test Syfre iPhone&lt;br /&gt;
Database=dbTestIPhone&lt;br /&gt;
Society=&lt;br /&gt;
Restitution=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Export===&lt;br /&gt;
Cette section permet de configurer la fonction d'exportation des vignettes de portail des Services. &lt;br /&gt;
&lt;br /&gt;
Deux mode d'exportation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*ftp&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire public accessible par ftp.&lt;br /&gt;
&lt;br /&gt;
*file&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire local du serveur. Ce mode n'est utile que si le répertoire est un répertoire du Site et que celui-ci est public.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Protocol&lt;br /&gt;
|String&lt;br /&gt;
|ftp ou file&lt;br /&gt;
|-&lt;br /&gt;
|Export URL&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL référence le répertoire où la vignette a été générée.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'ftp' les variables suivantes sont utilisées :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP host&lt;br /&gt;
|String&lt;br /&gt;
|Addresse du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur FTP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'file' les variables suivantes sont utilisées : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration ftp utilisant une zone publique Free : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\Export]&lt;br /&gt;
Protocol=ftp&lt;br /&gt;
Export URL=http://syfre.free.fr/sage/&lt;br /&gt;
FTP Host=ftpperso.free.fr&lt;br /&gt;
FTP Port=21&lt;br /&gt;
FTP Login=syfre&lt;br /&gt;
FTP Password=XXXXXXXXXX&lt;br /&gt;
FTP Directory=sage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section ConfigServer===&lt;br /&gt;
&lt;br /&gt;
Cette section permet d'utiliser un fichier de configuration disponible sur une url.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL permet de récupérer le fichier de configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un POST HTTP est effectué sur cette url avec les données suivantes : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;deploymentId&amp;quot;:&amp;quot;nom_système_de_la_machine&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le résultat attendu est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;config&amp;quot;:&amp;quot;contenu_du_fichier_de_configuration&amp;quot;},&lt;br /&gt;
{&amp;quot;certificate&amp;quot;:&amp;quot;certificat_au_format_pfx&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Exemple de configuration (server)|Exemple de configuration]]&lt;br /&gt;
*[[Service_1000_(server)|Ligne de commande]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Serveur}}&lt;br /&gt;
[[category:Serveur]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)</id>
		<title>Fichier de configuration (server)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier_de_configuration_(server)"/>
				<updated>2026-03-02T07:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Mise au point, debugger {{Version700}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
Le Serveur d'application Sage 1000 utilise un fichier de configuration situé dans le répertoire du serveur.&lt;br /&gt;
&lt;br /&gt;
{{info|Le nom du fichier est serverl1000.ini}}&lt;br /&gt;
&lt;br /&gt;
Ce fichier peut être soit modifié à l'aide de la console d'administration des services, soit manuellement par un éditeur de texte.&lt;br /&gt;
&lt;br /&gt;
{{tip|Le fichier est chargé au démarrage du service.}}&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
Le fichier peut configurer plusieurs services exécutés sur le même serveur, chaque service comporte au moins deux sections :&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SERVICE_NAME]&lt;br /&gt;
: Cette entrée détermine la configuration réseau du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE]&lt;br /&gt;
: Cette entrée détermine la configuration logicielle du service.&lt;br /&gt;
&lt;br /&gt;
* [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SERVICE\Export]&lt;br /&gt;
: Cette entrée configure la fonction d'exportation du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\MYSERVICE]&lt;br /&gt;
ipcMode=ipcSHM&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
shmAddress=SYFRE&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\MYSERVICE]&lt;br /&gt;
Master base=orasql://myhost/DBMASTER_ORA?prefix=&amp;quot;DBMASTERT_ORA.&amp;quot;&lt;br /&gt;
Master driver=orasql&lt;br /&gt;
Master OS Authentication=0&lt;br /&gt;
Master user=DBMASTER_ORA&lt;br /&gt;
Master password=DBMASTER_ORA&lt;br /&gt;
Server Societies=Société de démonstration GCF 1000&lt;br /&gt;
Server Application=Sage 1000 Suite Financière&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chaque section est composée d'une liste de variables (NomVariable=ValeurVariable), les types de données des variables sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|Chaîne de caractère&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|Valeur logique 0:Non 1:Oui&lt;br /&gt;
|-&lt;br /&gt;
|Integer&lt;br /&gt;
|Valeur entière&lt;br /&gt;
|-&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste de chaîne de caractère séparée par des virgules.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Section IPC===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Contexte&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|ipcMode&lt;br /&gt;
|enumération&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|&lt;br /&gt;
*ipcTCP&lt;br /&gt;
:Mode de communication par TCP/IP&lt;br /&gt;
*ipcSHM&lt;br /&gt;
:Mode de communication par mémoire partagée (dépréciée)&lt;br /&gt;
|-&lt;br /&gt;
|tcpPort&lt;br /&gt;
|Integer&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Port de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|tcpAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Adresse de communication TCP&lt;br /&gt;
|-&lt;br /&gt;
|shmAddress&lt;br /&gt;
|string&lt;br /&gt;
|Client/Serveur&lt;br /&gt;
|Nom du segment de mémoire partagé&lt;br /&gt;
|-&lt;br /&gt;
|serverList&lt;br /&gt;
|Serveur&lt;br /&gt;
|String list&lt;br /&gt;
|Configuration de Cluster&amp;lt;br&amp;gt;&lt;br /&gt;
Liste des services associés à cet identifiant de service. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\TRESO]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8090&lt;br /&gt;
tcpAddress=localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration Cluster :&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration des services :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''fichier du configuration du client HTTP :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE]&lt;br /&gt;
serverList=SYFRE1,SYFRE2&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE1]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8091&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\SYFRE2]&lt;br /&gt;
ipcMode=ipcTCP&lt;br /&gt;
tcpPort=8092&lt;br /&gt;
tcpAddress=syfre&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Servers===&lt;br /&gt;
====IPC====&lt;br /&gt;
Ces variables configurent la gestion des services IPC.&lt;br /&gt;
&lt;br /&gt;
La configuration des services IPC peut être renseignée dans une section IPC&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\IPC\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;IPC Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|IPC Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section IPC contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|IPC Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre les services IPC (défaut true)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les services IPC sont les services permettant de communiquer via RPC.&lt;br /&gt;
&lt;br /&gt;
Vous avez besoins des services IPC si :&lt;br /&gt;
* Vous utilisez un serveur HTTP externe (IIS ou Apache).&lt;br /&gt;
* Vous utilisez la Console des Processus Métiers pour dialoguer avec ce Service.&lt;br /&gt;
* Vous utilisez le Contrôleur des services.&lt;br /&gt;
* Ce Service exécute des tâches de traitement déléguées par un autre Service.&lt;br /&gt;
&lt;br /&gt;
Si vous n'utilisez pas les services IPC il est conseillé de ne pas les démarrer.&lt;br /&gt;
&lt;br /&gt;
{{tip|Ce paramètre n'est pas modifiable depuis la console des services car si vous désactivez les services IPC le contrôleur n'est plus opérationnel}}&lt;br /&gt;
&lt;br /&gt;
====Sessions====&lt;br /&gt;
Ces variables configurent la gestion des sessions.&lt;br /&gt;
&lt;br /&gt;
La configuration des sessions peut être renseignée dans une section SESSIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SESSIONS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;SESSIONS Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Défaut&lt;br /&gt;
!Min&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SESSIONS Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Référence un nom de section SESSIONS contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|CheckInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|1 minute&lt;br /&gt;
|1 minute&lt;br /&gt;
|Délai entre chaque test d'expiration en seconde.&lt;br /&gt;
|-&lt;br /&gt;
|ExpireInterval&lt;br /&gt;
|Entier&lt;br /&gt;
|15 minutes&lt;br /&gt;
|&lt;br /&gt;
|Délai d'expiration des sessions en seconde.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Base master====&lt;br /&gt;
Ces variables configurent la base Master utilisée par le service.&lt;br /&gt;
&lt;br /&gt;
La configuration de la base master peut être renseignée dans une section MASTER &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\MASTER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Master Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Master Profil&lt;br /&gt;
|String&lt;br /&gt;
|Référence un nom de section MASTER contenant la configuration&lt;br /&gt;
|-&lt;br /&gt;
|Master base&lt;br /&gt;
|String&lt;br /&gt;
|Nom de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master driver&lt;br /&gt;
|String&lt;br /&gt;
|Nom du driver de la base de données Master&lt;br /&gt;
|-&lt;br /&gt;
|Master OS Authentication&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utiliser l'authentification du système d'exploitation.&lt;br /&gt;
|-&lt;br /&gt;
|Master user&lt;br /&gt;
|String&lt;br /&gt;
|Nom d'utilisateur utilisé pour la connexion à la base Master&lt;br /&gt;
|-&lt;br /&gt;
|Master password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe utilisé pour la connexion à la base Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Application et Sociétés====&lt;br /&gt;
Ces variables configurent l'application et les sociétés servies par le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Societies&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste des sociétés/dossiers servies par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Application&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'application servie par le service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Password&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Mot de passe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server User Group&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du groupe de l'utilisateur du service.&lt;br /&gt;
|-&lt;br /&gt;
|Server Authentication&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Annuaire utilisé pour l'authentification.&lt;br /&gt;
|-&lt;br /&gt;
|Authentication Directories&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|8.00&lt;br /&gt;
|Annuaires disponibles pour ce service.(code des annuaires séparés par &amp;quot;;&amp;quot;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Service====&lt;br /&gt;
Ces variables configurent le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du service.&lt;br /&gt;
|-&lt;br /&gt;
|Cache Folder&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Répertoire où stocker les fichiers temporaires et les fichiers en cache.&lt;br /&gt;
|-&lt;br /&gt;
|[[Zone publique (server)|Public Folder]]&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|[[Zone_publique_(server)|Racine des répertoires partagés du service]].&lt;br /&gt;
|-&lt;br /&gt;
|[[Public links (server)|Public Links]]&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de répertoires réseaux (séparés par un ;) pour lesquels des [[Stockage_des_documents|documents peuvent être associés]].&lt;br /&gt;
|-&lt;br /&gt;
|Send Alert To&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Liste d'adresses emails (séparées par un ;) auxquelles seront envoyés les messages d'alertes.&lt;br /&gt;
|-&lt;br /&gt;
|Scripts&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|&lt;br /&gt;
|Liste de références CSS ajouté aux pages HTML&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de lignes affichées dans les grilles (par défaut à 10 000). &lt;br /&gt;
|-&lt;br /&gt;
|[[Security mode (server)|Security Mode]]&lt;br /&gt;
|String&lt;br /&gt;
|7.00&lt;br /&gt;
|Valeurs possibles : Intranet (valeur par défaut) / Internet [[Service_exposé_sur_internet|Voir Service exposé sur internet]]&lt;br /&gt;
|-&lt;br /&gt;
|Enable Remember User&lt;br /&gt;
|boolean&lt;br /&gt;
|7.10&lt;br /&gt;
|Permet à l'utilisateur d'avoir son nom pré-renseigné dans la page d'authentification (par défaut à vrai) &lt;br /&gt;
|-&lt;br /&gt;
|MaxPreviewPageCount&lt;br /&gt;
|Integer&lt;br /&gt;
|&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview max page&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Limite le nombre de pages affichées dans les aperçus des éditions (par défaut à 50). &lt;br /&gt;
|-&lt;br /&gt;
|Preview blocking&lt;br /&gt;
|Boolean&lt;br /&gt;
|10.00&lt;br /&gt;
|1:Les aperçus sont affichés directement en onglet 0:les aperçus sont envoyés dans la bam. &lt;br /&gt;
|-&lt;br /&gt;
|Preview timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|10.00&lt;br /&gt;
|Délai d'attente de fin d'aperçu si Preview blocking=1. &lt;br /&gt;
|-&lt;br /&gt;
|Printer Filter&lt;br /&gt;
|chaine&lt;br /&gt;
|&lt;br /&gt;
|Noms des imprimantes à ne pas proposer, séparées par des points virgules (9.20)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Automates====&lt;br /&gt;
Ces variables configurent le serveur d'automate inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section AUTOMATE &lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\AUTOMATE\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Automate Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Automate Profil&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Référence une section AUTOMATE.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Started&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
|Démarre le serveur d'automate. (défaut) (*)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Automate Name&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Name&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du serveur d'automate à démarrer. (*)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Message Box&amp;lt;br&amp;gt;&lt;br /&gt;
Process Server Message Box&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Boite à messages utilisé par le serveur d'automate.&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Service&amp;lt;br&amp;gt;&lt;br /&gt;
Process Task Service&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|Nom du Service 1000 exécutant les tâches du serveur d'automate.(hostname.servicename)&lt;br /&gt;
|-&lt;br /&gt;
|Automate Task Count&amp;lt;br&amp;gt;&lt;br /&gt;
|Integer&lt;br /&gt;
|6.50&lt;br /&gt;
|Nombre maximal de tâches automates simultanées (défaut 1).&lt;br /&gt;
|-&lt;br /&gt;
|Automate Debug&amp;lt;br&amp;gt;&lt;br /&gt;
|Boolean&lt;br /&gt;
|7.00 Patch&lt;br /&gt;
|Active le mode debug verbose (**).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (*) Ces valeurs peuvent être modifiées sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
{{Version700}} (**) A utiliser conjointement avec la console de trap snmp&lt;br /&gt;
&lt;br /&gt;
====Processus métiers====&lt;br /&gt;
Ces variables configurent le service de Processus Métiers inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|BP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Processus Métiers (défault).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Version700}} Cette valeur peut être modifiée sur la ligne de commande&lt;br /&gt;
&lt;br /&gt;
====Système====&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROCESS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROCESS\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Process Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Process Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROCESS&lt;br /&gt;
|-&lt;br /&gt;
|ProcessAffinity&lt;br /&gt;
|String&lt;br /&gt;
|Détermine les coeurs utilisés par le processus sur une machine multi-coeurs&amp;lt;br&amp;gt;&lt;br /&gt;
ex : 1,3 pour utiliser les coeurs 1 et 3 d'une machine multi-coeurs.&lt;br /&gt;
|-&lt;br /&gt;
|ThreadPoolSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du pool de thread (20)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheSize&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour un écran (défaut:20, 0:désactive l'utilisation du cache)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheLimit&lt;br /&gt;
|Integer&lt;br /&gt;
|Taille du cache pour l'ensemble des écrans (256)&lt;br /&gt;
|-&lt;br /&gt;
|FormCacheReuse&lt;br /&gt;
|Integer&lt;br /&gt;
|Nombre de fois qu'un écran peut être réutilisé (-1 : pas de limite)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*ProcessAffinity&lt;br /&gt;
:Le Processus du serveur est un processus multi-threadé, sur une machine multi-coeurs il utilise tous les coeurs disponibles sur le système d'exploitation. Dans certain cas il est souhaitable de restreindre l'exécution à certains coeurs.&lt;br /&gt;
&lt;br /&gt;
*ThreadPoolsize&lt;br /&gt;
:Chaque requête sur le service est exécutée par une thread allouée d'un pool ; lorsque le pool est plein la requête est suspendue jusqu'à ce qu'une thread se libère dans le pool. Cette variable limite la taille du pool de thread et par conséquence limite les contentions et les &amp;quot;context switches&amp;quot; provoqués par le processus.&lt;br /&gt;
&lt;br /&gt;
*FormCacheSize&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre d'instance d'un écran dans le cache.&lt;br /&gt;
&lt;br /&gt;
*FormCacheLimit&lt;br /&gt;
:L'opération d'ouverture d'un écran est une opération coûteuse, pour cette raison les écrans fermés sont placés dans un cache pour être réutilisés. Cette variable limite le nombre maximal d'écran dans le cache et par conséquent la mémoire utilisée par le cache d'écran.&lt;br /&gt;
&lt;br /&gt;
*FormCacheReuse&lt;br /&gt;
:Indique le nombre de fois qu'un écran en cache peut être réutilisé. &lt;br /&gt;
&lt;br /&gt;
{{info|Pour pouvoir utiliser WMI la dll serviceL1000perf.dll doit être présente dans le répertoire du serveur.}}&lt;br /&gt;
{{info|Pour désactiver le cache, définir la valeur de FormCacheSize à 0}}&lt;br /&gt;
&lt;br /&gt;
====Files d'attente====&lt;br /&gt;
Ces variables configurent le service de consommation de file d'attente.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\QUEUELISTENER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Queue listener Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de consommation de file d'attente.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener queues&lt;br /&gt;
|Liste de chaînes séparées par des ,&lt;br /&gt;
|Liste des files d'attente à consommer.&lt;br /&gt;
|-&lt;br /&gt;
|Queue listener Task count&lt;br /&gt;
|Entier&lt;br /&gt;
|Nombre maximal de tâches simultanées par service.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les paramètres de scrutation d'une file d'attente peuvent être configurés à la suite du nom de la file d'attente en séparant les paramètres par un caractère &amp;quot;:&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Valeur par défaut (ms)&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Initial&lt;br /&gt;
|1000&lt;br /&gt;
|Délai initial de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Max&lt;br /&gt;
|10000&lt;br /&gt;
|Délai maximal de scrutation (ms)&lt;br /&gt;
|-&lt;br /&gt;
|Increment&lt;br /&gt;
|1000&lt;br /&gt;
|Incrément du délai jusqu'au délai maximal si aucun message n'est disponible (ms)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Queue listener queues=MyQueue1:2000:10:20000,MyQueue2,MyQueue3:100:10:1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec les valeurs par défaut, une file d'attente est lue initialement toutes les secondes, puis si aucun message n'est reçu, ce délai monte jusqu'à 10 secondes. Lorsque un message est reçu le délai est réinitialisé à 1 seconde et ainsi de suite.&lt;br /&gt;
&lt;br /&gt;
====Compteurs de performance====&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le Processus du serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PERF&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PERF\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;Performance Counters Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Counters&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre les compteurs de performance&lt;br /&gt;
|-&lt;br /&gt;
|Start Performance Clock&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'horloge de performance&lt;br /&gt;
|-&lt;br /&gt;
|Performance Clock Delay&lt;br /&gt;
|Cardinal&lt;br /&gt;
|Période de l'horloge de performance (ms)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Start&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur HTTP de performance&lt;br /&gt;
|-&lt;br /&gt;
|HTTP PerfServer Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole du serveur HTTP de performance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Start Performance Counters&lt;br /&gt;
:Le serveur inclus un certain nombre de [[Compteurs de performance (monitoring)|compteurs de performance]] interrogeables par le [[Serveur de performance (monitoring)|serveur de performance]].&lt;br /&gt;
&lt;br /&gt;
*Start Performance Clock&lt;br /&gt;
: Démarre une horloge permettant de générer un évènement de monitoring.&lt;br /&gt;
&lt;br /&gt;
*Performance Clock Delay&lt;br /&gt;
: Période de l'horloge de performance. (défaut 1000)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Start&lt;br /&gt;
: Démarre le server HTTP de performance.&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Port&lt;br /&gt;
: Port du serveur HTTP de performance. (défaut 9999)&lt;br /&gt;
&lt;br /&gt;
*HTTP PerfServer Protocol&lt;br /&gt;
:Protocole du serveur HTTP de performance (défaut http)&lt;br /&gt;
&lt;br /&gt;
Voir la catégorie [[:Category:Monitoring]]&lt;br /&gt;
&lt;br /&gt;
====HTTP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section HTTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\HTTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;HTTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent le protocole HTTP utilisé par le service, elles sont utilisées pour construire des URL pointant sur le service.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Version&lt;br /&gt;
!Par défaut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|http:&lt;br /&gt;
|Protocole HTTP publique du Service (http: ou https:)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Toute&lt;br /&gt;
|80&lt;br /&gt;
|Port HTTP publique du Service&lt;br /&gt;
|-&lt;br /&gt;
|HTTP HostName&lt;br /&gt;
|String&lt;br /&gt;
|Toute&lt;br /&gt;
|Nom local de la machine &lt;br /&gt;
|Domaine publique du serveur HTTP frontal&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ServiceName&lt;br /&gt;
|String&lt;br /&gt;
|6.51&lt;br /&gt;
|Nom du service&lt;br /&gt;
|&lt;br /&gt;
Nom du service load-balancé utilisé par le service&amp;lt;br&amp;gt;&lt;br /&gt;
Ce nom peut différer du nom du service dans une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
C'est ce nom qui est enregistrée dans les URLs de la registry SDATA&amp;lt;br&amp;gt;&lt;br /&gt;
Implémenté pour SOAP à partir de la version 7 &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les variables suivantes configurent [[Serveur HTTP (server)|le service HTTP interne]] inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
{{Version700}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Démarre le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Protocol&lt;br /&gt;
|String&lt;br /&gt;
|Protocole HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le protocole est défini par HTTP Protocol&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port HTTP écouté par le serveur HTTP embarqué&amp;lt;br&amp;gt;&lt;br /&gt;
Si cette variable n'est pas défini le port est défini par HTTP Port&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Site&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire du site utilisé par le serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Alias&lt;br /&gt;
|String&lt;br /&gt;
|Nom de section des alias de répertoire du serveur HTTP&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat (.pem) &lt;br /&gt;
|-&lt;br /&gt;
|HTTP RootCertFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier certificat de l'autorité intermédiaire qui a signé le certificat &amp;quot;CertFile&amp;quot; (.pem).&amp;lt;br&amp;gt;&lt;br /&gt;
Ce paramètre est optionnel, il est utile si l'autorité intermédiaire n'est pas directement reconnue par le navigateur. &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyFile&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le fichier clef privée (.pem ou .key) qui est liée au certificat &lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeyPassword&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le mot de passe qui permet de décoder la clef privée&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertIssuer&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente l'émetteur du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CertSerial&lt;br /&gt;
|String&lt;br /&gt;
|Si le protocole est https, représente le numéro de série du certificat du site permettant de l'identifier dans le magasin Windows&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLVersion&lt;br /&gt;
|String&lt;br /&gt;
|Version du protocole SSL à utiliser: sslvTLSv1_1, sslvTLSv1_2, sslvTLSv1_3 (par défaut :sslvTLSv1_2)&lt;br /&gt;
|-&lt;br /&gt;
|HTTP SSLCipherList&lt;br /&gt;
|String&lt;br /&gt;
|Sceaux proposés par le serveur (par défaut &amp;quot;HIGH:!aNULL:!MD5:!RC4&amp;quot;) [https://www.openssl.org/docs/manmaster/apps/ciphers.html en savoir plus] Version 7.10&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|Boolean&lt;br /&gt;
|Détermine la valeur du paramètre KeepAlive des réponses du serveur HTTP.&amp;lt;br&amp;gt;&lt;br /&gt;
La valeur est True (1) par défaut et le serveur renvoi KeepAlive dans ses réponses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette valeur doit être false (0) pour une configuration load balancée.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Permet de démarrer un service http &amp;quot;privé&amp;quot;, utile dans le cadre d'une configuration load balancée.&amp;lt;br&amp;gt;&lt;br /&gt;
Ce service n'est adressé que par les autres services, et permet d'économiser la partie SSL des échanges.&amp;lt;br&amp;gt;&lt;br /&gt;
Le port de ce service ne doit pas être exposé au clients web.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Private Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Détermine la valeur du port http privé.&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Log&lt;br /&gt;
|Booléen&lt;br /&gt;
|Active la journalisation des flux http (Version 10)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|TLS 1.3 supporté à partir de la version 10 en utilisant OpenSSL 3.0}}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le protocole/port publique peuvent être différent du protocole/port d'écoute si un load balancer est utilisé.}}&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
* [[Serveur HTTP (server)|Serveur HTTP interne]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTPS|Configuration du serveur en HTTPs]]&lt;br /&gt;
* [[Configuration_du_Serveur_HTTP_derrière_un_répartiteur_de_charge|Configuration derrière un répartiteur de charge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Certains de ces paramètres peuvent être remplacés par [[Service_1000_(server)|les paramètres de la ligne de commande]] :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Paramètre de la ligne de commande&lt;br /&gt;
|-&lt;br /&gt;
|HTTP Listen Port&lt;br /&gt;
|HTTPPORT&lt;br /&gt;
|-&lt;br /&gt;
|HTTP KeepAlive&lt;br /&gt;
|HTTPKEEPALIVE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HTTP ACLs====&lt;br /&gt;
{{version710}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP ACL&lt;br /&gt;
|string&lt;br /&gt;
|Liste de règles séparées par une virgule, par ordre de priorité&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La syntaxe d'une règle ACL :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 action-IP/Nob&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*action&lt;br /&gt;
: Type de règle, doit être accept ou deny&lt;br /&gt;
*IP&lt;br /&gt;
: Addresse IP en notation pointé&lt;br /&gt;
*Nob (facultatif)&lt;br /&gt;
:Nombre de bits du masque de sous réseau, par exemple 29 correspond au masque 255.255.255.248 et défini un sous réseau de 8 adresses. &lt;br /&gt;
&lt;br /&gt;
[http://jodies.de/ipcalc Calculateur de masque]&lt;br /&gt;
&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&lt;br /&gt;
Autorise les adresses 192.168.1.0 ... 192.168.1.7 à l’exception de 192.168.1.5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deny-192.168.1.5&lt;br /&gt;
accept-192.168.1.0/29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&lt;br /&gt;
Autorise seulement l'adresse 192.168.1.1 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
accept-192.168.1.1&lt;br /&gt;
deny-0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Worker====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Le Web Worker est un mécanisme de notification asynchrone permettant au client Web d'être notifié des événements survenant coté serveur.&lt;br /&gt;
&lt;br /&gt;
Il permet de gérer les notifications de boîte à message ainsi que les notifications de traitement. &lt;br /&gt;
&lt;br /&gt;
L'utilisation du web worker améliore l'expérience utilisateur.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web worker started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation du web worker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque le web worker est activé, le client génère des requêtes msg.pending périodiques.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP Web Socket====&lt;br /&gt;
{{version800}}&lt;br /&gt;
&lt;br /&gt;
Les WebSockets utilisent un protocole permettant de créé des canaux de communication full-duplex à l'intérieur d'une connexion TCP. &lt;br /&gt;
&lt;br /&gt;
L'utilisation des WebSockets améliore l'expérience utilisateur par une meilleur fluidité des échanges.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Web socket started&lt;br /&gt;
|Integer&lt;br /&gt;
|Active (1) ou désactive (0) l'utilisation de WebSocket &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip| &lt;br /&gt;
&lt;br /&gt;
#Les WebSocket ne sont prises en charge que par le serveur HTTP embarqué et en mode '''HTTPs uniquement'''.&lt;br /&gt;
#Les WebSockets sont activées par défaut.&lt;br /&gt;
#Les WebSocket peuvent ne pas fonctionner ou provoquer des problèmes dans le cas d'utilisation du serveur Sage 1000 derrière un load balancer qui ne supporterait pas le protocole WebSocket.&lt;br /&gt;
#L'url utilisée doit correspondre au domaine du certificat SSL. Par exemple, en entreprise, si votre serveur est myhost sur le domaine interne xxx.yyy.zzz le nom de domaine du certificat auto-généré sera myhost.xxx.yyy.zzz. Vous devez utiliser https://myhost.xxx.yyy.zzz comme url d'accès même si https://myhost est valide sur votre réseau. A défaut l'établissement des connexions websockets échoueront.}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|Lorsque les websockets sont actives, le dialogue d'attente n'est pas affiché.}}&lt;br /&gt;
&lt;br /&gt;
====HTTP CSP====&lt;br /&gt;
La [https://developer.mozilla.org/fr/docs/Web/HTTP/CSP stratégie de sécurité du contenu] permet d'améliorer la sécurité des sites web.&lt;br /&gt;
&lt;br /&gt;
{{version1000}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CSP&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des règles séparées par &amp;quot;;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple &lt;br /&gt;
&lt;br /&gt;
HTTP CSP = default-src 'self'; script-src https://example.com&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est ''default-src 'self'''&lt;br /&gt;
&lt;br /&gt;
====HTTP CORS====&lt;br /&gt;
Le [https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS CORS] permet d'autoriser des requêtes provenant d'autre domaine.&lt;br /&gt;
&lt;br /&gt;
{{version800}}&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|HTTP CORS Allow origin&lt;br /&gt;
|Liste de chaines&lt;br /&gt;
|Liste des domaines autorisés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des domaines doit être séparée par des virgules, utilisez * pour autoriser tous les domaines.&lt;br /&gt;
&lt;br /&gt;
Les domaines doivent être qualifié par le protocole, par exemple http://origin.com&lt;br /&gt;
&lt;br /&gt;
Les domaines indiqués ici seront comparés à la valeur du champ d'entête Origin&lt;br /&gt;
&lt;br /&gt;
Lorsque le domain est autorisé, le service retourne dans la réponse :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Champ&lt;br /&gt;
!Valeur&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Origin&lt;br /&gt;
|Valeur du chanmp Origin de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Vary&lt;br /&gt;
|Origin&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Credentials&lt;br /&gt;
|true&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Methods&lt;br /&gt;
|POST,PUT,DELETE,GET,OPTION&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Allow-Headers&lt;br /&gt;
|Valeur de Access-Control-Request-Headers de la requête&lt;br /&gt;
|-&lt;br /&gt;
|Access-Control-Max-Age&lt;br /&gt;
|86400&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====FTPs====&lt;br /&gt;
Ces variables configurent le serveur FTPs inclu dans le servcice.&lt;br /&gt;
Le serveur FTP peut être utilisé sur les containeurs.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\FTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;FTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Start&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Démarre le service FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP ACL&lt;br /&gt;
|Chaîne&lt;br /&gt;
|Définit une liste d'ACL optionnelle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====WEB====&lt;br /&gt;
Ces variables configurent le service WEB inclu dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section WEB&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\WEB\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;WEB Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|WEB Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section WEB&lt;br /&gt;
|-&lt;br /&gt;
|MaxDatagridRowCount&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes chargées dans une grille (défaut 5000)&lt;br /&gt;
|-&lt;br /&gt;
|GridWindowSize&lt;br /&gt;
|Entier&lt;br /&gt;
|Détermine le nombre maximal de lignes affichées dans une page de grille. (Défaut 25)&lt;br /&gt;
|-&lt;br /&gt;
|MDIForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|MDIAssistants&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|UseTreeBookClassic&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 0&lt;br /&gt;
|-&lt;br /&gt;
|SavePortalTabForms&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Défaut 1&lt;br /&gt;
|-&lt;br /&gt;
|DebugJS&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Utilise les javascript en mode debug (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|RecordMode&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active le mode enregistrement pour JMeter (Défaut 0)&lt;br /&gt;
|-&lt;br /&gt;
|FormRedirect&lt;br /&gt;
|1 ou 0&lt;br /&gt;
|Active la redirection des urls d'écran, pour IIS cette redirection doit être désactivée. (défaut 1, ativé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Export de grille ====&lt;br /&gt;
&lt;br /&gt;
{{Version2025r2}}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Grid exporters&lt;br /&gt;
|liste de nom d'extension de fichier séparés par une virgule&lt;br /&gt;
|Défini les formats d'export autorisés&lt;br /&gt;
|-&lt;br /&gt;
|Grid export limits&lt;br /&gt;
|Entier&lt;br /&gt;
|Limite le nombre de lignes exportées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Mise au point, debugger {{Version700}}====&lt;br /&gt;
Ces variables configurent le remote debugger inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Le remote debugger permet à un poste client desktop de visualiser, modifier et poser des points d'arrêt dans le code métier exécuté par le service. &lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section DEBUGGER&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\DEBUGGER\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;DEBUGGER Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section DEBUGGER&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service de Remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Users&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des utilisateurs autorisés à utiliser le service de remote debugging&lt;br /&gt;
|-&lt;br /&gt;
|DEBUGGER Handlers&lt;br /&gt;
|Strings&lt;br /&gt;
|Liste des handlers des évènements de trace qui seront interceptés et redirigés vers le journal d'évènement, ceci vous permet de visualiser en temps réel ces traces dans la console SNMP. Les handlers possibles sont:&lt;br /&gt;
* script&lt;br /&gt;
: Evènements générés par la fonction dbgMsg() du code métier&lt;br /&gt;
* queries&lt;br /&gt;
: Evènements de trace des requêtes SQL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|L'utilisation de DEBUGGER Handlers peut provoquer une forte consommation de mémoire}}&lt;br /&gt;
{{warning|Ces fonctionnalités ne doivent pas être activés sur un serveur de production}}&lt;br /&gt;
&lt;br /&gt;
====LDAP====&lt;br /&gt;
Ces variables configurent le serveur LDAP inclus dans le service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section LDAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\LDAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;LDAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre le service LDAP (défaut false).&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port d'écoute du service LDAP&lt;br /&gt;
|-&lt;br /&gt;
|LDAP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe administrateur du compte system du serveur LDAP ('uid=admin,ou=system')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SAML====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SAMLv2 Log=1&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la trace SAML (à retirer une fois la mise au point effectuée)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====SOAP====&lt;br /&gt;
Ces variables configurent le service SOAP inclus dans le serveur.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SOAP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SOAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;SOAP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Documents&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des documents SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP Log Messages&lt;br /&gt;
|Boolean&lt;br /&gt;
|Active la journalisation des messages SOAP&lt;br /&gt;
|-&lt;br /&gt;
|SOAP 5.5x&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise l'implémentation SOAP des versions 5.5x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*SOAP 5.5x&lt;br /&gt;
:L'implémentation de SOAP a été récrite en version 5.6x, en cas de problème de compatibilité avec des développements existant il est possible d'utiliser l'ancienne implémentation.&lt;br /&gt;
&lt;br /&gt;
====SMTP====&lt;br /&gt;
Ces variables configurent le client SMTP utilisé par le service pour envoyer des EMails.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SMTP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SMTP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SMTP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SMTP&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur SMTP.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP From&lt;br /&gt;
|String&lt;br /&gt;
|Adresse EMail de l'expéditeur.&lt;br /&gt;
|-&lt;br /&gt;
|SMTP UseTLS&lt;br /&gt;
|Boolean&lt;br /&gt;
|Utilise une sécurisation TLS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SNMP====&lt;br /&gt;
Ces variables peuvent être renseignées dans une section SNMP&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
puis référencés par la variable &amp;quot;SNMP Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent l'agent SNMP inclus dans le serveur. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Started&lt;br /&gt;
|Boolean&lt;br /&gt;
|Démarre l'agent SNMP&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port UDP de l'agent SNMP (161)&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysName&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysName pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysContact&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysContact pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP sysLocation&lt;br /&gt;
|String&lt;br /&gt;
|Valeur de la variable sysLocation pour la MIB2&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Traps&lt;br /&gt;
|liste de chaîne&lt;br /&gt;
|Référence des sections SNMPTRAP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les sections SNMPTRAP permettent de définir des points d'écoute SNMP auquels seront envoyés les messages de traps.&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\nom_de_profil] &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Host&lt;br /&gt;
|string&lt;br /&gt;
|Nom réseau du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du point d'écoute&lt;br /&gt;
|-&lt;br /&gt;
|SNMP Trap Categories&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Catégories des traps à envoyer à ce point d'écoute&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La liste des catégories de trap est la suivante :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de catégorie&lt;br /&gt;
!Type de message&lt;br /&gt;
|-&lt;br /&gt;
|Service&lt;br /&gt;
|Messages relatifs au processus du service.&lt;br /&gt;
|-&lt;br /&gt;
|Automate&lt;br /&gt;
|Messages relatifs aux exécutions de l'automate.&lt;br /&gt;
|-&lt;br /&gt;
|BP&lt;br /&gt;
|Messages relatifs aux exécutions des Processus métiers.&lt;br /&gt;
|-&lt;br /&gt;
|Authenticate&lt;br /&gt;
|Messages relatifs aux erreurs d'authentification.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration SNMP : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMP\CONFIG_SNMP_1]&lt;br /&gt;
SNMP Started=1&lt;br /&gt;
SNMP Start=1&lt;br /&gt;
SNMP Port=161&lt;br /&gt;
SNMP sysContact = toto@sage.com&lt;br /&gt;
SNMP sysName = toto&lt;br /&gt;
SNMP sysLocation = Paris,France&lt;br /&gt;
SNMP Traps=Service,Automate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Service]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Service,Authenticate&lt;br /&gt;
&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\SNMPTRAP\Automate]&lt;br /&gt;
SNMP Trap Host=localhost&lt;br /&gt;
SNMP Trap Port=162&lt;br /&gt;
SNMP Trap Categories=Automate,BP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PROXY====&lt;br /&gt;
&lt;br /&gt;
{{tip|Déprécié, utiliser le paramétrage dans la console d'administration.}}&lt;br /&gt;
&lt;br /&gt;
Ces variables configurent le PROXY utilisé par le client HTTP.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section PROXY&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\PROXY\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencée par la variable &amp;quot;PROXY Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section PROXY&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Host&lt;br /&gt;
|String&lt;br /&gt;
|Adresse du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Port du serveur PROXY (défaut 8080).&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur PROXY.&lt;br /&gt;
|-&lt;br /&gt;
|PROXY Timeout&lt;br /&gt;
|Integer&lt;br /&gt;
|Délai d'expiration du PROXY. (défaut 60 secondes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Exceptions====&lt;br /&gt;
Ces variables configurent l'enregistrement des exceptions du service.&lt;br /&gt;
&lt;br /&gt;
Ces variables peuvent être renseignées dans une section EXCEPTIONS&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\EXCEPTIONS\nom_de_profil]&lt;br /&gt;
&lt;br /&gt;
puis référencées par la variable &amp;quot;Exceptions logs Profil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Profil&lt;br /&gt;
|string&lt;br /&gt;
|Référence une section EXCEPTIONS&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs Started&lt;br /&gt;
|boolean&lt;br /&gt;
|Enregistrer les exceptions. Vrai par défaut.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs path&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire dans lequel seront créés les fichiers d'exception.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs ignore&lt;br /&gt;
|Liste de chaîne&lt;br /&gt;
|Liste d'exception à ignorer.&lt;br /&gt;
|-&lt;br /&gt;
|Exceptions logs write file&lt;br /&gt;
|booléen&lt;br /&gt;
|Un fichier d'exception est écrit. Vrai par défaut. Il peut être inutile d'écrire un fichier d'exception si les exceptions sont transmises à un gestionnaire de log (voir LOG MANAGER) et permet dans ce cas ne ne pas encombrer le disque.(V8)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Captcha====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs souhaitant s'enregistrer peuvent être soumis à un captcha.&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur commet trois erreurs lors de l'authentification, il devra saisir un captcha.&lt;br /&gt;
&lt;br /&gt;
voir http://www.google.com/recaptcha&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Public Key&lt;br /&gt;
|string&lt;br /&gt;
|Clef publique Recaptcha&lt;br /&gt;
|-&lt;br /&gt;
|Recaptcha Private Key&lt;br /&gt;
|String&lt;br /&gt;
|Clef privée Recaptcha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Quotas====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'un service public, les utilisateurs téléversent des fichiers dans un répertoire propres à la session.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers doivent avoir une extension prévue pour des questions de sécurité.&lt;br /&gt;
&lt;br /&gt;
La taille totale du répertoire est définie pour éviter un manque de place sur le disque.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Upload Document Size&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb d'un fichier uploadé; valeur par défaut : 0 (non limité)&lt;br /&gt;
|-&lt;br /&gt;
|Upload User Quota&lt;br /&gt;
|integer&lt;br /&gt;
|Taille maximale en Mb du répertoire upload de l'utilisateur par session; valeur par défaut : 50&lt;br /&gt;
|-&lt;br /&gt;
|Upload Ext Allowed&lt;br /&gt;
|String&lt;br /&gt;
|Extensions autorisées; valeur par défaut : vide (tout est autorisé)&lt;br /&gt;
|-&lt;br /&gt;
|Auto delete messages&lt;br /&gt;
|Entier&lt;br /&gt;
|Durée de conservation en jours des messages &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|La liste des extensions suivantes n'est jamais filtrée car le service est susceptible de créer des fichiers de ce type (xlsx,ods,xml,pdf,,csv,sxc,xls,,jpg,jpeg,png,asice)}}&lt;br /&gt;
&lt;br /&gt;
====Clefs====&lt;br /&gt;
&lt;br /&gt;
Le stockage de certaines clefs peut être externalié&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Key Cookie&lt;br /&gt;
|chaine&lt;br /&gt;
|[[keyvault_url|url d'un stockage sécurisé externe]], si la clef est non trouvée, elle y sera créée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Logs====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Log keep days&lt;br /&gt;
|entier&lt;br /&gt;
|durée en jour de rétention des fichiers dans le répertoire de log, par défaut 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sections SDATA===&lt;br /&gt;
Ces sections permettent de configurer les points d'accès SDATA qui seront exposés par le service.&lt;br /&gt;
&lt;br /&gt;
Les noms de ces sections sont&lt;br /&gt;
&lt;br /&gt;
 [\SOFTWARE\Sage\Ligne 1000\Administration\Servers\&amp;lt;&amp;lt;nom du service&amp;gt;&amp;gt;\SData\&amp;lt;&amp;lt;incrément 1...&amp;gt;&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|DataSetName&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dataset dans l'URL SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Title&lt;br /&gt;
|string&lt;br /&gt;
|Libellé informatif sur l'usage du point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Contract&lt;br /&gt;
|string&lt;br /&gt;
|Nom du paquet de service SDATA&lt;br /&gt;
|-&lt;br /&gt;
|Version&lt;br /&gt;
|string&lt;br /&gt;
|Numéro de version, peut être utilisé pour supporté plusieurs version du même contrat&lt;br /&gt;
|-&lt;br /&gt;
|Folder&lt;br /&gt;
|string&lt;br /&gt;
|Nom du dossier utilisé par ce point d'accès&lt;br /&gt;
|-&lt;br /&gt;
|Database&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la base de donnée utilisé pour ce point d'accès (multi-bases)&lt;br /&gt;
|-&lt;br /&gt;
|Society&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la société pour ce point d'accès (multi-société) &lt;br /&gt;
|-&lt;br /&gt;
|Restitution&lt;br /&gt;
|string&lt;br /&gt;
|Nom de la famille de restitution pour ce point d'accès (multi-société) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\SData\1]&lt;br /&gt;
DataSetName=iphone&lt;br /&gt;
Title=syfre iphone&lt;br /&gt;
Contract=ndfContract&lt;br /&gt;
Version=1&lt;br /&gt;
Folder=Test Syfre iPhone&lt;br /&gt;
Database=dbTestIPhone&lt;br /&gt;
Society=&lt;br /&gt;
Restitution=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section Export===&lt;br /&gt;
Cette section permet de configurer la fonction d'exportation des vignettes de portail des Services. &lt;br /&gt;
&lt;br /&gt;
Deux mode d'exportation sont possibles :&lt;br /&gt;
&lt;br /&gt;
*ftp&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire public accessible par ftp.&lt;br /&gt;
&lt;br /&gt;
*file&lt;br /&gt;
: Dans ce mode les vignettes sont générées et copiées dans un répertoire local du serveur. Ce mode n'est utile que si le répertoire est un répertoire du Site et que celui-ci est public.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Protocol&lt;br /&gt;
|String&lt;br /&gt;
|ftp ou file&lt;br /&gt;
|-&lt;br /&gt;
|Export URL&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL référence le répertoire où la vignette a été générée.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'ftp' les variables suivantes sont utilisées :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|FTP host&lt;br /&gt;
|String&lt;br /&gt;
|Addresse du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Port&lt;br /&gt;
|Integer&lt;br /&gt;
|Numéro du port du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Login&lt;br /&gt;
|String&lt;br /&gt;
|Utilisateur de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Password&lt;br /&gt;
|String&lt;br /&gt;
|Mot de passe de connexion du serveur FTP&lt;br /&gt;
|-&lt;br /&gt;
|FTP Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur FTP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si le protocole est 'file' les variables suivantes sont utilisées : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Directory&lt;br /&gt;
|String&lt;br /&gt;
|Répertoire d'exportation sur le serveur.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration ftp utilisant une zone publique Free : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[\SOFTWARE\Sage\Ligne 1000\Administration\Servers\SYFRE\Export]&lt;br /&gt;
Protocol=ftp&lt;br /&gt;
Export URL=http://syfre.free.fr/sage/&lt;br /&gt;
FTP Host=ftpperso.free.fr&lt;br /&gt;
FTP Port=21&lt;br /&gt;
FTP Login=syfre&lt;br /&gt;
FTP Password=XXXXXXXXXX&lt;br /&gt;
FTP Directory=sage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Section ConfigServer===&lt;br /&gt;
&lt;br /&gt;
Cette section permet d'utiliser un fichier de configuration disponible sur une url.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Nom de variable&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|url&lt;br /&gt;
|String&lt;br /&gt;
|Cette URL permet de récupérer le fichier de configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un POST HTTP est effectué sur cette url avec les données suivantes : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;deploymentId&amp;quot;:&amp;quot;nom_système_de_la_machine&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le résultat attendu est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;config&amp;quot;:&amp;quot;contenu_du_fichier_de_configuration&amp;quot;},&lt;br /&gt;
{&amp;quot;certificate&amp;quot;:&amp;quot;certificat_au_format_pfx&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Exemple de configuration (server)|Exemple de configuration]]&lt;br /&gt;
*[[Service_1000_(server)|Ligne de commande]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Serveur}}&lt;br /&gt;
[[category:Serveur]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-02-26T15:44:36Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Prérequis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
A la différence de l'API en mode ressource, elle nécessite le déploiement de paquet DSM pour gérer les appels de service.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Paquet de classes non persistantes ==&lt;br /&gt;
&lt;br /&gt;
Les méthodes Json membres de classes non persistantes peuvent aussi être appelées.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez spécifier le nom de la classe dans l'URL d'appel de la méthode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetAPI/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-4.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
* [[Ressource (sdata)|API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)</id>
		<title>Ressource (sdata)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)"/>
				<updated>2026-02-26T15:43:27Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
{{tip|Voir aussi l'[[API Json (SData)|API en mode JSON]], qui permet d'encapsuler d'avantage les appels de service.}}&lt;br /&gt;
&lt;br /&gt;
==Prérequis==&lt;br /&gt;
Les requêtes SData sont exécutées sur [[SData|le point d'accès SData du service]].&lt;br /&gt;
&lt;br /&gt;
La forme simplifiée des urls est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/societe/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les requêtes sont authentifiées par un jeton d'authentification placé dans l'entête Authorization de la requêtes.&lt;br /&gt;
&lt;br /&gt;
[[Gestion des jetons d'authentification (Administration)|Le jeton d'authentification peut être géré par le client dans l'administration.]]&lt;br /&gt;
&lt;br /&gt;
Les requêtes doivent comporter les entêtes suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|accept&lt;br /&gt;
|application/json&lt;br /&gt;
|-&lt;br /&gt;
|Authorization&lt;br /&gt;
|Bearer token&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les url des requêtes doivent être encodées, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata/Société 1/ttiers...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
doit être transmis encodé en&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata.Soci%C3%A9t%C3%A9%201/ttiers....&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélection de version==&lt;br /&gt;
Il es possible d'indiquer un numéro de version dans l'url de la requête.&lt;br /&gt;
&lt;br /&gt;
Placez le numéro de version derrière le préfix sdata :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 https://.../sdata/1/....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En absence de numéro de version la dernière version sera utilisée.&lt;br /&gt;
&lt;br /&gt;
==Informations de version==&lt;br /&gt;
Utilisez la fonction $version pour retrouver les informations de version &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/$version&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;shareEnable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://localhost/sdata/$version?select=details&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;minors&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Fix $batch : Error in commit don't return message and continue execution&amp;quot;,&lt;br /&gt;
                &amp;quot;Fix time measure decimal format use . instead of local&amp;quot;,&lt;br /&gt;
                &amp;quot;Add extension information to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add operations to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add select options to $schema&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Add version information&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre select accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
!usage&lt;br /&gt;
|-&lt;br /&gt;
|details&lt;br /&gt;
|Détails des modifications des versions mineurs&lt;br /&gt;
|-&lt;br /&gt;
|patches&lt;br /&gt;
|Liste des patches installés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ressource (GET)==&lt;br /&gt;
Dans l'interface SData les ressources sont les objets de l'application.&lt;br /&gt;
&lt;br /&gt;
Une ressource est identifié par son uri qui représente le chemin de la ressource.&lt;br /&gt;
&lt;br /&gt;
L'uri est composé du chemin de la classe et d'un sélecteur qui est l'oid de l'objet. &lt;br /&gt;
&lt;br /&gt;
'''Exemple :''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/&amp;quot;,&lt;br /&gt;
   &amp;quot;$title&amp;quot;:&amp;quot;TTiers - -&amp;quot;,&lt;br /&gt;
   &amp;quot;$updated&amp;quot;:&amp;quot;2020-12-22T08:10:09.740Z&amp;quot;,&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;TTiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$title&amp;quot;:&amp;quot;ABI Jardin&amp;quot;,&lt;br /&gt;
         &amp;quot;$updated&amp;quot;:&amp;quot;2010-03-23T15:37:46.000Z&amp;quot;,&lt;br /&gt;
         &amp;quot;$etag&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE-000002C60000421C&amp;quot;,&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE&amp;quot;,&lt;br /&gt;
         &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/GenTiers/-/&amp;quot;,&lt;br /&gt;
         &amp;quot;stamp&amp;quot;:&amp;quot;000002C60000421C&amp;quot;,&lt;br /&gt;
         .... Attribute list ...&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sélecteur de ressource===&lt;br /&gt;
&lt;br /&gt;
Un sélecteur permet de retrouver une ressource spécifique, il est possible de rechercher une ressource par clé ou clause  &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sélecteur&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Clé&lt;br /&gt;
|TTiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
|-&lt;br /&gt;
|clause&lt;br /&gt;
|TTiers(code eq 'ABI 007')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Code de retour HTTP===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Code&lt;br /&gt;
!Résultat&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|La ressource existe &lt;br /&gt;
|-&lt;br /&gt;
|404&lt;br /&gt;
|La ressource n'existe pas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles dans les ressources===&lt;br /&gt;
La gestion des rôles de la ressource dépend du type et de la nature du rôle :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de rôle&lt;br /&gt;
!Nature&lt;br /&gt;
!Retour&lt;br /&gt;
|-&lt;br /&gt;
|Référence,Liste&lt;br /&gt;
|Composition&lt;br /&gt;
|Les ressources composants sont retournées dans le corps de la ressource composée&lt;br /&gt;
|-&lt;br /&gt;
|Référence&lt;br /&gt;
| -&lt;br /&gt;
|La ressource référencée est retournée par référence dans le corps de la ressource&lt;br /&gt;
|-&lt;br /&gt;
|Liste&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe référencée filtrée sur la référence réciproque.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
|Avec suppression en cascade &lt;br /&gt;
|Les ressources associées sont considérées comme des composants et retournées dans le corps de la ressource composée.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe associée filtrée sur la classe d'association&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Utilisez une vue pour retourner directement les attributs liés par des références, voir le paramètre select}}&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre société===&lt;br /&gt;
Par défaut, les requêtes s'exécutent dans le contexte société défini dans le jeton d'authentification.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez définir le contexte société dans le l'url de la requête :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  METHOD https://host/sdata/society/package/class ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Définir le contexte société dans l'url n'est utilisable que sur une base supportant le multi-société. Pour connaitre le statut multi-société, utilisez la requête $version ou bien interrogez [[Utilisation_du_contrôleur_de_partage_(API)|le contrôleur de partage]]}}&lt;br /&gt;
&lt;br /&gt;
==Requête sur les ressources (GET)==&lt;br /&gt;
Une requête sur les ressources est une requête sur une classe du modèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Paramètres de la requête===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!valeur&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|select&lt;br /&gt;
|liste d'attributs séparés par des virgules&lt;br /&gt;
|Liste des attributs à retourner&lt;br /&gt;
|-&lt;br /&gt;
|where&lt;br /&gt;
|Expression objet&lt;br /&gt;
|Filtre de la requête&lt;br /&gt;
|-&lt;br /&gt;
|orderBy&lt;br /&gt;
|Attribut de tri&lt;br /&gt;
|Ordre de tri de la requête&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|Taille de page (*)&lt;br /&gt;
|Pagination : Taille de page&lt;br /&gt;
|-&lt;br /&gt;
|startIndex&lt;br /&gt;
|Index de page&lt;br /&gt;
|Pagination par page : Numéro de page (0 première)&lt;br /&gt;
|-&lt;br /&gt;
|startKey&lt;br /&gt;
|Valeur de clé ou de tri&lt;br /&gt;
|Pagination par clé : Clé de position&lt;br /&gt;
|-&lt;br /&gt;
|keyDirection &lt;br /&gt;
|lt,le,gt,ge&lt;br /&gt;
|Pagination par clé : direction par rapport à startKey&lt;br /&gt;
|-&lt;br /&gt;
|dateFormat&lt;br /&gt;
|noTime, locale, utc&lt;br /&gt;
|Indique le format de date retourné pour les types de données date comptable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Il existe une limite par défaut si la valeur de count n'est pas précisée.&lt;br /&gt;
&lt;br /&gt;
Les valeurs passées en paramètre doivent être encodées en HTML &lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
 where=code eq 'ABI 007'&lt;br /&gt;
&lt;br /&gt;
doit être encodée en :&lt;br /&gt;
&lt;br /&gt;
 where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
&lt;br /&gt;
====Select====&lt;br /&gt;
Select permet de définir les attributs à retourner, par défaut tous les attributs non vide sont retournés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La présence du paramètre select conditionne la façon d'exécuter la requête.&lt;br /&gt;
&lt;br /&gt;
Les formats possibles sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!Usage&lt;br /&gt;
!Génère l'utilisation d'une vue&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Attribut x de la ressource&lt;br /&gt;
|non&lt;br /&gt;
|-&lt;br /&gt;
|x.y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure exacte)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x.+y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure externe)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as y&lt;br /&gt;
|Attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y)&lt;br /&gt;
|Opération sur l'attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y;z)&lt;br /&gt;
|Opération sur les attributs y et z de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Une vue sera utilisée si au moins un des membres de select nécessite l'utilisation d'une vue.&lt;br /&gt;
&lt;br /&gt;
Pour les opérateurs utilisables consultez [[Vue_locale_(langage)|la page sur les vues locales]]&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
* La sélection d'attribut référencé non défini peut générer l'absence de ressources dans le résultat, pour éviter ceci utilisez un spécificateur de jointure externe.&lt;br /&gt;
* La sélection d'attribut référencé par un rôle liste peut générer plusieurs ressources dans le résultat correspondant à chaque ressource liée par la relation.&lt;br /&gt;
* La séparation des paramètres pour les opérateurs ayant plusieurs paramètres utilise le séparateur ; et pas ,&lt;br /&gt;
* Lorsqu'une vue est utilisée, les filtres et ordre de tri sont exprimés par rapport à la vue. &lt;br /&gt;
&lt;br /&gt;
Par exemple : &lt;br /&gt;
* TCompteGeneral?select=codeCompte&amp;amp;where=codeCompte ge '4'&amp;amp;orderBy=codeCompte&lt;br /&gt;
mais&lt;br /&gt;
* TCompteGeneral?select=code as codeCompte&amp;amp;where=code ge '4'&amp;amp;orderBy=code&lt;br /&gt;
&lt;br /&gt;
====Dates comptables====&lt;br /&gt;
Le paramètre dateFormat permet de définir le format des dates comptables retournées par l'API&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version API&lt;br /&gt;
!dateFormat&lt;br /&gt;
!Exemple&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Temps UTC&lt;br /&gt;
|-&lt;br /&gt;
|1.6&lt;br /&gt;
|&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
| &lt;br /&gt;
|2021-06-01T00:00:00+02&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Format heure locale&lt;br /&gt;
|Un instant heure locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|noTime&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Format date locale&lt;br /&gt;
|Une date locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format heure UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
====Filtre====&lt;br /&gt;
&lt;br /&gt;
'''Opérateurs:'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!opérateur&lt;br /&gt;
!équivalence&lt;br /&gt;
!exemple&lt;br /&gt;
!encoded&lt;br /&gt;
|-&lt;br /&gt;
|eq&lt;br /&gt;
|=&lt;br /&gt;
|where=code eq 'ABI 007'&lt;br /&gt;
|where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
|-&lt;br /&gt;
|ne&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|lt&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|le&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gt&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ge&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|like&lt;br /&gt;
|like&lt;br /&gt;
|where=code like 'ABI %'&lt;br /&gt;
|where=code%20like%20%27ABI %25%27&lt;br /&gt;
|-&lt;br /&gt;
|in&lt;br /&gt;
|in&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Valeurs des paramètres:'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs des paramètres sont passées en littérale&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de donnée&lt;br /&gt;
!exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|code eq 'xxx'&lt;br /&gt;
|-&lt;br /&gt;
|boolean&lt;br /&gt;
|flag eq true&lt;br /&gt;
|-&lt;br /&gt;
|numérique&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|flottant&lt;br /&gt;
|value eq 1.0&lt;br /&gt;
|-&lt;br /&gt;
|date (voir format)&lt;br /&gt;
|$updated &amp;gt; '2019-12-31T23:00:00Z'&lt;br /&gt;
|-&lt;br /&gt;
|enum (par index)&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|enum (par constant)&lt;br /&gt;
|value eq sens_credit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format des paramètres date :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!décodage&lt;br /&gt;
!Exemple (1 jan. 2020 France)&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMMZ&lt;br /&gt;
|ISO-8601 UTC&lt;br /&gt;
|2019-12-31T23:00:00Z&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM+OFFSET&lt;br /&gt;
|ISO-8601 avec timezone&lt;br /&gt;
|2019-12-31T23:00:00+1&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM&lt;br /&gt;
|ISO-8601 sans timezone&lt;br /&gt;
|2020-01-01T00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|AAA-MM-DD&lt;br /&gt;
|Date au format ISO-8601&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|-&lt;br /&gt;
|DD/MM/AAAA&lt;br /&gt;
|Date au format local&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ordre de tri====&lt;br /&gt;
&lt;br /&gt;
Tri ascendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code&lt;br /&gt;
&lt;br /&gt;
Tri descendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code%20desc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pagination par page====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, count et startIndex&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=0&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=10&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=20&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Incrémentez startIndex du nombre de ressource retourné par la requête}}&lt;br /&gt;
&lt;br /&gt;
====Pagination par clé====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, startKey et keyDirection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startKey=1B28EFFFF1C3000200F6000000230893&amp;amp;keyDirection=lt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création de ressource (POST)== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRE1&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre 1&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site1 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E20022&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')&amp;quot;,&lt;br /&gt;
            ... attribute list ...&lt;br /&gt;
        } &lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre de partage===&lt;br /&gt;
&lt;br /&gt;
Le niveau de partage d'une ressource de niveau activité peut être contrôlé par des propriétés de contrôle au niveau de la définition de la ressource : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Contrôle&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|$shareId&lt;br /&gt;
|Valeur du périmètre sur lequel créer l'objet&lt;br /&gt;
|-&lt;br /&gt;
|$shareLevel&lt;br /&gt;
|Niveau de partage sur lequel créer l'objet (0:dossier,1:activité ou 2:société)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://localhost/sdata/S3/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$shareLevel&amp;quot;:2,&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRES3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre S3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site 1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 201 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Par défaut la ressource sera créée au niveau activité}}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles===&lt;br /&gt;
&lt;br /&gt;
La création de ressource dans les rôles dépend de la nature du rôle.&lt;br /&gt;
&lt;br /&gt;
* Pour les rôles de type composition les ressources liées sont créés simultanément.&lt;br /&gt;
* Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.&lt;br /&gt;
&lt;br /&gt;
'''Identification des références'''&lt;br /&gt;
&lt;br /&gt;
'''Par clé:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par uri:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$url&amp;quot;:TPays(&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par expression:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
    &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.&lt;br /&gt;
&lt;br /&gt;
===Gestion des dates comptables===&lt;br /&gt;
Pour les dates comptables, le serveur convertit la date reçu en heure locale puis conserve la partie date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Exemple&lt;br /&gt;
!Interprète&lt;br /&gt;
|-&lt;br /&gt;
|locale&lt;br /&gt;
|Une heure locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Conserve l’heure reçue en heure locale et conserve la date, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|noTime&lt;br /&gt;
|Une date sans heure	&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Conserve la date reçue sans conversion, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|UTC&lt;br /&gt;
|Un instant universel UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
2021-05-31T22:00:00+02&lt;br /&gt;
|Convertit l’heure UTC en heure locale du service et conserve la date reçue, la date peut être différente de la date transmise si le client et le service ne sont pas dans le même fuseau horaire.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
==Modification de ressource (PUT)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;codeSIRET&amp;quot;:&amp;quot;12345678&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
[&lt;br /&gt;
{ &lt;br /&gt;
.... resource modified ...&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modification de rôle liste composition===&lt;br /&gt;
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle &amp;quot;$&amp;quot; pour le rôle :&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par remplacement des composants :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
            ... Site3 has been added, other sites has been removed.&lt;br /&gt;
            ... There is one site left in the list&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par ajout de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;create&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
                ... Site3 has been added, other sites are not affected&lt;br /&gt;
                ... There is one site more in the list&lt;br /&gt;
            }&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par mise à jour de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;update&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;, &lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;Site maj&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!contrôle&lt;br /&gt;
!action&lt;br /&gt;
|-&lt;br /&gt;
|create&lt;br /&gt;
|Les nouvelles ressources sont ajoutées au rôle&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|Les ressources existantes dans le rôle sont mise à jour&lt;br /&gt;
|-&lt;br /&gt;
|delete&lt;br /&gt;
|Les ressources existantes et non présentes dans la requête sont supprimées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est &amp;quot;create&amp;quot;,&amp;quot;update&amp;quot;,&amp;quot;delete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Modification des attributs privés===&lt;br /&gt;
Par défaut les attributs privés sont modifiés sur le niveau de partage correspondant au périmètre société, pour contrôler le niveau de partage des attributs privés utilisez un élément de contrôle $sharePrivateLevel.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!sharePrivateLevel&lt;br /&gt;
!Périmètre de définition&lt;br /&gt;
|-&lt;br /&gt;
|absent&lt;br /&gt;
|Périmètre courant de l'objet&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Dossier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Activité&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Société&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le périmètre courant de l'objet dépend de l'état de l'objet. Par exemple, si l'objet est de niveau activité et n'a pas de propriété défini pour la société courante, le périmètre courant sera l'activité, mais si l'objet a des propriétés définies pour la société courante alors le périmètre courant sera la société. Ne pas définir explicitement le niveau de partage peut amener à des ambiguïtés.}}&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour les sociétés de l'activité du Tiers (le tiers n'a pas de propriété défini pour la société S3):'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CHQ'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour la société S3 :'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$sharePrivateLevel&amp;quot;:2,&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CBB'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suppression de ressource (DELETE)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opération sur une ressource (POST)==&lt;br /&gt;
&lt;br /&gt;
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.&lt;br /&gt;
&lt;br /&gt;
===Méthode d'instance de ressource===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Méthode de classe de ressource, ou méthode de classe non persistante===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Passage des paramètres===&lt;br /&gt;
Les paramètres sont passés par nom et valeur.&lt;br /&gt;
&lt;br /&gt;
Les types de paramètres et de retour supportés sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;xxx&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Entier&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|&amp;quot;p&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
|Flottant&lt;br /&gt;
|&amp;quot;p&amp;quot;:1.1&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;2020-12-25T01:01:01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Enuméré (par valeur)&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Liste d'objets&lt;br /&gt;
|&amp;quot;p&amp;quot;:[ {$key:&amp;quot;key&amp;quot;, $uuid:&amp;quot;uuid&amp;quot;, $where:&amp;quot;expression&amp;quot;}, ...],&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Les références des objets passés dans des listes peuvent être définies par clé ($key), identifiant appelant ($uuid) ou expression ($where)&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;paramList&amp;quot;:[&lt;br /&gt;
    {&amp;quot;$key&amp;quot;:&amp;quot;B5A28A92EB0C00020010000001F500A1&amp;quot;},&lt;br /&gt;
    {&amp;quot;$where&amp;quot;:&amp;quot;uneChaine like 'cN%'&amp;quot;}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Résultat de type ressource===&lt;br /&gt;
Lorsque l'opération retourne un objet ou une liste d'objets ceux-ci sont retournés sous forme de ressource.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//class Function GetWFClasseA(const iCode:string):WFClasseA;&lt;br /&gt;
begin&lt;br /&gt;
  Result := WFClasseA.Find('(unCode = %1)','unCode',True,[iCode]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassea&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:41:41.015Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Class Function GetWFClasseA(const iCodeLike:string):WFClasseAList;&lt;br /&gt;
begin&lt;br /&gt;
 Result := WFClasseA.CreateListWhere('(unCode like %1)','','unCode',True,-1,[iCodeLike]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassealist&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:49:14.061Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E-0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaalb&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 2,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 2&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A-0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaale&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Initial&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            ......&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialisation de la ressource===&lt;br /&gt;
Il est possible d'initialiser la ressource avant d'exécuter la méthode, par exemple pour un processus :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  TmyProcessus = class&lt;br /&gt;
  public&lt;br /&gt;
   procedure Execute(p:string);&lt;br /&gt;
   property attString:string;&lt;br /&gt;
   property attInt:Integer;&lt;br /&gt;
   property attRef:TRefClass;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/execute&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$resource&amp;quot;:{&lt;br /&gt;
 &amp;quot;attString&amp;quot;:&amp;quot;value 1&amp;quot;,&lt;br /&gt;
 &amp;quot;attInt&amp;quot;:100,&lt;br /&gt;
 &amp;quot;attRef&amp;quot;:{&amp;quot;$url&amp;quot;:&amp;quot;TRefClass('xxx')&amp;quot;},&lt;br /&gt;
},&lt;br /&gt;
&amp;quot;p&amp;quot;:&amp;quot;value&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requête Batch (POST $batch)==&lt;br /&gt;
Une requête Batch permet de réaliser plusieurs opérations de type GET,POST/PUT/DELETE/EXEC en une seule fois.&lt;br /&gt;
&lt;br /&gt;
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://.../sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;POST&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers&amp;quot;,&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SYFRE2&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;syfre 2&amp;quot;,&lt;br /&gt;
         &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
               &amp;quot;caption&amp;quot;:&amp;quot;site2 de syfre2&amp;quot;,&lt;br /&gt;
               &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
                  &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
                  &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
                  &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
                  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
                     &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
                     &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
                  }&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Le format d'url complet de $Batch est https://hostname/service/server/sdata/l1000/-/-/$batch}}&lt;br /&gt;
&lt;br /&gt;
===Gestion de la transaction dans un batch===&lt;br /&gt;
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une opération Batch atomique (une seule transaction longue) utilisez un élément de contrôle transaction :&lt;br /&gt;
&lt;br /&gt;
Lorsque l'opération est atomique la réponse contient un élément $batch indiquant le statut de l'opération.&lt;br /&gt;
&lt;br /&gt;
Le code de retour http est le code de retour de la dernière opération réalisée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;: {&amp;quot;$transaction&amp;quot;:[&amp;quot;atomic&amp;quot;]},&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:7200,&amp;quot;CodeDevise&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:1000,&amp;quot;CodeDevise&amp;quot;:&amp;quot;EUR&amp;quot;}&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 401&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;PUT&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
            &amp;quot;$etag&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000000285DAE-0000018C00000001&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 410,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
            &amp;quot;$&amp;quot;: {&lt;br /&gt;
                &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                        &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                        &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;$batch&amp;quot;: {&lt;br /&gt;
        &amp;quot;$httpStatus&amp;quot;: 400,&lt;br /&gt;
        &amp;quot;$httpMessage&amp;quot;: &amp;quot;ROLLBACK&amp;quot;,&lt;br /&gt;
        &amp;quot;$&amp;quot;: {&lt;br /&gt;
            &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                    &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                    &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;,&lt;br /&gt;
                    &amp;quot;entry&amp;quot;: {&lt;br /&gt;
                        &amp;quot;number&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;uuid&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''$transaction :'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Commande&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|atomic&lt;br /&gt;
|Démarre une transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|flush&lt;br /&gt;
|Force un batch de la transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|commit&lt;br /&gt;
|Valide la transaction longue&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|L'élément de contrôle de transaction peut être placé au niveau d'un ordre du lot.}}&lt;br /&gt;
&lt;br /&gt;
===Execution de méthode dans un batch===&lt;br /&gt;
Utiliser le verbe EXEC pour exécuter une méthode &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;EXEC&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
         &amp;quot;$resource&amp;quot;:{&lt;br /&gt;
            &amp;quot;uneChaine&amp;quot;:&amp;quot;value 1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;p&amp;quot;:&amp;quot;value 2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Executed&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: &amp;quot;value 1 value 2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schéma d'une ressource (GET $schema)==&lt;br /&gt;
Le schéma d'une ressource retourne la structure de la classe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Libellé de la Classe A&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;unBool&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Bool&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un code&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDerive&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un dérivé&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDouble&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;double&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un double&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEmail&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un email&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Entier&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Etat&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unStatus&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Statut de l'objet (Panel)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseBRef&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
                &amp;quot;$ref&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema&amp;quot;,&lt;br /&gt;
                &amp;quot;$relationship&amp;quot;: &amp;quot;reference&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Référence B&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseCList&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
            &amp;quot;item&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;Classe C&amp;quot;,&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;un entier&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu de la réponse peut être configurée avec le paramètre &amp;quot;select&amp;quot;, à défaut toutes les informations sont retournées.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|Retourne uniquement les attributs issus d'extension&lt;br /&gt;
|-&lt;br /&gt;
|properties&lt;br /&gt;
|Retourne la liste de tous les attributs&lt;br /&gt;
|-&lt;br /&gt;
|selfProperties&lt;br /&gt;
|Retourne uniquement les attributs de la classe elle même&lt;br /&gt;
|-&lt;br /&gt;
|operations&lt;br /&gt;
|Retourne les opérations de la classe&lt;br /&gt;
|-&lt;br /&gt;
|compositions&lt;br /&gt;
|Retourne le schéma des classes composants &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : Retrouver uniquement les attributs d'extension d'une classe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/ttiers/$schema?select=extensions&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Tiers&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;extensions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;class&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Extension de TTiers&amp;quot;,&lt;br /&gt;
            &amp;quot;package&amp;quot;: &amp;quot;esmPackage&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;esmCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;extension&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;un code esm&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/gentiers/TTiers/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle de ressource (GET $template)==&lt;br /&gt;
Le modèle de ressource retourne une ressource initialisée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gcimport/TImportContratCommercial/$template&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gcimport/-/TImportContratCommercial&amp;quot;,&lt;br /&gt;
    &amp;quot;stamp&amp;quot;: &amp;quot;000001D900000001&amp;quot;,&lt;br /&gt;
    &amp;quot;acompte&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;affaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;budget&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;Caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;commandeEngagement&amp;quot;: false,&lt;br /&gt;
    &amp;quot;commercial&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;coursDevise&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;CodeDevise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;Date&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
        &amp;quot;TCConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;TCValue&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;RPConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;RPValue&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coursNegocie&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dateCommande&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;dateLivraison&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;devise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI1&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI2&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI3&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI4&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;echeancement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;etablissement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTaxe&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;gestionTransport&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Automatique&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;immobilisation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;B&amp;amp;S&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ImportCCDetailList&amp;quot;: [],&lt;br /&gt;
    &amp;quot;importeGMAO&amp;quot;: false,&lt;br /&gt;
    &amp;quot;importerRemisePied&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ImportSiteAdresse&amp;quot;: {},&lt;br /&gt;
    &amp;quot;incoterm&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;MentionExonerationTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;posteBudgetaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;pourcentAcompte&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;pourcentRemisePied&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;reference&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;referenceMandat&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;regimeTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiers&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiersLivre&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;SessionImportation&amp;quot;: {},&lt;br /&gt;
    &amp;quot;typeFacturation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;HT&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SData|Point d'accès et url SData]]&lt;br /&gt;
* [[Gestion des jetons d'authentification (Administration)|Gestion des jetons d'authentification]]&lt;br /&gt;
* [[API Json (SData)|API SData en mode json]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi les exemples suivants : &lt;br /&gt;
&lt;br /&gt;
* [[Utilisation du contrôleur de partage (API)|Utilisation du contrôleur de partage]]&lt;br /&gt;
* [[Interrogation des écritures (API)|Interrogation des écritures avec l'API SData]]&lt;br /&gt;
* [[Interrogation des fournisseurs (API)|Interrogation des fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Creation d'un fournisseur (API)|Création d'un fournisseur avec l'API SData]]&lt;br /&gt;
* [[Import_de commandes_(API)|Import de commandes avec l'API SData]]&lt;br /&gt;
* [[Import_d%27écritures_(API)|Import d'écritures avec l'API SData]]&lt;br /&gt;
* [[Gestion des réceptions fournisseurs (API)|Gestion des réceptions fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Facturation d'un bon de livraison (API)|Facturation d'un bon de livraison avec l'API SData]]&lt;br /&gt;
* [[Creation_d%27un_Tiers_et_son_compte_bancaire_(API)|Creation_d'un Tiers et son compte bancaire (API)]]&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)</id>
		<title>Ressource (sdata)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Ressource_(sdata)"/>
				<updated>2026-02-26T15:39:58Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Prérequis==&lt;br /&gt;
Les requêtes SData sont exécutées sur [[SData|le point d'accès SData du service]].&lt;br /&gt;
&lt;br /&gt;
La forme simplifiée des urls est &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://hostname/sdata/societe/ressource?paramètres&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les requêtes sont authentifiées par un jeton d'authentification placé dans l'entête Authorization de la requêtes.&lt;br /&gt;
&lt;br /&gt;
[[Gestion des jetons d'authentification (Administration)|Le jeton d'authentification peut être géré par le client dans l'administration.]]&lt;br /&gt;
&lt;br /&gt;
Les requêtes doivent comporter les entêtes suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|accept&lt;br /&gt;
|application/json&lt;br /&gt;
|-&lt;br /&gt;
|Authorization&lt;br /&gt;
|Bearer token&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les url des requêtes doivent être encodées, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata/Société 1/ttiers...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
doit être transmis encodé en&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;https://.../sdata.Soci%C3%A9t%C3%A9%201/ttiers....&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélection de version==&lt;br /&gt;
Il es possible d'indiquer un numéro de version dans l'url de la requête.&lt;br /&gt;
&lt;br /&gt;
Placez le numéro de version derrière le préfix sdata :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 https://.../sdata/1/....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En absence de numéro de version la dernière version sera utilisée.&lt;br /&gt;
&lt;br /&gt;
==Informations de version==&lt;br /&gt;
Utilisez la fonction $version pour retrouver les informations de version &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/$version&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;shareEnable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://localhost/sdata/$version?select=details&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;Sage FRP 1000&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;9.1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;master&amp;quot;: &amp;quot;1.22&amp;quot;,&lt;br /&gt;
    &amp;quot;apiMajor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;apiMinor&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;minors&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 1,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Fix $batch : Error in commit don't return message and continue execution&amp;quot;,&lt;br /&gt;
                &amp;quot;Fix time measure decimal format use . instead of local&amp;quot;,&lt;br /&gt;
                &amp;quot;Add extension information to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add operations to $schema&amp;quot;,&lt;br /&gt;
                &amp;quot;Add select options to $schema&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;minor&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;details&amp;quot;: [&lt;br /&gt;
                &amp;quot;Add version information&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre select accepte les options suivantes :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
!usage&lt;br /&gt;
|-&lt;br /&gt;
|details&lt;br /&gt;
|Détails des modifications des versions mineurs&lt;br /&gt;
|-&lt;br /&gt;
|patches&lt;br /&gt;
|Liste des patches installés&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ressource (GET)==&lt;br /&gt;
Dans l'interface SData les ressources sont les objets de l'application.&lt;br /&gt;
&lt;br /&gt;
Une ressource est identifié par son uri qui représente le chemin de la ressource.&lt;br /&gt;
&lt;br /&gt;
L'uri est composé du chemin de la classe et d'un sélecteur qui est l'oid de l'objet. &lt;br /&gt;
&lt;br /&gt;
'''Exemple :''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/&amp;quot;,&lt;br /&gt;
   &amp;quot;$title&amp;quot;:&amp;quot;TTiers - -&amp;quot;,&lt;br /&gt;
   &amp;quot;$updated&amp;quot;:&amp;quot;2020-12-22T08:10:09.740Z&amp;quot;,&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;TTiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$title&amp;quot;:&amp;quot;ABI Jardin&amp;quot;,&lt;br /&gt;
         &amp;quot;$updated&amp;quot;:&amp;quot;2010-03-23T15:37:46.000Z&amp;quot;,&lt;br /&gt;
         &amp;quot;$etag&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE-000002C60000421C&amp;quot;,&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000000285DAE&amp;quot;,&lt;br /&gt;
         &amp;quot;$baseUrl&amp;quot;:&amp;quot;http://localhost:8080/sdata/l1000/GenTiers/-/&amp;quot;,&lt;br /&gt;
         &amp;quot;stamp&amp;quot;:&amp;quot;000002C60000421C&amp;quot;,&lt;br /&gt;
         .... Attribute list ...&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sélecteur de ressource===&lt;br /&gt;
&lt;br /&gt;
Un sélecteur permet de retrouver une ressource spécifique, il est possible de rechercher une ressource par clé ou clause  &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Sélecteur&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Clé&lt;br /&gt;
|TTiers('9D33A23CFA6A005500F6000000285DAE')&lt;br /&gt;
|-&lt;br /&gt;
|clause&lt;br /&gt;
|TTiers(code eq 'ABI 007')&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Code de retour HTTP===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Code&lt;br /&gt;
!Résultat&lt;br /&gt;
|-&lt;br /&gt;
|200&lt;br /&gt;
|La ressource existe &lt;br /&gt;
|-&lt;br /&gt;
|404&lt;br /&gt;
|La ressource n'existe pas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles dans les ressources===&lt;br /&gt;
La gestion des rôles de la ressource dépend du type et de la nature du rôle :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de rôle&lt;br /&gt;
!Nature&lt;br /&gt;
!Retour&lt;br /&gt;
|-&lt;br /&gt;
|Référence,Liste&lt;br /&gt;
|Composition&lt;br /&gt;
|Les ressources composants sont retournées dans le corps de la ressource composée&lt;br /&gt;
|-&lt;br /&gt;
|Référence&lt;br /&gt;
| -&lt;br /&gt;
|La ressource référencée est retournée par référence dans le corps de la ressource&lt;br /&gt;
|-&lt;br /&gt;
|Liste&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe référencée filtrée sur la référence réciproque.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
|Avec suppression en cascade &lt;br /&gt;
|Les ressources associées sont considérées comme des composants et retournées dans le corps de la ressource composée.&lt;br /&gt;
|-&lt;br /&gt;
|Association&lt;br /&gt;
| -&lt;br /&gt;
|Les ressources ne sont pas retournées. Pour obtenir ces ressources, il faut faire une requête sur la classe associée filtrée sur la classe d'association&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Utilisez une vue pour retourner directement les attributs liés par des références, voir le paramètre select}}&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre société===&lt;br /&gt;
Par défaut, les requêtes s'exécutent dans le contexte société défini dans le jeton d'authentification.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez définir le contexte société dans le l'url de la requête :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  METHOD https://host/sdata/society/package/class ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Définir le contexte société dans l'url n'est utilisable que sur une base supportant le multi-société. Pour connaitre le statut multi-société, utilisez la requête $version ou bien interrogez [[Utilisation_du_contrôleur_de_partage_(API)|le contrôleur de partage]]}}&lt;br /&gt;
&lt;br /&gt;
==Requête sur les ressources (GET)==&lt;br /&gt;
Une requête sur les ressources est une requête sur une classe du modèle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?parameters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Paramètres de la requête===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!valeur&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|select&lt;br /&gt;
|liste d'attributs séparés par des virgules&lt;br /&gt;
|Liste des attributs à retourner&lt;br /&gt;
|-&lt;br /&gt;
|where&lt;br /&gt;
|Expression objet&lt;br /&gt;
|Filtre de la requête&lt;br /&gt;
|-&lt;br /&gt;
|orderBy&lt;br /&gt;
|Attribut de tri&lt;br /&gt;
|Ordre de tri de la requête&lt;br /&gt;
|-&lt;br /&gt;
|count&lt;br /&gt;
|Taille de page (*)&lt;br /&gt;
|Pagination : Taille de page&lt;br /&gt;
|-&lt;br /&gt;
|startIndex&lt;br /&gt;
|Index de page&lt;br /&gt;
|Pagination par page : Numéro de page (0 première)&lt;br /&gt;
|-&lt;br /&gt;
|startKey&lt;br /&gt;
|Valeur de clé ou de tri&lt;br /&gt;
|Pagination par clé : Clé de position&lt;br /&gt;
|-&lt;br /&gt;
|keyDirection &lt;br /&gt;
|lt,le,gt,ge&lt;br /&gt;
|Pagination par clé : direction par rapport à startKey&lt;br /&gt;
|-&lt;br /&gt;
|dateFormat&lt;br /&gt;
|noTime, locale, utc&lt;br /&gt;
|Indique le format de date retourné pour les types de données date comptable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Il existe une limite par défaut si la valeur de count n'est pas précisée.&lt;br /&gt;
&lt;br /&gt;
Les valeurs passées en paramètre doivent être encodées en HTML &lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
 where=code eq 'ABI 007'&lt;br /&gt;
&lt;br /&gt;
doit être encodée en :&lt;br /&gt;
&lt;br /&gt;
 where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
&lt;br /&gt;
====Select====&lt;br /&gt;
Select permet de définir les attributs à retourner, par défaut tous les attributs non vide sont retournés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code,caption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La présence du paramètre select conditionne la façon d'exécuter la requête.&lt;br /&gt;
&lt;br /&gt;
Les formats possibles sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!Usage&lt;br /&gt;
!Génère l'utilisation d'une vue&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Attribut x de la ressource&lt;br /&gt;
|non&lt;br /&gt;
|-&lt;br /&gt;
|x.y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure exacte)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x.+y&lt;br /&gt;
|Attribut y de la ressource lié par de référence x (jointure externe)&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as y&lt;br /&gt;
|Attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y)&lt;br /&gt;
|Opération sur l'attribut y de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|-&lt;br /&gt;
|x as ope(y;z)&lt;br /&gt;
|Opération sur les attributs y et z de la ressource retourné sous l'alias x&lt;br /&gt;
|oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Une vue sera utilisée si au moins un des membres de select nécessite l'utilisation d'une vue.&lt;br /&gt;
&lt;br /&gt;
Pour les opérateurs utilisables consultez [[Vue_locale_(langage)|la page sur les vues locales]]&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
* La sélection d'attribut référencé non défini peut générer l'absence de ressources dans le résultat, pour éviter ceci utilisez un spécificateur de jointure externe.&lt;br /&gt;
* La sélection d'attribut référencé par un rôle liste peut générer plusieurs ressources dans le résultat correspondant à chaque ressource liée par la relation.&lt;br /&gt;
* La séparation des paramètres pour les opérateurs ayant plusieurs paramètres utilise le séparateur ; et pas ,&lt;br /&gt;
* Lorsqu'une vue est utilisée, les filtres et ordre de tri sont exprimés par rapport à la vue. &lt;br /&gt;
&lt;br /&gt;
Par exemple : &lt;br /&gt;
* TCompteGeneral?select=codeCompte&amp;amp;where=codeCompte ge '4'&amp;amp;orderBy=codeCompte&lt;br /&gt;
mais&lt;br /&gt;
* TCompteGeneral?select=code as codeCompte&amp;amp;where=code ge '4'&amp;amp;orderBy=code&lt;br /&gt;
&lt;br /&gt;
====Dates comptables====&lt;br /&gt;
Le paramètre dateFormat permet de définir le format des dates comptables retournées par l'API&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version API&lt;br /&gt;
!dateFormat&lt;br /&gt;
!Exemple&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Temps UTC&lt;br /&gt;
|-&lt;br /&gt;
|1.6&lt;br /&gt;
|&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
| &lt;br /&gt;
|2021-06-01T00:00:00+02&lt;br /&gt;
|Format UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Format heure locale&lt;br /&gt;
|Un instant heure locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|noTime&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Format date locale&lt;br /&gt;
|Une date locale&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|1.7&lt;br /&gt;
|UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
|Format heure UTC&lt;br /&gt;
|Un instant heure universelle&lt;br /&gt;
|Le 31 Mai 2021 à 22 heure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
====Filtre====&lt;br /&gt;
&lt;br /&gt;
'''Opérateurs:'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!opérateur&lt;br /&gt;
!équivalence&lt;br /&gt;
!exemple&lt;br /&gt;
!encoded&lt;br /&gt;
|-&lt;br /&gt;
|eq&lt;br /&gt;
|=&lt;br /&gt;
|where=code eq 'ABI 007'&lt;br /&gt;
|where=code%20eq%20%27ABI%20007%27&lt;br /&gt;
|-&lt;br /&gt;
|ne&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|lt&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|le&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gt&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ge&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|like&lt;br /&gt;
|like&lt;br /&gt;
|where=code like 'ABI %'&lt;br /&gt;
|where=code%20like%20%27ABI %25%27&lt;br /&gt;
|-&lt;br /&gt;
|in&lt;br /&gt;
|in&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Valeurs des paramètres:'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs des paramètres sont passées en littérale&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de donnée&lt;br /&gt;
!exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|code eq 'xxx'&lt;br /&gt;
|-&lt;br /&gt;
|boolean&lt;br /&gt;
|flag eq true&lt;br /&gt;
|-&lt;br /&gt;
|numérique&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|flottant&lt;br /&gt;
|value eq 1.0&lt;br /&gt;
|-&lt;br /&gt;
|date (voir format)&lt;br /&gt;
|$updated &amp;gt; '2019-12-31T23:00:00Z'&lt;br /&gt;
|-&lt;br /&gt;
|enum (par index)&lt;br /&gt;
|value eq 1&lt;br /&gt;
|-&lt;br /&gt;
|enum (par constant)&lt;br /&gt;
|value eq sens_credit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Format des paramètres date :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!format&lt;br /&gt;
!décodage&lt;br /&gt;
!Exemple (1 jan. 2020 France)&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMMZ&lt;br /&gt;
|ISO-8601 UTC&lt;br /&gt;
|2019-12-31T23:00:00Z&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM+OFFSET&lt;br /&gt;
|ISO-8601 avec timezone&lt;br /&gt;
|2019-12-31T23:00:00+1&lt;br /&gt;
|-&lt;br /&gt;
|AAAA-MM-DDTHH:MM:SS.MMM&lt;br /&gt;
|ISO-8601 sans timezone&lt;br /&gt;
|2020-01-01T00:00:00&lt;br /&gt;
|-&lt;br /&gt;
|AAA-MM-DD&lt;br /&gt;
|Date au format ISO-8601&lt;br /&gt;
|2020-01-01&lt;br /&gt;
|-&lt;br /&gt;
|DD/MM/AAAA&lt;br /&gt;
|Date au format local&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ordre de tri====&lt;br /&gt;
&lt;br /&gt;
Tri ascendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code&lt;br /&gt;
&lt;br /&gt;
Tri descendant :&lt;br /&gt;
&lt;br /&gt;
 orderby=code%20desc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?orderBy=code%20desc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Pagination par page====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, count et startIndex&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=0&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=10&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startIndex=20&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Incrémentez startIndex du nombre de ressource retourné par la requête}}&lt;br /&gt;
&lt;br /&gt;
====Pagination par clé====&lt;br /&gt;
&lt;br /&gt;
Utiliser orderBy, startKey et keyDirection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gentiers/ttiers?select=code&amp;amp;orderby=code&amp;amp;count=10&amp;amp;startKey=1B28EFFFF1C3000200F6000000230893&amp;amp;keyDirection=lt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création de ressource (POST)== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRE1&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre 1&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site1 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E20022&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gentiers/-/TTiers('9D33A23CFA6A005500F6000001E20022')&amp;quot;,&lt;br /&gt;
            ... attribute list ...&lt;br /&gt;
        } &lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion du périmètre de partage===&lt;br /&gt;
&lt;br /&gt;
Le niveau de partage d'une ressource de niveau activité peut être contrôlé par des propriétés de contrôle au niveau de la définition de la ressource : &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Contrôle&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|$shareId&lt;br /&gt;
|Valeur du périmètre sur lequel créer l'objet&lt;br /&gt;
|-&lt;br /&gt;
|$shareLevel&lt;br /&gt;
|Niveau de partage sur lequel créer l'objet (0:dossier,1:activité ou 2:société)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://localhost/sdata/S3/gentiers/ttiers&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$shareLevel&amp;quot;:2,&lt;br /&gt;
   &amp;quot;code&amp;quot;:&amp;quot;SYFRES3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;caption&amp;quot;:&amp;quot;syfre S3-2&amp;quot;,&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site 1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 201 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Par défaut la ressource sera créée au niveau activité}}&lt;br /&gt;
&lt;br /&gt;
===Gestion des rôles===&lt;br /&gt;
&lt;br /&gt;
La création de ressource dans les rôles dépend de la nature du rôle.&lt;br /&gt;
&lt;br /&gt;
* Pour les rôles de type composition les ressources liées sont créés simultanément.&lt;br /&gt;
* Pour les rôles qui ne sont pas des compositions les ressources liées sont rattachés.&lt;br /&gt;
&lt;br /&gt;
'''Identification des références'''&lt;br /&gt;
&lt;br /&gt;
'''Par clé:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par uri:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$url&amp;quot;:TPays(&amp;quot;9D33A23CFA6A005500150000001700FD&amp;quot;)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Par expression:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
    &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
    &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu'une expression est utilisée la première ressource retournée par l'expression est utilisée.&lt;br /&gt;
&lt;br /&gt;
===Gestion des dates comptables===&lt;br /&gt;
Pour les dates comptables, le serveur convertit la date reçu en heure locale puis conserve la partie date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Format&lt;br /&gt;
!Représente&lt;br /&gt;
!Exemple&lt;br /&gt;
!Interprète&lt;br /&gt;
|-&lt;br /&gt;
|locale&lt;br /&gt;
|Une heure locale&lt;br /&gt;
|2021-06-01T00:00:00&lt;br /&gt;
|Conserve l’heure reçue en heure locale et conserve la date, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|noTime&lt;br /&gt;
|Une date sans heure	&lt;br /&gt;
|2021-06-01&lt;br /&gt;
|Conserve la date reçue sans conversion, la date sera toujours celle transmise.&lt;br /&gt;
|-&lt;br /&gt;
|UTC&lt;br /&gt;
|Un instant universel UTC&lt;br /&gt;
|2021-05-31T22:00:00Z&lt;br /&gt;
2021-05-31T22:00:00+02&lt;br /&gt;
|Convertit l’heure UTC en heure locale du service et conserve la date reçue, la date peut être différente de la date transmise si le client et le service ne sont pas dans le même fuseau horaire.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{warning|Pour les dates comptables, les formats UTC sont ambigus et peuvent générer des erreurs de conversion si les fuseaux horaire du serveur et du client sont différents}}&lt;br /&gt;
&lt;br /&gt;
==Modification de ressource (PUT)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;codeSIRET&amp;quot;:&amp;quot;12345678&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
[&lt;br /&gt;
{ &lt;br /&gt;
.... resource modified ...&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modification de rôle liste composition===&lt;br /&gt;
Par défaut les rôles composition sont gérés en remplacement, pour contrôler le mode de gestion des rôles utilisez un élément de contrôle &amp;quot;$&amp;quot; pour le rôle :&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par remplacement des composants :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
            ... Site3 has been added, other sites has been removed.&lt;br /&gt;
            ... There is one site left in the list&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par ajout de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;create&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SITE3&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;site3 de syfre1&amp;quot;,&lt;br /&gt;
         &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
            &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue Mogador&amp;quot;,&lt;br /&gt;
            &amp;quot;ville&amp;quot;:&amp;quot;Paris&amp;quot;,&lt;br /&gt;
            &amp;quot;codePostal&amp;quot;:&amp;quot;75008&amp;quot;,&lt;br /&gt;
            &amp;quot;pays&amp;quot;:{&lt;br /&gt;
               &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
               &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$key&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E30019')&amp;quot;,&lt;br /&gt;
            &amp;quot;stamp&amp;quot;: &amp;quot;000001710000002A&amp;quot;,&lt;br /&gt;
            ....&lt;br /&gt;
            &amp;quot;sitesList&amp;quot;: [&lt;br /&gt;
                ... Site3 has been added, other sites are not affected&lt;br /&gt;
                ... There is one site more in the list&lt;br /&gt;
            }&lt;br /&gt;
           ]&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Modification du rôle par mise à jour de composant :'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Request :&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;:{&lt;br /&gt;
     &amp;quot;sitesList:[&amp;quot;update&amp;quot;]&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$key&amp;quot;:&amp;quot;9D33A23CFA6A005500F6000001E30019&amp;quot;, &lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;Site maj&amp;quot;,&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!contrôle&lt;br /&gt;
!action&lt;br /&gt;
|-&lt;br /&gt;
|create&lt;br /&gt;
|Les nouvelles ressources sont ajoutées au rôle&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|Les ressources existantes dans le rôle sont mise à jour&lt;br /&gt;
|-&lt;br /&gt;
|delete&lt;br /&gt;
|Les ressources existantes et non présentes dans la requête sont supprimées&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La valeur par défaut est &amp;quot;create&amp;quot;,&amp;quot;update&amp;quot;,&amp;quot;delete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Modification des attributs privés===&lt;br /&gt;
Par défaut les attributs privés sont modifiés sur le niveau de partage correspondant au périmètre société, pour contrôler le niveau de partage des attributs privés utilisez un élément de contrôle $sharePrivateLevel.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!sharePrivateLevel&lt;br /&gt;
!Périmètre de définition&lt;br /&gt;
|-&lt;br /&gt;
|absent&lt;br /&gt;
|Périmètre courant de l'objet&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Dossier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Activité&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Société&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le périmètre courant de l'objet dépend de l'état de l'objet. Par exemple, si l'objet est de niveau activité et n'a pas de propriété défini pour la société courante, le périmètre courant sera l'activité, mais si l'objet a des propriétés définies pour la société courante alors le périmètre courant sera la société. Ne pas définir explicitement le niveau de partage peut amener à des ambiguïtés.}}&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour les sociétés de l'activité du Tiers (le tiers n'a pas de propriété défini pour la société S3):'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CHQ'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Modification de la valeur de l'attribut privé pour la société S3 :'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT http://localhost:8080/sdata/S3/gentiers/ttiers(code eq 'ABI 00007')&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$sharePrivateLevel&amp;quot;:2,&lt;br /&gt;
&amp;quot;modeReglementDecaissement&amp;quot;:{&amp;quot;$where&amp;quot;:&amp;quot;code eq 'CBB'&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suppression de ressource (DELETE)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE http://localhost:8080/sdata/gentiers/ttiers('9D33A23CFA6A005500F6000001E20018')&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opération sur une ressource (POST)==&lt;br /&gt;
&lt;br /&gt;
Les opérations des ressources correspondent aux méthodes publiques de cette ressource.&lt;br /&gt;
&lt;br /&gt;
===Méthode d'instance de ressource===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/wfclassea('B5A28A92EB0C00020010000000DB0006')/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Méthode de classe de ressource, ou méthode de classe non persistante===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/testmethode&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;pString&amp;quot;:&amp;quot;value1&amp;quot;,&lt;br /&gt;
&amp;quot;pInteger&amp;quot;:1,&lt;br /&gt;
&amp;quot;pFloat&amp;quot;:1.2,&lt;br /&gt;
&amp;quot;pEnum&amp;quot;:1,&lt;br /&gt;
&amp;quot;pBoolean&amp;quot;:false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;pString:value1 pInteger:1 pBoolean:false pFloat:1,2 pEnum:1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Passage des paramètres===&lt;br /&gt;
Les paramètres sont passés par nom et valeur.&lt;br /&gt;
&lt;br /&gt;
Les types de paramètres et de retour supportés sont :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type&lt;br /&gt;
!Exemple&lt;br /&gt;
|-&lt;br /&gt;
|Chaîne&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;xxx&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Entier&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Boolean&lt;br /&gt;
|&amp;quot;p&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
|Flottant&lt;br /&gt;
|&amp;quot;p&amp;quot;:1.1&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|&amp;quot;p&amp;quot;:&amp;quot;2020-12-25T01:01:01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Enuméré (par valeur)&lt;br /&gt;
|&amp;quot;p&amp;quot;:1&lt;br /&gt;
|-&lt;br /&gt;
|Liste d'objets&lt;br /&gt;
|&amp;quot;p&amp;quot;:[ {$key:&amp;quot;key&amp;quot;, $uuid:&amp;quot;uuid&amp;quot;, $where:&amp;quot;expression&amp;quot;}, ...],&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|Les références des objets passés dans des listes peuvent être définies par clé ($key), identifiant appelant ($uuid) ou expression ($where)&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;paramList&amp;quot;:[&lt;br /&gt;
    {&amp;quot;$key&amp;quot;:&amp;quot;B5A28A92EB0C00020010000001F500A1&amp;quot;},&lt;br /&gt;
    {&amp;quot;$where&amp;quot;:&amp;quot;uneChaine like 'cN%'&amp;quot;}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Résultat de type ressource===&lt;br /&gt;
Lorsque l'opération retourne un objet ou une liste d'objets ceux-ci sont retournés sous forme de ressource.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//class Function GetWFClasseA(const iCode:string):WFClasseA;&lt;br /&gt;
begin&lt;br /&gt;
  Result := WFClasseA.Find('(unCode = %1)','unCode',True,[iCode]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassea&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:41:41.015Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Class Function GetWFClasseA(const iCodeLike:string):WFClasseAList;&lt;br /&gt;
begin&lt;br /&gt;
 Result := WFClasseA.CreateListWhere('(unCode like %1)','','unCode',True,-1,[iCodeLike]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/testapi/getwfclassealist&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/testsyfrewf/&amp;quot;,&lt;br /&gt;
        &amp;quot;$title&amp;quot;: &amp;quot;WFClasseA - -&amp;quot;,&lt;br /&gt;
        &amp;quot;$updated&amp;quot;: &amp;quot;2021-01-29T12:49:14.061Z&amp;quot;,&lt;br /&gt;
        &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B40002-0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000028E00000001&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaaky&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;une chaine 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 1&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;WFClasseCList&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C000200140000020E000B&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020014000002100079&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-0&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C0002001400000210007A&amp;quot;,&lt;br /&gt;
                        &amp;quot;uneChaine&amp;quot;: &amp;quot;Title 1-1&amp;quot;,&lt;br /&gt;
                        &amp;quot;unEntier&amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4000E-0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000025000000025&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaalb&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 2,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Etat 2&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;$key&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A&amp;quot;,&lt;br /&gt;
                &amp;quot;$etag&amp;quot;: &amp;quot;B5A28A92EB0C00020010000001B4001A-0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;stamp&amp;quot;: &amp;quot;0000018B0000001A&amp;quot;,&lt;br /&gt;
                &amp;quot;Caption&amp;quot;: &amp;quot;Title 1&amp;quot;,&lt;br /&gt;
                &amp;quot;unBool&amp;quot;: false,&lt;br /&gt;
                &amp;quot;unCode&amp;quot;: &amp;quot;A1&amp;quot;,&lt;br /&gt;
                &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;aaaaaaaaaale&amp;quot;,&lt;br /&gt;
                    &amp;quot;CounterName&amp;quot;: &amp;quot;MonCompteur&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unDouble&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;uneChaine&amp;quot;: &amp;quot;U1&amp;quot;,&lt;br /&gt;
                &amp;quot;unEntier&amp;quot;: 10,&lt;br /&gt;
                &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
                    &amp;quot;title&amp;quot;: &amp;quot;Initial&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;unStatus&amp;quot;: 0&lt;br /&gt;
            },&lt;br /&gt;
            ......&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialisation de la ressource===&lt;br /&gt;
Il est possible d'initialiser la ressource avant d'exécuter la méthode, par exemple pour un processus :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  TmyProcessus = class&lt;br /&gt;
  public&lt;br /&gt;
   procedure Execute(p:string);&lt;br /&gt;
   property attString:string;&lt;br /&gt;
   property attInt:Integer;&lt;br /&gt;
   property attRef:TRefClass;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/testsyfrewf/myProcessus/execute&lt;br /&gt;
Request:&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;$resource&amp;quot;:{&lt;br /&gt;
 &amp;quot;attString&amp;quot;:&amp;quot;value 1&amp;quot;,&lt;br /&gt;
 &amp;quot;attInt&amp;quot;:100,&lt;br /&gt;
 &amp;quot;attRef&amp;quot;:{&amp;quot;$url&amp;quot;:&amp;quot;TRefClass('xxx')&amp;quot;},&lt;br /&gt;
},&lt;br /&gt;
&amp;quot;p&amp;quot;:&amp;quot;value&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
Response: 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requête Batch (POST $batch)==&lt;br /&gt;
Une requête Batch permet de réaliser plusieurs opérations de type GET,POST/PUT/DELETE/EXEC en une seule fois.&lt;br /&gt;
&lt;br /&gt;
Une requête Batch contient un tableau de ressources, pour chaque ressource l'action et l'uri doivent être précisées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://.../sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;POST&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers&amp;quot;,&lt;br /&gt;
         &amp;quot;code&amp;quot;:&amp;quot;SYFRE2&amp;quot;,&lt;br /&gt;
         &amp;quot;caption&amp;quot;:&amp;quot;syfre 2&amp;quot;,&lt;br /&gt;
         &amp;quot;sitesList&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;code&amp;quot;:&amp;quot;SITE1&amp;quot;,&lt;br /&gt;
               &amp;quot;caption&amp;quot;:&amp;quot;site2 de syfre2&amp;quot;,&lt;br /&gt;
               &amp;quot;adresse&amp;quot;:{&lt;br /&gt;
                  &amp;quot;nomRueVoie&amp;quot;:&amp;quot;rue de la pompe&amp;quot;,&lt;br /&gt;
                  &amp;quot;ville&amp;quot;:&amp;quot;Clichy&amp;quot;,&lt;br /&gt;
                  &amp;quot;codePostal&amp;quot;:&amp;quot;92100&amp;quot;,&lt;br /&gt;
                  &amp;quot;pays&amp;quot;:{&lt;br /&gt;
                     &amp;quot;$where&amp;quot;:&amp;quot;codeISO = 'FRA'&amp;quot;,&lt;br /&gt;
                     &amp;quot;$orderby&amp;quot;:&amp;quot;codeISO&amp;quot;&lt;br /&gt;
                  }&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|Le format d'url complet de $Batch est https://hostname/service/server/sdata/l1000/-/-/$batch}}&lt;br /&gt;
&lt;br /&gt;
===Gestion de la transaction dans un batch===&lt;br /&gt;
Par défaut les opérations réalisées sont unitaires (une transaction par ressource).&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une opération Batch atomique (une seule transaction longue) utilisez un élément de contrôle transaction :&lt;br /&gt;
&lt;br /&gt;
Lorsque l'opération est atomique la réponse contient un élément $batch indiquant le statut de l'opération.&lt;br /&gt;
&lt;br /&gt;
Le code de retour http est le code de retour de la dernière opération réalisée.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$&amp;quot;: {&amp;quot;$transaction&amp;quot;:[&amp;quot;atomic&amp;quot;]},&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F6000000285DAE')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:7200,&amp;quot;CodeDevise&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;PUT&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
         &amp;quot;$uuid&amp;quot;:&amp;quot;2&amp;quot;,&lt;br /&gt;
         &amp;quot;capital&amp;quot;:{&amp;quot;value&amp;quot;:1000,&amp;quot;CodeDevise&amp;quot;:&amp;quot;EUR&amp;quot;}&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 401&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;PUT&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
            &amp;quot;$etag&amp;quot;: &amp;quot;9D33A23CFA6A005500F6000000285DAE-0000018C00000001&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 410,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;gentiers/ttiers('9D33A23CFA6A005500F600000023048C')&amp;quot;,&lt;br /&gt;
            &amp;quot;$&amp;quot;: {&lt;br /&gt;
                &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                        &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                        &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;$batch&amp;quot;: {&lt;br /&gt;
        &amp;quot;$httpStatus&amp;quot;: 400,&lt;br /&gt;
        &amp;quot;$httpMessage&amp;quot;: &amp;quot;ROLLBACK&amp;quot;,&lt;br /&gt;
        &amp;quot;$&amp;quot;: {&lt;br /&gt;
            &amp;quot;$diagnoses&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,&lt;br /&gt;
                    &amp;quot;message&amp;quot;: &amp;quot;Already Deleted&amp;quot;,&lt;br /&gt;
                    &amp;quot;sdataCode&amp;quot;: &amp;quot;ApplicationDiagnosis&amp;quot;,&lt;br /&gt;
                    &amp;quot;entry&amp;quot;: {&lt;br /&gt;
                        &amp;quot;number&amp;quot;: 2,&lt;br /&gt;
                        &amp;quot;uuid&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''$transaction :'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Commande&lt;br /&gt;
!Action&lt;br /&gt;
|-&lt;br /&gt;
|atomic&lt;br /&gt;
|Démarre une transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|flush&lt;br /&gt;
|Force un batch de la transaction longue&lt;br /&gt;
|-&lt;br /&gt;
|commit&lt;br /&gt;
|Valide la transaction longue&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|L'élément de contrôle de transaction peut être placé au niveau d'un ordre du lot.}}&lt;br /&gt;
&lt;br /&gt;
===Execution de méthode dans un batch===&lt;br /&gt;
Utiliser le verbe EXEC pour exécuter une méthode &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://localhost:8080/sdata/$batch&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;$resources&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;$httpMethod&amp;quot;:&amp;quot;EXEC&amp;quot;,&lt;br /&gt;
         &amp;quot;$url&amp;quot;:&amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
         &amp;quot;$resource&amp;quot;:{&lt;br /&gt;
            &amp;quot;uneChaine&amp;quot;:&amp;quot;value 1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;p&amp;quot;:&amp;quot;value 2&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$baseUrl&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/-/-/&amp;quot;,&lt;br /&gt;
    &amp;quot;$title&amp;quot;: &amp;quot;$batch - -&amp;quot;,&lt;br /&gt;
    &amp;quot;$resources&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;$httpStatus&amp;quot;: 200,&lt;br /&gt;
            &amp;quot;$httpMethod&amp;quot;: &amp;quot;POST&amp;quot;,&lt;br /&gt;
            &amp;quot;$httpMessage&amp;quot;: &amp;quot;Executed&amp;quot;,&lt;br /&gt;
            &amp;quot;$url&amp;quot;: &amp;quot;testsyfrewf/wfprocessus/testmethod&amp;quot;,&lt;br /&gt;
            &amp;quot;$uuid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: &amp;quot;value 1 value 2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Schéma d'une ressource (GET $schema)==&lt;br /&gt;
Le schéma d'une ressource retourne la structure de la classe.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/testsyfrewf/wfclassea/$schema&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Libellé de la Classe A&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;unBool&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Bool&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un code&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unCompteur&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDerive&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un dérivé&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unDouble&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;double&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un double&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEmail&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un email&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Entier&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unEtat&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;integer&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Un Etat&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;unStatus&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Statut de l'objet (Panel)&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseBRef&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
                &amp;quot;$ref&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseB/$schema&amp;quot;,&lt;br /&gt;
                &amp;quot;$relationship&amp;quot;: &amp;quot;reference&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Référence B&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;WFClasseCList&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;array&amp;quot;,&lt;br /&gt;
            &amp;quot;item&amp;quot;: {&lt;br /&gt;
                &amp;quot;title&amp;quot;: &amp;quot;Classe C&amp;quot;,&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;uneChaine&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;une chaine&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    &amp;quot;unEntier&amp;quot;: {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
                        &amp;quot;title&amp;quot;: &amp;quot;un entier&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/testsyfrewf/-/WFClasseA/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu de la réponse peut être configurée avec le paramètre &amp;quot;select&amp;quot;, à défaut toutes les informations sont retournées.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|extensions&lt;br /&gt;
|Retourne uniquement les attributs issus d'extension&lt;br /&gt;
|-&lt;br /&gt;
|properties&lt;br /&gt;
|Retourne la liste de tous les attributs&lt;br /&gt;
|-&lt;br /&gt;
|selfProperties&lt;br /&gt;
|Retourne uniquement les attributs de la classe elle même&lt;br /&gt;
|-&lt;br /&gt;
|operations&lt;br /&gt;
|Retourne les opérations de la classe&lt;br /&gt;
|-&lt;br /&gt;
|compositions&lt;br /&gt;
|Retourne le schéma des classes composants &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple : Retrouver uniquement les attributs d'extension d'une classe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/ttiers/$schema?select=extensions&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Tiers&amp;quot;,&lt;br /&gt;
    &amp;quot;stereotype&amp;quot;: &amp;quot;persistent&amp;quot;,&lt;br /&gt;
    &amp;quot;extensions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;class&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Extension de TTiers&amp;quot;,&lt;br /&gt;
            &amp;quot;package&amp;quot;: &amp;quot;esmPackage&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;esmCode&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
            &amp;quot;extension&amp;quot;: &amp;quot;TTiers_esmPackage&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;un code esm&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/gentiers/TTiers/$schema&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle de ressource (GET $template)==&lt;br /&gt;
Le modèle de ressource retourne une ressource initialisée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://localhost:8080/sdata/gcimport/TImportContratCommercial/$template&lt;br /&gt;
Response : 200 OK&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;$url&amp;quot;: &amp;quot;http://localhost:8080/sdata/l1000/gcimport/-/TImportContratCommercial&amp;quot;,&lt;br /&gt;
    &amp;quot;stamp&amp;quot;: &amp;quot;000001D900000001&amp;quot;,&lt;br /&gt;
    &amp;quot;acompte&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;affaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;budget&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;Caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;commandeEngagement&amp;quot;: false,&lt;br /&gt;
    &amp;quot;commercial&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;coursDevise&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;CodeDevise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;Date&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
        &amp;quot;TCConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;TCValue&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;RPConv&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;RPValue&amp;quot;: 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coursNegocie&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dateCommande&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;dateLivraison&amp;quot;: &amp;quot;1899-12-30T00:00:00.000Z&amp;quot;,&lt;br /&gt;
    &amp;quot;devise&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI1&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI2&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI3&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI4&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;donneeEDI5&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;echeancement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;etablissement&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTaxe&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;exonereTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;gestionTransport&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Automatique&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;immobilisation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;B&amp;amp;S&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;ImportCCDetailList&amp;quot;: [],&lt;br /&gt;
    &amp;quot;importeGMAO&amp;quot;: false,&lt;br /&gt;
    &amp;quot;importerRemisePied&amp;quot;: false,&lt;br /&gt;
    &amp;quot;ImportSiteAdresse&amp;quot;: {},&lt;br /&gt;
    &amp;quot;incoterm&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;MentionExonerationTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;posteBudgetaire&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;pourcentAcompte&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;pourcentRemisePied&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;Decimales&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;reference&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;referenceMandat&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;regimeTVA&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiers&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;roleTiersLivre&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;SessionImportation&amp;quot;: {},&lt;br /&gt;
    &amp;quot;typeFacturation&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;HT&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SData|Point d'accès et url SData]]&lt;br /&gt;
* [[Gestion des jetons d'authentification (Administration)|Gestion des jetons d'authentification]]&lt;br /&gt;
* [[API Json (SData)|API SData en mode json]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi les exemples suivants : &lt;br /&gt;
&lt;br /&gt;
* [[Utilisation du contrôleur de partage (API)|Utilisation du contrôleur de partage]]&lt;br /&gt;
* [[Interrogation des écritures (API)|Interrogation des écritures avec l'API SData]]&lt;br /&gt;
* [[Interrogation des fournisseurs (API)|Interrogation des fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Creation d'un fournisseur (API)|Création d'un fournisseur avec l'API SData]]&lt;br /&gt;
* [[Import_de commandes_(API)|Import de commandes avec l'API SData]]&lt;br /&gt;
* [[Import_d%27écritures_(API)|Import d'écritures avec l'API SData]]&lt;br /&gt;
* [[Gestion des réceptions fournisseurs (API)|Gestion des réceptions fournisseurs avec l'API SData]]&lt;br /&gt;
* [[Facturation d'un bon de livraison (API)|Facturation d'un bon de livraison avec l'API SData]]&lt;br /&gt;
* [[Creation_d%27un_Tiers_et_son_compte_bancaire_(API)|Creation_d'un Tiers et son compte bancaire (API)]]&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-02-26T15:39:09Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Paquet de classes non persistantes ==&lt;br /&gt;
&lt;br /&gt;
Les méthodes Json membres de classes non persistantes peuvent aussi être appelées.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez spécifier le nom de la classe dans l'URL d'appel de la méthode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetAPI/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-4.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
&lt;br /&gt;
* [[Ressource (sdata)|API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-02-26T15:38:22Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Paquet de classes non persistantes ==&lt;br /&gt;
&lt;br /&gt;
Les méthodes Json membres de classes non persistantes peuvent aussi être appelées.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez spécifier le nom de la classe dans l'URL d'appel de la méthode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetAPI/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-4.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-4.png</id>
		<title>Fichier:Api-json-4.png</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-4.png"/>
				<updated>2026-02-26T15:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-3.png</id>
		<title>Fichier:Api-json-3.png</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-3.png"/>
				<updated>2026-02-26T15:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)</id>
		<title>API Json (SData)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/API_Json_(SData)"/>
				<updated>2026-02-26T15:27:21Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « ==Prérequis==  L'API Json est une variante de l'API SData en mode ressource  Les informations de connexion et les schémas d'URL sont identiques.  =... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Prérequis==&lt;br /&gt;
&lt;br /&gt;
L'API Json est une variante de [[Ressource (sdata)|l'API SData en mode ressource]]&lt;br /&gt;
&lt;br /&gt;
Les informations de connexion et les schémas d'URL sont identiques.&lt;br /&gt;
&lt;br /&gt;
==Méthode JSON==&lt;br /&gt;
&lt;br /&gt;
Dans ce mode, au lieu de manipuler des ressources retournées en xml ou json, le client appele des méthodes en passant en paramètre un payload json et en recevant en retour une responde json.&lt;br /&gt;
&lt;br /&gt;
La signature de ces méthodes doit être :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  procedure foo(req:TJson; out resp:TJson);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces méthodes peuvent être membre de n'importe quelle classe non persistante, ou d'une classe support d'un paquet de service local.&lt;br /&gt;
&lt;br /&gt;
==Paquet de service local==&lt;br /&gt;
&lt;br /&gt;
L'utilisation d'un paquet de service local permet d'appeler directement les méthodes de la classe support du paquet.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez appeler directement la méthode myMethodJson() sans explicitement indiquer la classe support :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:8080/sdata/dsmPaquetDeService/myMethodJson&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:api-json-2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SData]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-2.png</id>
		<title>Fichier:Api-json-2.png</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-2.png"/>
				<updated>2026-02-26T15:23:26Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-1.png</id>
		<title>Fichier:Api-json-1.png</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Fichier:Api-json-1.png"/>
				<updated>2026-02-26T15:19:21Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Gestionnaire_de_Service_1000</id>
		<title>Gestionnaire de Service 1000</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Gestionnaire_de_Service_1000"/>
				<updated>2026-02-18T18:43:29Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Contexte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexte==&lt;br /&gt;
Dans le cadre de l'utilisation du service dans le cloud, le contrôleur de service n'est plus utilisé.&lt;br /&gt;
&lt;br /&gt;
Afin de mettre à jour le service, un nouvel exécutable est utilisé, le gestionnaire de service. &lt;br /&gt;
&lt;br /&gt;
Ses deux uniques fonctions sont &lt;br /&gt;
* De redémarrer le service si celui s'arrête de façon inopinée.&lt;br /&gt;
* De mettre à  jour le service si une nouvelle version est présente dans le répertoire &amp;quot;install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ainsi, le service FRP 1000 peut se mettre à jour en téléchargeant la mise à jour et en s'arrêtant. Le gestionnaire se charge de remplacer la version courante et de redémarrer.&lt;br /&gt;
&lt;br /&gt;
{{tip|Dans un cluster chaque noeud se met à jour independemment}}&lt;br /&gt;
&lt;br /&gt;
{{tip|Le gestionnaire de service ne permet de gèrer l'exécution que d'un seul service par répertoire, si vous démarrez plusieurs services sur la même machine vous devez déployer un répertoire containeur par service.}}&lt;br /&gt;
&lt;br /&gt;
===Installation avec le gestionnaire de service===&lt;br /&gt;
&lt;br /&gt;
Arborescence des fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;répertoire du gestionnaire&amp;gt;&lt;br /&gt;
  serviceL1000Loader.exe&lt;br /&gt;
  &amp;lt;server&amp;gt;&lt;br /&gt;
    serviceL1000.exe&lt;br /&gt;
    ... Tous les fichiers du container ...&lt;br /&gt;
    &amp;lt;install&amp;gt;&lt;br /&gt;
      fichiers temporaires des fichiers à installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Nouvelle installation===&lt;br /&gt;
&lt;br /&gt;
Le gestionnaire de service s'installe via l'admin manager.&lt;br /&gt;
&lt;br /&gt;
==Installation avec migration==&lt;br /&gt;
&lt;br /&gt;
* Sauvegardez le fichier serveur .ini&lt;br /&gt;
* Désinstallez le service par Windows&lt;br /&gt;
* Installez le loader via le l'admin en ligne de commande&lt;br /&gt;
* Recopiez le fichier .ini dans le répertoire server.&lt;br /&gt;
&lt;br /&gt;
{{tip|En mode cluster il est nécessaire de réenregistrer le gestionnaire de service manuellement en passant les paramètres adéquats sur la ligne de commande}} &lt;br /&gt;
&lt;br /&gt;
==Installation manuelle==&lt;br /&gt;
'''Désenregistrement des services Windows :'''&lt;br /&gt;
&lt;br /&gt;
* Désenregistrez le service controlleur&lt;br /&gt;
* Désenregistrez les services 1000 en notant les paramètres passés sur leur ligne de commande&lt;br /&gt;
&lt;br /&gt;
'''Création de la structure de répertoire :'''&lt;br /&gt;
&lt;br /&gt;
* Créez un répertoire au même niveau que le répertoire du service existant.&lt;br /&gt;
* Copiez l'exécutable serviceL1000Loader.exe&lt;br /&gt;
* Créez un répertoire &amp;quot;server&amp;quot;&lt;br /&gt;
* Copiez l'ancien répertoire du service dans ce répertoire &amp;quot;server&amp;quot;&lt;br /&gt;
* Créez un répertoire &amp;quot;install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Enregistrement des gestionnaires en service Windows :'''&lt;br /&gt;
&lt;br /&gt;
* Enregistrer le serviceL1000Loader autant fois que de serviceL1000 démarrés avec même les paramètres que les serviceL1000.&lt;br /&gt;
&lt;br /&gt;
{{warning|L'utilisation du gestionnaire est incompatible avec celle du contrôleur, vous devez désinstaller le contrôleur et configurer les services manuellement dans le fichier de configuration.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version1000]]&lt;br /&gt;
[[Category:Serveur]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)</id>
		<title>SQL Server 2025 (rdbms)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)"/>
				<updated>2026-02-07T08:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Mode Optimized locking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Mode Optimized locking===&lt;br /&gt;
&lt;br /&gt;
SQL Serveur 2025 supporte une nouvelle option de gestion des verrous qui peut permettre dans certain cas de réduire le nombre de verrous posés durant une transaction et de limiter l'escalation de verrous vers le niveau Table .&lt;br /&gt;
&lt;br /&gt;
Ce mode est disponible sur toutes les éditions sauf Express.&lt;br /&gt;
&lt;br /&gt;
Ce mode n'est pas actif par défaut sur la version On Premise.&lt;br /&gt;
&lt;br /&gt;
'''Pour activer l'optimisation de verrous'''&lt;br /&gt;
&lt;br /&gt;
Activer le mode snapshot avec READ_COMMITTED_SNAPSHOT : &lt;br /&gt;
* Déconnecter tous les utilisateurs&lt;br /&gt;
* Exécuter l’ordre suivant :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;
&lt;br /&gt;
Activer le mode Accelerated Database Recovery :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET ACCELERATED_DATABASE_RECOVERY = ON;&lt;br /&gt;
&lt;br /&gt;
Activer le mode optimisation des verrous :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET OPTIMIZED_LOCKING = ON&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que le mode est actif :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT database_id,&lt;br /&gt;
       name,&lt;br /&gt;
       is_accelerated_database_recovery_on,&lt;br /&gt;
       is_read_committed_snapshot_on,&lt;br /&gt;
       is_optimized_locking_on&lt;br /&gt;
FROM sys.databases&lt;br /&gt;
WHERE name = ....;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SQL_Server_2005_(rdbms)|SQL Server 2005, mode snapshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Base de données]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)</id>
		<title>SQL Server 2025 (rdbms)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)"/>
				<updated>2026-02-07T08:33:31Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Mode Optimized locking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Mode Optimized locking===&lt;br /&gt;
&lt;br /&gt;
SQL Serveur 2025 supporte une nouvelle option de gestion des verrous qui peut permettre dans certain cas de réduire le nombre de verrous posés durant une transaction et de limiter l'escalation de verrous vers le niveau Table .&lt;br /&gt;
&lt;br /&gt;
Ce mode est disponible sur toutes les éditions sauf Express.&lt;br /&gt;
&lt;br /&gt;
Ce mode n'est pas actif par défaut sur la version On Premise.&lt;br /&gt;
&lt;br /&gt;
'''Pour activer l'optimisation de verrous'''&lt;br /&gt;
&lt;br /&gt;
Activer le mode snapshot READ_COMMITTED_SNAPSHOT : &lt;br /&gt;
* Déconnecter tous les utilisateurs&lt;br /&gt;
* Exécuter l’ordre suivant :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;
&lt;br /&gt;
Activer le mode Accelerated Database Recovery :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET ACCELERATED_DATABASE_RECOVERY = ON;&lt;br /&gt;
&lt;br /&gt;
Activer le mode optimisation des verrous :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET OPTIMIZED_LOCKING = ON&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que le mode est actif :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT database_id,&lt;br /&gt;
       name,&lt;br /&gt;
       is_accelerated_database_recovery_on,&lt;br /&gt;
       is_read_committed_snapshot_on,&lt;br /&gt;
       is_optimized_locking_on&lt;br /&gt;
FROM sys.databases&lt;br /&gt;
WHERE name = ....;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SQL_Server_2005_(rdbms)|SQL Server 2005, mode snapshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Base de données]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/SQL_Server_2005_(rdbms)</id>
		<title>SQL Server 2005 (rdbms)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/SQL_Server_2005_(rdbms)"/>
				<updated>2026-02-07T08:32:39Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Nouveau mode d’isolation transactionnelle===&lt;br /&gt;
SQL Serveur supporte depuis la version 2005 un nouveau mode d’isolation transactionnel appelé « Snapshot ».&lt;br /&gt;
&lt;br /&gt;
Ce mode, identique au mode de fonctionnement d’Oracle, apporte plusieurs avantages : &lt;br /&gt;
* Les lectures ne sont pas verrouillées par les mises à jour. Ce point permet d’améliorer grandement la disponibilité de l’application lorsque des traitements effectuant de nombreuse mise à jour sont en cours d’exécution.&lt;br /&gt;
* Les éditions qui ont besoins d’une cohérence des lectures ne sont pas bloquantes pour les autres utilisateurs. &lt;br /&gt;
Les inconvénients du mode Snapshot sont : &lt;br /&gt;
* Les mises à jour peuvent être ralenties du fait de la gestion du suivi de version des enregistrements.&lt;br /&gt;
* Chaque enregistrement de la base nécessite 16 caractères supplémentaires, ce qui peut augmenter légèrement la taille des bases de données&lt;br /&gt;
* Les lectures utilisant le suivi de version nécessite de réaliser des « photos » de la base de données qui sont stockées dans la base de données temporaire du serveur. Celle-ci doit être correctement et largement dimensionnée.&lt;br /&gt;
* Certaine tournure de code peuvent ne plus fonctionner du fait que les lectures ne peuvent pas voir les données non validées. &lt;br /&gt;
&lt;br /&gt;
===Pilote SQL Serveur===&lt;br /&gt;
&lt;br /&gt;
Le pilote SQL Serveur supporte le nouveau mode SnapShot sans toutefois l’imposer :&lt;br /&gt;
&lt;br /&gt;
* Si le mode SnapShot est activé dans la base de données il est utilisé, sinon il n’est pas utilisé.&lt;br /&gt;
* Lors de la création d’une nouvelle base de données le mode SnapShot est activé.&lt;br /&gt;
&lt;br /&gt;
===Activer le mode SnapShot sur une base existante.===&lt;br /&gt;
Pour activer le mode SnapShot sur une base existante : &lt;br /&gt;
# Déconnecter tous les utilisateurs&lt;br /&gt;
# Exécuter l’ordre suivant :&lt;br /&gt;
# ALTER DATABASE MaBasedeDonnee SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que la base est en mode SnapShot :&lt;br /&gt;
&lt;br /&gt;
 SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= 'YourDatabase'&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SQL_Server_2025_(rdbms)|SQL Server 2025, optimized locking]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Base de données]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)</id>
		<title>SQL Server 2025 (rdbms)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)"/>
				<updated>2026-02-07T08:31:48Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Mode Optimized locking===&lt;br /&gt;
&lt;br /&gt;
SQL Serveur 2025 supporte une nouvelle option de gestion des verrous qui peut permettre dans certain cas de réduire le nombre de verrous posés durant une transaction et de limiter l'escalation de verrous vers le niveau Table .&lt;br /&gt;
&lt;br /&gt;
Ce mode est disponible sur toutes les éditions sauf Express.&lt;br /&gt;
&lt;br /&gt;
Ce mode n'est pas actif par défaut sur la version On Premise.&lt;br /&gt;
&lt;br /&gt;
'''Pour activer l'optimisation de verrous'''&lt;br /&gt;
&lt;br /&gt;
Activer le mode READ_COMMITTED_SNAPSHOT : &lt;br /&gt;
* Déconnecter tous les utilisateurs&lt;br /&gt;
* Exécuter l’ordre suivant :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;
&lt;br /&gt;
Activer le mode Accelerated Database Recovery :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET ACCELERATED_DATABASE_RECOVERY = ON;&lt;br /&gt;
&lt;br /&gt;
Activer le mode optimisation des verrous :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET OPTIMIZED_LOCKING = ON&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que le mode est actif :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT database_id,&lt;br /&gt;
       name,&lt;br /&gt;
       is_accelerated_database_recovery_on,&lt;br /&gt;
       is_read_committed_snapshot_on,&lt;br /&gt;
       is_optimized_locking_on&lt;br /&gt;
FROM sys.databases&lt;br /&gt;
WHERE name = ....;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[SQL_Server_2005_(rdbms)|SQL Server 2005, mode snapshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Base de données]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)</id>
		<title>SQL Server 2025 (rdbms)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/SQL_Server_2025_(rdbms)"/>
				<updated>2026-02-07T08:29:24Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « ===Mode Optimized locking===  SQL Serveur 2025 supporte une nouvelle option de gestion des verrous qui peut permettre dans certain cas de réduire le nombre de verrous pos... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Mode Optimized locking===&lt;br /&gt;
&lt;br /&gt;
SQL Serveur 2025 supporte une nouvelle option de gestion des verrous qui peut permettre dans certain cas de réduire le nombre de verrous posés durant une transaction et de limiter l'escalation de verrous vers le niveau Table .&lt;br /&gt;
&lt;br /&gt;
Ce mode est disponible sur toutes les éditions sauf Express.&lt;br /&gt;
&lt;br /&gt;
Ce mode n'est pas actif par défaut sur la version On Premise.&lt;br /&gt;
&lt;br /&gt;
'''Pour activer l'optimisation de verrous'''&lt;br /&gt;
&lt;br /&gt;
Activer le mode READ_COMMITTED_SNAPSHOT : &lt;br /&gt;
* Déconnecter tous les utilisateurs&lt;br /&gt;
* Exécuter l’ordre suivant :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;
&lt;br /&gt;
Activer le mode Accelerated Database Recovery :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET ACCELERATED_DATABASE_RECOVERY = ON;&lt;br /&gt;
&lt;br /&gt;
Activer le mode optimisation des verrous :&lt;br /&gt;
&lt;br /&gt;
* ALTER DATABASE ... SET OPTIMIZED_LOCKING = ON&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que le mode est actif :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT database_id,&lt;br /&gt;
       name,&lt;br /&gt;
       is_accelerated_database_recovery_on,&lt;br /&gt;
       is_read_committed_snapshot_on,&lt;br /&gt;
       is_optimized_locking_on&lt;br /&gt;
FROM sys.databases&lt;br /&gt;
WHERE name = ....;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Base de données]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/OnCreateEventId_(class)</id>
		<title>OnCreateEventId (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/OnCreateEventId_(class)"/>
				<updated>2026-01-09T13:48:28Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function OnCreateEventID():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retourne l'identifiant de l'évènement de création d'un objet de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  MyClass = class(TdbObject)&lt;br /&gt;
   //...&lt;br /&gt;
   property CanStart:boolean; &lt;br /&gt;
  end;  &lt;br /&gt;
&lt;br /&gt;
  MyTask = class(TitTask)&lt;br /&gt;
    Function Execute():boolean;&lt;br /&gt;
    Function doExecute(obj:TitObject):boolean;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Function MyTask.doExecute(obj:TitObject):boolean;&lt;br /&gt;
begin&lt;br /&gt;
  if obj is MyClass then&lt;br /&gt;
   begin&lt;br /&gt;
     if (obj as MyClass).CanStart then &lt;br /&gt;
      begin&lt;br /&gt;
        AddMessage(Format('object %s ...',[(obj as MyClass).Caption])); &lt;br /&gt;
        // do something ...  &lt;br /&gt;
      end&lt;br /&gt;
      else&lt;br /&gt;
      begin&lt;br /&gt;
        AddMessage(Format('objet %s ne peut pas ...'),[(obj as MyClass).Caption])); &lt;br /&gt;
      end; &lt;br /&gt;
     Result := True;&lt;br /&gt;
   end&lt;br /&gt;
   else Result := False; &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function MyTask.Execute():boolean;&lt;br /&gt;
var aMsg:TdbmQueueMessage; &lt;br /&gt;
begin&lt;br /&gt;
  Result := False; &lt;br /&gt;
  aMsg := ReceivedMsg as TdbmQueueMessage;&lt;br /&gt;
  if Assigned(aMsg) then&lt;br /&gt;
   begin&lt;br /&gt;
     if Assigned(SourceObject) then&lt;br /&gt;
      begin&lt;br /&gt;
        Result := doExecute(SourceObject);                  &lt;br /&gt;
       end; &lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//procedure RegisterTasks;&lt;br /&gt;
begin&lt;br /&gt;
  MyClass.RegisterOnCreateEvent();&lt;br /&gt;
&lt;br /&gt;
  MyTask.Subscribe(&lt;br /&gt;
    MyClass.OnCreateEventId(),&lt;br /&gt;
    [],[]&lt;br /&gt;
  );&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;
* [[RegisterOnCreateEvent_(class)|RegisterOnCreateEvent]]&lt;br /&gt;
* [[OnChangeEventId_(class)|OnChangeEventId]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/OnDeleteEventId_(class)</id>
		<title>OnDeleteEventId (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/OnDeleteEventId_(class)"/>
				<updated>2026-01-09T13:43:06Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function OnDeleteEventID():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retourne l'identifiant de l'évènement de suppression d'un objet de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[RegisterOnDeleteEvent_(class)|RegisterOnDeleteEvent]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/RegisterOnDeleteEvent_(class)</id>
		<title>RegisterOnDeleteEvent (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/RegisterOnDeleteEvent_(class)"/>
				<updated>2026-01-09T13:42:55Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function RegisterOnDeleteEvent():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enregistre la classe d'évènement de suppression de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[OnDeleteEventId_(class)|OnDeleteEventId]]&lt;br /&gt;
* [[RegisterOnCreateEvent_(class)|RegisterOnCreateEvent]]&lt;br /&gt;
* [[RegisterOnChangeEvent_(class)|RegisterOnChangeEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/RegisterOnDeleteEvent_(class)</id>
		<title>RegisterOnDeleteEvent (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/RegisterOnDeleteEvent_(class)"/>
				<updated>2026-01-09T13:42:36Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function RegisterOnDeleteEvent():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enregistre la classe d'évènement de suppression de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[OnDeleteEventId_(class)|OnDeleteEventId]]&lt;br /&gt;
* [[RegisterOnCreateEvent_(class)|RegisterOnCreateEvent]]&lt;br /&gt;
* [[RegisterOnDeleteEvent_(class)|RegisterOnDeleteEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/RegisterOnChangeEvent_(class)</id>
		<title>RegisterOnChangeEvent (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/RegisterOnChangeEvent_(class)"/>
				<updated>2026-01-09T13:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function RegisterOnChangeEvent(const iProperty:string):string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enregistre la classe d'évènement de modification d'un attribut de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|iProperty&lt;br /&gt;
|L'attribut modifié&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
// see onChangeEventId&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[OnChangeEventId_(class)|OnChangeEventId]]&lt;br /&gt;
* [[RegisterOnCreateEvent_(class)|RegisterOnCreateEvent]]&lt;br /&gt;
* [[RegisterOnDeleteEvent_(class)|RegisterOnDeleteEvent]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/OnChangeEventId_(class)</id>
		<title>OnChangeEventId (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/OnChangeEventId_(class)"/>
				<updated>2026-01-09T13:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function OnChangeEventID(const iProperty:string; const iOldValue:variant; const iNewValue:variant):string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retourne l'identifiant de l'évènement de modification d'un attribut d'un objet de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|iProperty&lt;br /&gt;
|Nom de l'attribut&lt;br /&gt;
|-&lt;br /&gt;
|oldValue&lt;br /&gt;
|Ancienne valeur de l'attribut&lt;br /&gt;
|-&lt;br /&gt;
|newValue&lt;br /&gt;
|Nouvelle valeur de l'attribut&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{tip|La valeur NULL peut être utilisée pour indiquer &amp;quot;toute valeur&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//function TTestTask.doExecute(obj:TitObject):boolean;&lt;br /&gt;
begin&lt;br /&gt;
  if obj is WFClasseA then&lt;br /&gt;
   begin&lt;br /&gt;
     //.... do something&lt;br /&gt;
     Result := True;&lt;br /&gt;
   end&lt;br /&gt;
   else Result := False;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//function TTestTask.Execute:boolean;&lt;br /&gt;
var aMsg:TdbmQueueMessage; &lt;br /&gt;
begin&lt;br /&gt;
  Result := False; &lt;br /&gt;
  aMsg := ReceivedMsg as TdbmQueueMessage;&lt;br /&gt;
  if Assigned(aMsg) then&lt;br /&gt;
   begin&lt;br /&gt;
     if Assigned(SourceObject) then&lt;br /&gt;
      begin&lt;br /&gt;
        Result := doExecute(SourceObject);                  &lt;br /&gt;
       end; &lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//Procedure TestRegisterTasks;&lt;br /&gt;
begin&lt;br /&gt;
  WFClasseA.RegisterOnChangeEvent('unEtat');&lt;br /&gt;
  TTestTask.Subscribe(WFClasseA.OnChangeEventId('unEtat',NULL {NULL means any value} ,WFCAState_Etat2),['unCode','unEntier'],['X',2]);&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;
* [[RegisterOnChangeEvent (class)|RegisterOnChangeEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/RegisterOnCreateEvent_(class)</id>
		<title>RegisterOnCreateEvent (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/RegisterOnCreateEvent_(class)"/>
				<updated>2026-01-09T13:40:57Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function RegisterOnCreateEvent():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enregistre la classe d'évènement de création de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
// see OnCreateEventId&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[OnCreateEventId_(class)|OnCreateEventId]]&lt;br /&gt;
* [[RegisterOnChangeEvent_(class)|RegisterOnChangeEvent]]&lt;br /&gt;
* [[RegisterOnDeleteEvent_(class)|RegisterOnDeleteEvent]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/OnCreateEventId_(class)</id>
		<title>OnCreateEventId (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/OnCreateEventId_(class)"/>
				<updated>2026-01-09T13:39:37Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version1100}}&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;class function OnCreateEventID():string;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retourne l'identifiant de l'évènement de création d'un objet de cette classe.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Return&lt;br /&gt;
|L'identifiant de l'évènement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  MyClass = class(TdbObject)&lt;br /&gt;
   //...&lt;br /&gt;
   property CanStart:boolean; &lt;br /&gt;
  end;  &lt;br /&gt;
&lt;br /&gt;
  MyTask = class(TitTask)&lt;br /&gt;
    Function Execute():boolean;&lt;br /&gt;
    Function doExecute(obj:TitObject):boolean;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Function MyTask.Execute():boolean;&lt;br /&gt;
var aMsg:TdbmQueueMessage; &lt;br /&gt;
begin&lt;br /&gt;
  Result := False; &lt;br /&gt;
  aMsg := ReceivedMsg as TdbmQueueMessage;&lt;br /&gt;
  if Assigned(aMsg) then&lt;br /&gt;
   begin&lt;br /&gt;
     if Assigned(SourceObject) then&lt;br /&gt;
      begin&lt;br /&gt;
        Result := doExecute(SourceObject);                  &lt;br /&gt;
       end; &lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Function MyTask.doExecute(obj:TitObject):boolean;&lt;br /&gt;
begin&lt;br /&gt;
  if obj is MyClass then&lt;br /&gt;
   begin&lt;br /&gt;
     if (obj as MyClass).CanStart then &lt;br /&gt;
      begin&lt;br /&gt;
        AddMessage(Format('object %s ...',[(obj as MyClass).Caption])); &lt;br /&gt;
        // do something ...  &lt;br /&gt;
      end&lt;br /&gt;
      else&lt;br /&gt;
      begin&lt;br /&gt;
        AddMessage(Format('objet %s ne peut pas ...'),[(obj as MyClass).Caption])); &lt;br /&gt;
      end; &lt;br /&gt;
     Result := True;&lt;br /&gt;
   end&lt;br /&gt;
   else Result := False; &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
//procedure RegisterTasks;&lt;br /&gt;
begin&lt;br /&gt;
  MyClass.RegisterOnCreateEvent();&lt;br /&gt;
&lt;br /&gt;
  MyTask.Subscribe(&lt;br /&gt;
    MyClass.OnCreateEventId(),&lt;br /&gt;
    [],[]&lt;br /&gt;
  );&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;
* [[RegisterOnCreateEvent_(class)|RegisterOnCreateEvent]]&lt;br /&gt;
* [[OnChangeEventId_(class)|OnChangeEventId]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Classes métiers (tech)}}&lt;br /&gt;
[[category:Classes métiers]]&lt;br /&gt;
[[Category:Version1100]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/IsoEndOfWeek_(rtl)</id>
		<title>IsoEndOfWeek (rtl)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/IsoEndOfWeek_(rtl)"/>
				<updated>2025-12-26T13:58:55Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang='delphi'&amp;gt;Function IsoEndOfWeek(dt:DateTime):DateTime;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne la date de la fin de la semaine (Dimanche) d'une date suivant la norme ISO-8601.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Une date représentant la fin de la semaine.&lt;br /&gt;
|-&lt;br /&gt;
|dt&lt;br /&gt;
|Date à convertir.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La partie représentant l'heure de la date est conservée.&lt;br /&gt;
&lt;br /&gt;
Semaine ISO:&lt;br /&gt;
: Premier jour : Lundi&lt;br /&gt;
: Dernier jour : Dimanche&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&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 Date et heure]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/EndOfWeek_(rtl)</id>
		<title>EndOfWeek (rtl)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/EndOfWeek_(rtl)"/>
				<updated>2025-12-26T13:55:09Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang='delphi'&amp;gt;Function EndOfWeek(const DT:DateTime):DateTime;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne la date du dernier jour de la semaine d'une date.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Le jour de fin de semaine (Samedi) de la date.&lt;br /&gt;
|-&lt;br /&gt;
|DT&lt;br /&gt;
|Date.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{info|Cette fonction n'est pas compatible avec la norme ISO-8601. Voir les fonctions Isoxxx}}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&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;
*[[IsoEndOfWeek (rtl)|IsoEndOfWeek]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Développement DSM}}&lt;br /&gt;
[[category:RTL Date et heure]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)</id>
		<title>Version 2025 r2 (release note)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)"/>
				<updated>2025-12-23T11:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
''' PREVIEW '''&lt;br /&gt;
&lt;br /&gt;
==Langage==&lt;br /&gt;
&lt;br /&gt;
* Valeur par défaut de paramètre&lt;br /&gt;
: Il est possible de définir des valeurs par défaut aux paramètres des méthodes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  MyClass = Class(TitObject)&lt;br /&gt;
    Procedure TestDeffParams;&lt;br /&gt;
    Procedure TestDefParamBool(p1:string; p2:boolean=true);&lt;br /&gt;
    Procedure TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
    Procedure TestDefParamJson2(p1:string; p2:TJson='{a:false}');&lt;br /&gt;
    Procedure TestDefParamEnum(p1:string; p2:Integer=WFCAState_Etat2);&lt;br /&gt;
    Procedure TestDefParamMulti(p1:string; p2:string='a'; p3:string='b');&lt;br /&gt;
    Function TestDefParamOne(p1:string='a'):string;&lt;br /&gt;
    Function TestDefParamFunc(p1:string='a'):string;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
var json:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  json := TJsonStruct.Create('{}');&lt;br /&gt;
  //&lt;br /&gt;
  // use Assigned insted of p2&amp;lt;&amp;gt;nil&lt;br /&gt;
  //&lt;br /&gt;
  if assigned(p2) then json.addStruct('p2',p2);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDeffParams;&lt;br /&gt;
var V:string;&lt;br /&gt;
begin&lt;br /&gt;
  V := TestDefParamFunc('c'); &lt;br /&gt;
  ShowMessage(V); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamOne;&lt;br /&gt;
  TestDefParamOne(); &lt;br /&gt;
  TestDefParamOne('x'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamMulti('a'); &lt;br /&gt;
  TestDefParamMulti('a','1'); &lt;br /&gt;
  TestDefParamMulti('a','1','2'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamBool('a'); &lt;br /&gt;
  TestDefParamBool('a',false); &lt;br /&gt;
  TestDefParamBool('a',true); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamJson2('b');&lt;br /&gt;
  TestDefParamJson2('b','{a:true}'); &lt;br /&gt;
&lt;br /&gt;
  TestDefParamEnum('c');&lt;br /&gt;
  TestDefParamEnum('c',WFCAState_Final); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type classe&lt;br /&gt;
: Les paramètres de type classe peuvent être passé directement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  MyClass1 = class&lt;br /&gt;
    class procedure foo(rg:TRegClass);&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass2 = class&lt;br /&gt;
    ....&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass3 = class&lt;br /&gt;
    procedure oldbar();&lt;br /&gt;
    procedure newbar();&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
class procedure MyClass1.foo(rg:TRegClass);&lt;br /&gt;
begin&lt;br /&gt;
  // =&amp;gt; MyClass2&lt;br /&gt;
  showMessage(rg.aClassName);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.oldbar();&lt;br /&gt;
var rg:TRegClass;&lt;br /&gt;
begin&lt;br /&gt;
  ModelManager.FindClass('MyClass2');&lt;br /&gt;
  myClass1.foo(rg);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.newbar();&lt;br /&gt;
begin&lt;br /&gt;
  myClass1.foo(MyClass2);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Json==&lt;br /&gt;
* Opérateur In&lt;br /&gt;
: Un json de type structure supporte l'opérateur In &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := True;&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Getter et Setter&lt;br /&gt;
: Un json de type structure supporte l'accès direct aux valeur des membres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  js['b'] := False; &lt;br /&gt;
  js['a'] := not js['b']; &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Constructeur implicite&lt;br /&gt;
: Un paramètre TJson peut être instancié à partir d'une chaine de caractère&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  if _foo('{a:true}') then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|La chaine doit être une constante, l'instanciation à partir d'une chaîne construite dynamiquement ne marche pas :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):string;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var v:string;&lt;br /&gt;
begin&lt;br /&gt;
  v := 'une chaine';&lt;br /&gt;
  if _foo('{a:&amp;quot;'+uneChaine+'&amp;quot;}')&amp;lt;&amp;gt;'' then showMessage('ok') else showMessage('nok'); // don't work !&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enumérateurs&lt;br /&gt;
: Un json de type strutucture supporte l'énumérateur sur les clés&lt;br /&gt;
: Un json de type tableau supporte l'énumérateur sur les éléments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 procedure _enumValues(p:TJson);&lt;br /&gt;
 var i:Integer; V:Variant;&lt;br /&gt;
 begin&lt;br /&gt;
   forEach V in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      showMessageFmt('%d:%s',[i,V]); &lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
 procedure _enumKeys(p:TJson);&lt;br /&gt;
 var i:Integer; Key,Keys,stag:string; &lt;br /&gt;
 begin&lt;br /&gt;
   Keys := ''; stag := '';&lt;br /&gt;
   forEach key in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      Keys := Keys+stag+inttostr(i)+':'+key;&lt;br /&gt;
      stag := ','; &lt;br /&gt;
    end; &lt;br /&gt;
   showMessage(Keys); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  _enumKeys('{a:true, b:false}'); &lt;br /&gt;
  _enumValues('[{a:true, b:false},{a:false, b:true}]'); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle==&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
* Méthode AllocOID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;class function AllocOID:TOID;&amp;lt;/source&amp;gt;&lt;br /&gt;
* Alloue un oid de la classe&lt;br /&gt;
: Peut être utile dans les tests unitaires&lt;br /&gt;
&lt;br /&gt;
* Méthode ToJson()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure ToJson(SA:variant);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sérialize l'objet en json &lt;br /&gt;
: SA peut être un TJsonArray ou un TJsonStruct&lt;br /&gt;
&lt;br /&gt;
===Classes SQL===&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoRefIndex&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoForeignKey&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
===Trace===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgClear();&amp;lt;/source&amp;gt;&lt;br /&gt;
: Vide la trace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgEnable(value:boolean);&amp;lt;/source&amp;gt;&lt;br /&gt;
: Active / désactive la trace&lt;br /&gt;
&lt;br /&gt;
===Vue locale===&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs &amp;quot;oidXXX&amp;quot; sans définir le rôle&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
   oidRef:TOID = oidrefB;&lt;br /&gt;
   ..&lt;br /&gt;
   idRefB:TOID = oidrefB notInSelect;&lt;br /&gt;
   [ (idRefB=%ArgRefB) and ....]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs non mappés dans la définition, ces attributs peuvent ensuite être mappés dynamiquement par le selecteur en utilisant addColumn()&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
    ACount:Integer = count(oid)&lt;br /&gt;
    oidRef:TOID;&lt;br /&gt;
    codeRef:string;&lt;br /&gt;
    libelleRef:string;&lt;br /&gt;
   ..&lt;br /&gt;
   [  ...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  sel := vue1.createSelector();&lt;br /&gt;
  case iGroupBy of&lt;br /&gt;
   'refB':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefB','oidRef'); &lt;br /&gt;
       sel.AddColumn('refB.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refB.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
   'refC':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefC','oidRef'); &lt;br /&gt;
       sel.AddColumn('refC.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refC.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type de donnée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Qualifier d'attribut NotInGroupBy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = expression('...') notInGroupBy;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Héritage de vue locale&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
   [...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
   [inherited and (...)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&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;
//function GetSelector(iGroupBy:string; iFilter:TJsonArray):TSelector;&lt;br /&gt;
Type&lt;br /&gt;
  // défini une classe de base avec tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrage = viewOf(TEcriture)&lt;br /&gt;
    lettrable:boolean = compteGeneral.lettrable notInSelect; &lt;br /&gt;
    idEtablissement:TOID = piece.oidEtablissement notInSelect; &lt;br /&gt;
    idCompteGeneral:TOID = oidCompteGeneral notInSelect; &lt;br /&gt;
    idRoleTiers:TOID = oidroleTiers notInSelect; &lt;br /&gt;
    [(lettrable=true) &lt;br /&gt;
      and ((oidLettrageEcriture='') or (dateLettrage=0)) &lt;br /&gt;
      and (typeEcriture&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (piece.lot.origineLot&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (eDate&amp;gt;=%ArgDateInf) &lt;br /&gt;
      and (eDate&amp;lt;=%ArgDateSup) &lt;br /&gt;
      and (idEtablissement=%ArgEtablissement) &lt;br /&gt;
      and (idCompteGeneral=%ArgCompteGeneral)&lt;br /&gt;
      and (idRoleTiers=%ArgRoleTiers)&lt;br /&gt;
    ] &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // Hérite de tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrageGroupBy = viewOf(vueEcritureLettrage)&lt;br /&gt;
    dateMin:TDatetime = min(eDate);&lt;br /&gt;
    dateMax:TDatetime = max(eDate); &lt;br /&gt;
    ACount:Integer = count(oid); &lt;br /&gt;
    credit:Currency = sum('credit:TCValue'); &lt;br /&gt;
    debit:Currency = sum('debit:TCValue'); &lt;br /&gt;
    solde:Currency = sumDiff(debit,credit); &lt;br /&gt;
    [inherited] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  Result := vueLettrageGroupBy.CreateSelector('','',True,[]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scope de vue locale&lt;br /&gt;
&lt;br /&gt;
Une vue locale peut être référencée en dehors de la méthode où elle est définie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure Class1.foo;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Class2.bar;&lt;br /&gt;
Type&lt;br /&gt;
  vue2 = viewOf(class1.foo.vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression Exists()&lt;br /&gt;
&lt;br /&gt;
Une expression existe peut être utilisée dans les filtres comme une valeur logique&lt;br /&gt;
&lt;br /&gt;
{{tip|Une expression Exists() est beaucoup plus rapide qu'un &amp;quot;Count&amp;lt;&amp;gt;0&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(ClassB)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
   bb:boolean = vue1.Exists('(id=self.id)',True,[]) notInSelect;&lt;br /&gt;
   [(bb=true) and (....)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression de Sous requête &lt;br /&gt;
&lt;br /&gt;
Une expression peut être définie par une sous requête&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  VueTauxADate = ViewOf(TTauxADate)&lt;br /&gt;
    idTVA : TOid = oidTVA;&lt;br /&gt;
    tDate : Date = tDate;&lt;br /&gt;
    taux : float = taux; &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vueMontantTVA = viewOf(TEcriture)&lt;br /&gt;
    dateEcriture:TDatetime=eDate notInSelect;&lt;br /&gt;
    oidTVA:TOID = ProfilTVA.oidTVA notInSelect; &lt;br /&gt;
    oidPiece:TOID = oidPiece; &lt;br /&gt;
    montantTVAReel:Currency = vueTauxADate.select('taux * self.montant_TCValue /100','(tDate&amp;lt;=self.dateEcriture)and(idTVA=self.oidTVA)','',True,[]); &lt;br /&gt;
    montantTVAReel_CodeDevise:string = montantTVAReel:CodeDevise; &lt;br /&gt;
  end; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ToJson==&lt;br /&gt;
&lt;br /&gt;
Permet de sérialiser l'objet ou l'ensemble d'objets au format json compatible avec les tables du client React&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TRole.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TSerializeJsonOptions :&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsGuid&lt;br /&gt;
: Le membre id de la sérialisation sera un GUID&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsOid&lt;br /&gt;
: Le membre id de la sérialisation sera l'OID de l'objet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//procedure GetData(SRows:TJsonArray);&lt;br /&gt;
Type&lt;br /&gt;
  myView = viewOf(...)&lt;br /&gt;
   ...&lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var sel:TSelector; &lt;br /&gt;
begin&lt;br /&gt;
  // Selector to retreive the data&lt;br /&gt;
  // &lt;br /&gt;
  sel := myView.CreateSelector('','',True,[]);&lt;br /&gt;
  sel.ToJson(SRows); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formats===&lt;br /&gt;
&lt;br /&gt;
Le formattage de la sérialisation des propriétés peut être controllé par les propriétés du type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue = viewOf(...)&lt;br /&gt;
    p:string(typeParam1,typeParam2,typeParam3) = x;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de l'attribut&lt;br /&gt;
!TypeParam1&lt;br /&gt;
!TypeParam2&lt;br /&gt;
!TypeParam3&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de tenue de compte&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtRP&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de reporting&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameters&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Valeur des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameter&lt;br /&gt;
|Nom du paramètre &lt;br /&gt;
|Valeur par défaut si le paramètre n'existe pas&lt;br /&gt;
|Valeur du paramètre &lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|fmtTaskCategory&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Catégorie de tâche&lt;br /&gt;
|-&lt;br /&gt;
|oid de TdbfDocument&lt;br /&gt;
|fmtDocumentUrl&lt;br /&gt;
|Paramètre optionnel contenant le nom du document&lt;br /&gt;
|Paramètre optionnel contenant une url externe&lt;br /&gt;
|Lien sur le document&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|fmtUTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|La date en considérée UTC et convertie en date locale&lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassLabel&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le libellé de la classe &lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassName&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le nom de la classe &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Sélecteur==&lt;br /&gt;
&lt;br /&gt;
* lastOpeStamp, lastOpeAffected, lastOpeFirstOID&lt;br /&gt;
: Attributs mis à jour par la dernière opération assembliste.&lt;br /&gt;
&lt;br /&gt;
* operationId, operation&lt;br /&gt;
: Permet d'enregistrer les opérations dans la table TsqlOperation&lt;br /&gt;
: S'applique à CopyTo()&lt;br /&gt;
&lt;br /&gt;
* RmvParameter()&lt;br /&gt;
: Permet de retirer un paramètre qui a été ajouté par AddParameter()&lt;br /&gt;
&lt;br /&gt;
* Amélioration de CopyTo&lt;br /&gt;
: Permet de créer des objets à partir d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
* CopyTo, Update, UpdateFrom&lt;br /&gt;
: Fonctionne sur les classes de stéréotype SQL&lt;br /&gt;
&lt;br /&gt;
* InsertInto&lt;br /&gt;
: Permet de créer une table temporaire à partir d'un sélecteur&lt;br /&gt;
: Réalise un select ... into TEMPTABLE from ...&lt;br /&gt;
&lt;br /&gt;
* SourceTableName&lt;br /&gt;
: Permet de sélectionner une table SQL comme source de l'opération &lt;br /&gt;
: Utiliser dans les opérations ensemblistes sur des tables temporaires&lt;br /&gt;
&lt;br /&gt;
===TsqlOperation===&lt;br /&gt;
&lt;br /&gt;
Classe SQL définie par le framework et permettant d'enregistrer les opérations du sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  TsqlOperation = Class(TsqlObject)&lt;br /&gt;
  public&lt;br /&gt;
    class procedure CleanOpe(iOpeId:string);&lt;br /&gt;
    //&lt;br /&gt;
    property action: StringS[128];&lt;br /&gt;
    property id: SQLIdentity;&lt;br /&gt;
    property oidSourceObject: TOID;&lt;br /&gt;
    property oidTargetObject: TOID;&lt;br /&gt;
    property opeId: StringS[128];&lt;br /&gt;
    property operation: StringS[128];&lt;br /&gt;
    property SourceObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
    property TargetObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* opeId, operationId&lt;br /&gt;
: Un identifiant unique (guid) identifiant l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* opération&lt;br /&gt;
: Nom de l'opération dans l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* action&lt;br /&gt;
: Action de l'opération &lt;br /&gt;
: Par exemple INSERT pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidSourceObject&lt;br /&gt;
: identifiant de l'objet source dans l'opération &lt;br /&gt;
: Par exemple l'objet source de la copie pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidTargetObject&lt;br /&gt;
: identifiant de l'objet cible dans l'opération&lt;br /&gt;
: Par exemple l'objet copié par un CopyTo&lt;br /&gt;
&lt;br /&gt;
'''Exemple d'utilisation:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // Créer des écritures a partir des réglements&lt;br /&gt;
 //&lt;br /&gt;
 procedure  _doCreateEcritureReglements(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueEcritureReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgBordereau',oidBordereauReglement); &lt;br /&gt;
   sel.Operation := 'EcrReg'; &lt;br /&gt;
   sel.OpeId := iOpeId; &lt;br /&gt;
   // &lt;br /&gt;
   sel.CopyTo('TEcriture',['oidpiece','eDate','sens','sensProrata','regimeTVA','typeEcriture'],[&lt;br /&gt;
    iOidPiece,&lt;br /&gt;
    BordereauReglement.dateReglement, &lt;br /&gt;
    sens_credit,&lt;br /&gt;
    sens_credit, &lt;br /&gt;
    regimeTVA_Encaissements,&lt;br /&gt;
    typeEcriture_Brouillard &lt;br /&gt;
   ]); &lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Type&lt;br /&gt;
  vueUpdateReglement = viewOf(TReglement)&lt;br /&gt;
   vl:TsqlOperation = join('(opeId=%ArgOpeId) and (operation=%ArgOperation) and (oidSourceObject=self.oid)'); &lt;br /&gt;
   oidEcriture:TOID = oidEcriture; &lt;br /&gt;
   oidTargetEcriture:TOID = vl.oidTargetObject; &lt;br /&gt;
   oidBordereau:TOID = oidBordereauReglement; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 // Met à jour l'oidEcriture créée sur les réglements correspondants&lt;br /&gt;
 ..&lt;br /&gt;
 procedure _doUpdateReglementsEcriture(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueUpdateReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgOpeId',iOpeId); &lt;br /&gt;
   sel.AddParameter('ArgOperation','EcrReg'); &lt;br /&gt;
   //&lt;br /&gt;
   sel.Update(['oidEcriture'],['oidTargetEcriture']); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  aOpeId := CreateGuid;&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     aOidPiece := _doCreatePiece();&lt;br /&gt;
     _doCreateEcritureReglements(aOidPiece,aOpeId);&lt;br /&gt;
     _doUpdateReglementsEcriture(aOidPice,aOpeId); &lt;br /&gt;
     ...&lt;br /&gt;
     TsqlOperation.CleanOpe(aOpeId);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UpdateFrom()===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function updateFrom(sel:TSelector; iMatchedProps:Array of string; iUpdatedProps:Array of string; iUpdatedValue:Array of variant):Integer;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permet de mettre à jour une classe à partir d'un sélecteur et d'une colonne de correspondance.&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;
Type&lt;br /&gt;
  // Update the temp table &lt;br /&gt;
  vueTemp = viewOf(TempLettrage)&lt;br /&gt;
    reference1:string = reference1;&lt;br /&gt;
    reference2:string = reference2;&lt;br /&gt;
    modeLettrage:Integer = modeLettrage; &lt;br /&gt;
  end;&lt;br /&gt;
   &lt;br /&gt;
  vueRef1 = viewOf(TempLettrage)&lt;br /&gt;
    //ACount:Integer = count(id);&lt;br /&gt;
    ATotal:Currency = sumSign(montant:TCValue,sens,'1');&lt;br /&gt;
    reference1:string = reference1; &lt;br /&gt;
    [(modeLettrage=0) and (reference1&amp;lt;&amp;gt;'')] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var selT,selG:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
    begin&lt;br /&gt;
     // for updating the temp table on &amp;quot;match&amp;quot; &lt;br /&gt;
     selT := vueTemp.CreateSelector('','',True,[]);&lt;br /&gt;
&lt;br /&gt;
     // Lettrage sur reference 1 &lt;br /&gt;
     selG := vueRef1.CreateSelector('(ATotal=0)','',True,[]);&lt;br /&gt;
     selG.useCTE := True; &lt;br /&gt;
     selT.UpdateFrom(selG,['reference1'],['modeLettrage'],[1]); &lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with CTE as (&lt;br /&gt;
select sum(case when t0.sens=1 then ISNULL(t0.montant_TCValue, 0) else -ISNULL(t0.montant_TCValue, 0) end)  as &amp;quot;ATotal&amp;quot;,t0.reference1  as &amp;quot;reference1&amp;quot;&lt;br /&gt;
from dbo.TEMPLETTRAGE t0 WITH (NOLOCK)&lt;br /&gt;
where ((t0.modeLettrage = 0) and (t0.reference1 IS NOT NULL))&lt;br /&gt;
group by t0.reference1&lt;br /&gt;
)&lt;br /&gt;
merge into dbo.TEMPLETTRAGE tm0 using (&lt;br /&gt;
SELECT  *&lt;br /&gt;
FROM CTE&lt;br /&gt;
Where (ATotal = 0.0000)&lt;br /&gt;
) tm1 on (tm1.reference1=tm0.reference1)&lt;br /&gt;
when matched then update set&lt;br /&gt;
tm0.modeLettrage = 1&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opérations ensemblistes SQL==&lt;br /&gt;
&lt;br /&gt;
Des opérations ensemblistes utilisant des tables SQL temporaires peuvent être réalisées en utilisant l'opération InserInto du selecteur.&lt;br /&gt;
&lt;br /&gt;
===Table temporaire===&lt;br /&gt;
&lt;br /&gt;
* TDatabase.AllocTempTable(JobId:string)&lt;br /&gt;
: Génère un nom de table temporaire&lt;br /&gt;
&lt;br /&gt;
* TDatabase.DropTempTables(JobId:string)&lt;br /&gt;
: Supprime (drop) les tables temporaires&lt;br /&gt;
&lt;br /&gt;
===Vue SQL locale===&lt;br /&gt;
&lt;br /&gt;
Une vue SQL locale permet d'utiliser une table SQL comme source d'opération d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // define an interface&lt;br /&gt;
  intf = interface&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // create a view which support the interface&lt;br /&gt;
  // will be used to create the temp table&lt;br /&gt;
  //&lt;br /&gt;
  vue = viewOf(MyClass,intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // define a sql class based on the interface&lt;br /&gt;
  //&lt;br /&gt;
  sql = sqlClass(intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // view on the sql class&lt;br /&gt;
  //&lt;br /&gt;
  vue2 = viewOf(sql)&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:Tselector; aJob,aTempTable:string; keepTables:boolean;&lt;br /&gt;
begin&lt;br /&gt;
  // Alloc a temp table name&lt;br /&gt;
  //&lt;br /&gt;
  aJob := CreateGuid;&lt;br /&gt;
  aTempTable := ClassManager.DefDatabase.AllocTempTable(aJob);&lt;br /&gt;
  KeepTables := false; // for debuging&lt;br /&gt;
  try&lt;br /&gt;
   // Create a temp table from MyClass view&lt;br /&gt;
   //&lt;br /&gt;
   sel := vue.CreateSelector(...);&lt;br /&gt;
   sel.insertInto(aTempTable,[...],[...]); // we create a tempTable&lt;br /&gt;
&lt;br /&gt;
   // Query the temp table throught the vue2 &lt;br /&gt;
   //&lt;br /&gt;
   sel := vue2.CreateSelector(...);&lt;br /&gt;
   sel.SourceTableName := aTempTable; // because we select the tempTable&lt;br /&gt;
&lt;br /&gt;
  ...&lt;br /&gt;
  finally&lt;br /&gt;
  if not KeepTables then ClassManager.DefDatabase.DropTempTables(aJob); &lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updater==&lt;br /&gt;
&lt;br /&gt;
Classe technique permettant de mettre à jour un attribut sur un ensemble d'objet.&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Mise à jour des compteurs qui ne peuvent pas être déterminés en SQL'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // Should returns all attributes part of the counter&lt;br /&gt;
  //&lt;br /&gt;
  vueNumeroPiece = viewOf(TPiece)&lt;br /&gt;
   pDate:TDatetime = pDate;&lt;br /&gt;
   numero:TCounter = numero; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 procedure _doUpdateNumeroPiece(iOidPiece:string);&lt;br /&gt;
 var sel:TSelector; vueNP:vueNumeroPiece; upd:TUpdater;&lt;br /&gt;
 begin&lt;br /&gt;
   upd := TPiece.CreateUpdater('numero'); &lt;br /&gt;
   // &lt;br /&gt;
   sel := vueNumeroPiece.CreateSelector('(oid=%1)','',True,[iOidPiece]);&lt;br /&gt;
   forEach vueNP in sel.AsCursor do&lt;br /&gt;
    begin&lt;br /&gt;
      vueNP.numero.AllocValue;&lt;br /&gt;
      upd.AddValue(vueNP.OID,vueNP.numero.value); &lt;br /&gt;
    end; &lt;br /&gt;
   //&lt;br /&gt;
   upd.Execute; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
&lt;br /&gt;
* [[Améliorations des contrôles d'interface (Version 11.00 2025 r2)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Version2025r2]]&lt;br /&gt;
[[Category:Release note]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)</id>
		<title>Version 2025 r2 (release note)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Version_2025_r2_(release_note)"/>
				<updated>2025-12-23T11:01:24Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
''' PREVIEW '''&lt;br /&gt;
&lt;br /&gt;
==Langage==&lt;br /&gt;
&lt;br /&gt;
* Valeur par défaut de paramètre&lt;br /&gt;
: Il est possible de définir des valeurs par défaut aux paramètres des méthodes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  MyClass = Class(TitObject)&lt;br /&gt;
    Procedure TestDeffParams;&lt;br /&gt;
    Procedure TestDefParamBool(p1:string; p2:boolean=true);&lt;br /&gt;
    Procedure TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
    Procedure TestDefParamJson2(p1:string; p2:TJson='{a:false}');&lt;br /&gt;
    Procedure TestDefParamEnum(p1:string; p2:Integer=WFCAState_Etat2);&lt;br /&gt;
    Procedure TestDefParamMulti(p1:string; p2:string='a'; p3:string='b');&lt;br /&gt;
    Function TestDefParamOne(p1:string='a'):string;&lt;br /&gt;
    Function TestDefParamFunc(p1:string='a'):string;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDefParamJson(p1:string; p2:TJson=nil);&lt;br /&gt;
var json:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  json := TJsonStruct.Create('{}');&lt;br /&gt;
  //&lt;br /&gt;
  // use Assigned insted of p2&amp;lt;&amp;gt;nil&lt;br /&gt;
  //&lt;br /&gt;
  if assigned(p2) then json.addStruct('p2',p2);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Procedure MyClass.TestDeffParams;&lt;br /&gt;
var V:string;&lt;br /&gt;
begin&lt;br /&gt;
  V := TestDefParamFunc('c'); &lt;br /&gt;
  ShowMessage(V); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamOne;&lt;br /&gt;
  TestDefParamOne(); &lt;br /&gt;
  TestDefParamOne('x'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamMulti('a'); &lt;br /&gt;
  TestDefParamMulti('a','1'); &lt;br /&gt;
  TestDefParamMulti('a','1','2'); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamBool('a'); &lt;br /&gt;
  TestDefParamBool('a',false); &lt;br /&gt;
  TestDefParamBool('a',true); &lt;br /&gt;
   &lt;br /&gt;
  TestDefParamJson2('b');&lt;br /&gt;
  TestDefParamJson2('b','{a:true}'); &lt;br /&gt;
&lt;br /&gt;
  TestDefParamEnum('c');&lt;br /&gt;
  TestDefParamEnum('c',WFCAState_Final); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type classe&lt;br /&gt;
: Les paramètres de type classe peuvent être passé directement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  MyClass1 = class&lt;br /&gt;
    class procedure foo(rg:TRegClass);&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass2 = class&lt;br /&gt;
    ....&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  MyClass3 = class&lt;br /&gt;
    procedure oldbar();&lt;br /&gt;
    procedure newbar();&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
class procedure MyClass1.foo(rg:TRegClass);&lt;br /&gt;
begin&lt;br /&gt;
  // =&amp;gt; MyClass2&lt;br /&gt;
  showMessage(rg.aClassName);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.oldbar();&lt;br /&gt;
var rg:TRegClass;&lt;br /&gt;
begin&lt;br /&gt;
  ModelManager.FindClass('MyClass2');&lt;br /&gt;
  myClass1.foo(rg);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure MyClass3.newbar();&lt;br /&gt;
begin&lt;br /&gt;
  myClass1.foo(MyClass2);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Json==&lt;br /&gt;
* Opérateur In&lt;br /&gt;
: Un json de type structure supporte l'opérateur In &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := True;&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Getter et Setter&lt;br /&gt;
: Un json de type structure supporte l'accès direct aux valeur des membres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var js:TJson;&lt;br /&gt;
begin&lt;br /&gt;
  js := TJson.Create('{a:true}'); &lt;br /&gt;
  js['b'] := False; &lt;br /&gt;
  js['a'] := not js['b']; &lt;br /&gt;
  if _foo(js) then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Constructeur implicite&lt;br /&gt;
: Un paramètre TJson peut être instancié à partir d'une chaine de caractère&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):boolean;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  if _foo('{a:true}') then showMessage('ok') else showMessage('nok');&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{tip|La chaine doit être une constante, l'instanciation à partir d'une chaîne construite dynamiquement ne marche pas :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 function _foo(p:TJson):string;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := false; &lt;br /&gt;
   if 'a' in p then&lt;br /&gt;
    begin&lt;br /&gt;
      Result := p['a'];&lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
var v:string;&lt;br /&gt;
begin&lt;br /&gt;
  v := 'une chaine';&lt;br /&gt;
  if _foo('{a:&amp;quot;'+uneChaine+'&amp;quot;}')&amp;lt;&amp;gt;'' then showMessage('ok') else showMessage('nok'); // don't work !&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enumérateurs&lt;br /&gt;
: Un json de type strutucture supporte l'énumérateur sur les clés&lt;br /&gt;
: Un json de type tableau supporte l'énumérateur sur les éléments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
//Procedure TestJson;&lt;br /&gt;
&lt;br /&gt;
 procedure _enumValues(p:TJson);&lt;br /&gt;
 var i:Integer; V:Variant;&lt;br /&gt;
 begin&lt;br /&gt;
   forEach V in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      showMessageFmt('%d:%s',[i,V]); &lt;br /&gt;
    end; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
 procedure _enumKeys(p:TJson);&lt;br /&gt;
 var i:Integer; Key,Keys,stag:string; &lt;br /&gt;
 begin&lt;br /&gt;
   Keys := ''; stag := '';&lt;br /&gt;
   forEach key in p index i do&lt;br /&gt;
    begin&lt;br /&gt;
      Keys := Keys+stag+inttostr(i)+':'+key;&lt;br /&gt;
      stag := ','; &lt;br /&gt;
    end; &lt;br /&gt;
   showMessage(Keys); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  _enumKeys('{a:true, b:false}'); &lt;br /&gt;
  _enumValues('[{a:true, b:false},{a:false, b:true}]'); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modèle==&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
* Méthode AllocOID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;class function AllocOID:TOID;&amp;lt;/source&amp;gt;&lt;br /&gt;
* Alloue un oid de la classe&lt;br /&gt;
: Peut être utile dans les tests unitaires&lt;br /&gt;
&lt;br /&gt;
* Méthode ToJson()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure ToJson(SA:variant);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sérialize l'objet en json &lt;br /&gt;
: SA peut être un TJsonArray ou un TJsonStruct&lt;br /&gt;
&lt;br /&gt;
===Classes SQL===&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoRefIndex&lt;br /&gt;
&lt;br /&gt;
* Options de rôle : NoForeignKey&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
===Trace===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgClear();&amp;lt;/source&amp;gt;&lt;br /&gt;
: Vide la trace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;procedure dbgEnable(value:boolean);&amp;lt;/source&amp;gt;&lt;br /&gt;
: Active / désactive la trace&lt;br /&gt;
&lt;br /&gt;
===Vue locale===&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs &amp;quot;oidXXX&amp;quot; sans définir le rôle&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
   oidRef:TOID = oidrefB;&lt;br /&gt;
   ..&lt;br /&gt;
   idRefB:TOID = oidrefB notInSelect;&lt;br /&gt;
   [ (idRefB=%ArgRefB) and ....]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Une vue locale peut contenir des attributs non mappés dans la définition, ces attributs peuvent ensuite être mappés dynamiquement par le selecteur en utilisant addColumn()&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;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
    ACount:Integer = count(oid)&lt;br /&gt;
    oidRef:TOID;&lt;br /&gt;
    codeRef:string;&lt;br /&gt;
    libelleRef:string;&lt;br /&gt;
   ..&lt;br /&gt;
   [  ...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  sel := vue1.createSelector();&lt;br /&gt;
  case iGroupBy of&lt;br /&gt;
   'refB':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefB','oidRef'); &lt;br /&gt;
       sel.AddColumn('refB.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refB.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
   'refC':&lt;br /&gt;
     begin&lt;br /&gt;
       sel.AddColumn('oidrefC','oidRef'); &lt;br /&gt;
       sel.AddColumn('refC.code','codeRef'); &lt;br /&gt;
       sel.AddColumn('refC.Caption','libelleRef'); &lt;br /&gt;
     end;&lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre de type de donnée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:TEnum(enumName) = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Qualifier d'attribut NotInGroupBy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = expression('...') notInGroupBy;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Héritage de vue locale&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
   [...]&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
   [inherited and (...)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&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;
//function GetSelector(iGroupBy:string; iFilter:TJsonArray):TSelector;&lt;br /&gt;
Type&lt;br /&gt;
  // défini une classe de base avec tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrage = viewOf(TEcriture)&lt;br /&gt;
    lettrable:boolean = compteGeneral.lettrable notInSelect; &lt;br /&gt;
    idEtablissement:TOID = piece.oidEtablissement notInSelect; &lt;br /&gt;
    idCompteGeneral:TOID = oidCompteGeneral notInSelect; &lt;br /&gt;
    idRoleTiers:TOID = oidroleTiers notInSelect; &lt;br /&gt;
    [(lettrable=true) &lt;br /&gt;
      and ((oidLettrageEcriture='') or (dateLettrage=0)) &lt;br /&gt;
      and (typeEcriture&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (piece.lot.origineLot&amp;lt;&amp;gt;0)&lt;br /&gt;
      and (eDate&amp;gt;=%ArgDateInf) &lt;br /&gt;
      and (eDate&amp;lt;=%ArgDateSup) &lt;br /&gt;
      and (idEtablissement=%ArgEtablissement) &lt;br /&gt;
      and (idCompteGeneral=%ArgCompteGeneral)&lt;br /&gt;
      and (idRoleTiers=%ArgRoleTiers)&lt;br /&gt;
    ] &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // Hérite de tous les filtres&lt;br /&gt;
  //&lt;br /&gt;
  vueEcritureLettrageGroupBy = viewOf(vueEcritureLettrage)&lt;br /&gt;
    dateMin:TDatetime = min(eDate);&lt;br /&gt;
    dateMax:TDatetime = max(eDate); &lt;br /&gt;
    ACount:Integer = count(oid); &lt;br /&gt;
    credit:Currency = sum('credit:TCValue'); &lt;br /&gt;
    debit:Currency = sum('debit:TCValue'); &lt;br /&gt;
    solde:Currency = sumDiff(debit,credit); &lt;br /&gt;
    [inherited] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  Result := vueLettrageGroupBy.CreateSelector('','',True,[]);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Scope de vue locale&lt;br /&gt;
&lt;br /&gt;
Une vue locale peut être référencée en dehors de la méthode où elle est définie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure Class1.foo;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   p1:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Class2.bar;&lt;br /&gt;
Type&lt;br /&gt;
  vue2 = viewOf(class1.foo.vue1)&lt;br /&gt;
   p2:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
begin&lt;br /&gt;
  ...&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression Exists()&lt;br /&gt;
&lt;br /&gt;
Une expression existe peut être utilisée dans les filtres comme une valeur logique&lt;br /&gt;
&lt;br /&gt;
{{tip|Une expression Exists() est beaucoup plus rapide qu'un &amp;quot;Count&amp;lt;&amp;gt;0&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue1 = viewOf(ClassA)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vue2 = viewOf(ClassB)&lt;br /&gt;
   id:string = ...;&lt;br /&gt;
   bb:boolean = vue1.Exists('(id=self.id)',True,[]) notInSelect;&lt;br /&gt;
   [(bb=true) and (....)]&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Expression de Sous requête &lt;br /&gt;
&lt;br /&gt;
Une expression peut être définie par une sous requête&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  VueTauxADate = ViewOf(TTauxADate)&lt;br /&gt;
    idTVA : TOid = oidTVA;&lt;br /&gt;
    tDate : Date = tDate;&lt;br /&gt;
    taux : float = taux; &lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  vueMontantTVA = viewOf(TEcriture)&lt;br /&gt;
    dateEcriture:TDatetime=eDate notInSelect;&lt;br /&gt;
    oidTVA:TOID = ProfilTVA.oidTVA notInSelect; &lt;br /&gt;
    oidPiece:TOID = oidPiece; &lt;br /&gt;
    montantTVAReel:Currency = vueTauxADate.select('taux * self.montant_TCValue /100','(tDate&amp;lt;=self.dateEcriture)and(idTVA=self.oidTVA)','',True,[]); &lt;br /&gt;
    montantTVAReel_CodeDevise:string = montantTVAReel:CodeDevise; &lt;br /&gt;
  end; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ToJson==&lt;br /&gt;
&lt;br /&gt;
Permet de sérialiser l'objet ou l'ensemble d'objets au format json compatible avec les tables du client React&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TObject.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TSelector.ToJsonEx(SA:TJsonArray; iOptions:TSerializeJsonOptions);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; procedure TRole.ToJson(SA:TJsonArray);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TSerializeJsonOptions :&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsGuid&lt;br /&gt;
: Le membre id de la sérialisation sera un GUID&lt;br /&gt;
&lt;br /&gt;
* sjoIdAsOid&lt;br /&gt;
: Le membre id de la sérialisation sera l'OID de l'objet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//procedure GetData(SRows:TJsonArray);&lt;br /&gt;
Type&lt;br /&gt;
  myView = viewOf(...)&lt;br /&gt;
   ...&lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var sel:TSelector; &lt;br /&gt;
begin&lt;br /&gt;
  // Selector to retreive the data&lt;br /&gt;
  // &lt;br /&gt;
  sel := myView.CreateSelector('','',True,[]);&lt;br /&gt;
  sel.ToJson(SRows); &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formats===&lt;br /&gt;
&lt;br /&gt;
Le formattage de la sérialisation des propriétés peut être controllé par les propriétés du type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  vue = viewOf(...)&lt;br /&gt;
    p:string(typeParam1,typeParam2,typeParam3) = x;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type de l'attribut&lt;br /&gt;
!TypeParam1&lt;br /&gt;
!TypeParam2&lt;br /&gt;
!TypeParam3&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de tenue de compte&lt;br /&gt;
|-&lt;br /&gt;
|Currency&lt;br /&gt;
|fmtRP&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le montant est considéré en valeur de reporting&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameters&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Valeur des paramètres&lt;br /&gt;
|-&lt;br /&gt;
|String contenant un TfwParameters&lt;br /&gt;
|fmtParameter&lt;br /&gt;
|Nom du paramètre &lt;br /&gt;
|Valeur par défaut si le paramètre n'existe pas&lt;br /&gt;
|Valeur du paramètre &lt;br /&gt;
|-&lt;br /&gt;
|String&lt;br /&gt;
|fmtTaskCategory&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Catégorie de tâche&lt;br /&gt;
|-&lt;br /&gt;
|oid de TdbfDocument&lt;br /&gt;
|fmtDocumentUrl&lt;br /&gt;
|Paramètre optionnel contenant le nom du document&lt;br /&gt;
|Paramètre optionnel contenant une url externe&lt;br /&gt;
|Lien sur le document&lt;br /&gt;
|-&lt;br /&gt;
|Datetime&lt;br /&gt;
|fmtUTC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|La date en considérée UTC et convertie en date locale&lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassLabel&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le libellé de la classe &lt;br /&gt;
|-&lt;br /&gt;
|Integer (idOTP)&lt;br /&gt;
|fmtClassName&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|Le nom de la classe &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Sélecteur==&lt;br /&gt;
&lt;br /&gt;
* lastOpeStamp, lastOpeAffected, lastOpeFirstOID&lt;br /&gt;
: Attributs mis à jour par la dernière opération assembliste.&lt;br /&gt;
&lt;br /&gt;
* operationId, operation&lt;br /&gt;
: Permet d'enregistrer les opérations dans la table TsqlOperation&lt;br /&gt;
: S'applique à CopyTo()&lt;br /&gt;
&lt;br /&gt;
* RmvParameter()&lt;br /&gt;
: Permet de retirer un paramètre qui a été ajouté par AddParameter()&lt;br /&gt;
&lt;br /&gt;
* Amélioration de CopyTo&lt;br /&gt;
: Permet de créer des objets à partir d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
* CopyTo, Update, UpdateFrom&lt;br /&gt;
: Fonctionne sur les classes de stéréotype SQL&lt;br /&gt;
&lt;br /&gt;
* InsertInto&lt;br /&gt;
: Permet de créer une table temporaire à partir d'un sélecteur&lt;br /&gt;
: Réalise un select ... into TEMPTABLE from ...&lt;br /&gt;
&lt;br /&gt;
* SourceTableName&lt;br /&gt;
: Permet de sélectionner une table SQL comme source de l'opération &lt;br /&gt;
: Utiliser dans les opérations ensemblistes sur des tables temporaires&lt;br /&gt;
&lt;br /&gt;
===TsqlOperation===&lt;br /&gt;
&lt;br /&gt;
Classe SQL définie par le framework et permettant d'enregistrer les opérations du sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  TsqlOperation = Class(TsqlObject)&lt;br /&gt;
  public&lt;br /&gt;
    class procedure CleanOpe(iOpeId:string);&lt;br /&gt;
    //&lt;br /&gt;
    property action: StringS[128];&lt;br /&gt;
    property id: SQLIdentity;&lt;br /&gt;
    property oidSourceObject: TOID;&lt;br /&gt;
    property oidTargetObject: TOID;&lt;br /&gt;
    property opeId: StringS[128];&lt;br /&gt;
    property operation: StringS[128];&lt;br /&gt;
    property SourceObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
    property TargetObject: Ref(roGeneric,roNotExternal,roNoForeignKey,roNoRoleIndex) of TitObject;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* opeId, operationId&lt;br /&gt;
: Un identifiant unique (guid) identifiant l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* opération&lt;br /&gt;
: Nom de l'opération dans l'ensemble des opérations&lt;br /&gt;
&lt;br /&gt;
* action&lt;br /&gt;
: Action de l'opération &lt;br /&gt;
: Par exemple INSERT pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidSourceObject&lt;br /&gt;
: identifiant de l'objet source dans l'opération &lt;br /&gt;
: Par exemple l'objet source de la copie pour un CopyTo&lt;br /&gt;
&lt;br /&gt;
* oidTargetObject&lt;br /&gt;
: identifiant de l'objet cible dans l'opération&lt;br /&gt;
: Par exemple l'objet copié par un CopyTo&lt;br /&gt;
&lt;br /&gt;
'''Exemple d'utilisation:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // Créer des écritures a partir des réglements&lt;br /&gt;
 //&lt;br /&gt;
 procedure  _doCreateEcritureReglements(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueEcritureReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgBordereau',oidBordereauReglement); &lt;br /&gt;
   sel.Operation := 'EcrReg'; &lt;br /&gt;
   sel.OpeId := iOpeId; &lt;br /&gt;
   // &lt;br /&gt;
   sel.CopyTo('TEcriture',['oidpiece','eDate','sens','sensProrata','regimeTVA','typeEcriture'],[&lt;br /&gt;
    iOidPiece,&lt;br /&gt;
    BordereauReglement.dateReglement, &lt;br /&gt;
    sens_credit,&lt;br /&gt;
    sens_credit, &lt;br /&gt;
    regimeTVA_Encaissements,&lt;br /&gt;
    typeEcriture_Brouillard &lt;br /&gt;
   ]); &lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Type&lt;br /&gt;
  vueUpdateReglement = viewOf(TReglement)&lt;br /&gt;
   vl:TsqlOperation = join('(opeId=%ArgOpeId) and (operation=%ArgOperation) and (oidSourceObject=self.oid)'); &lt;br /&gt;
   oidEcriture:TOID = oidEcriture; &lt;br /&gt;
   oidTargetEcriture:TOID = vl.oidTargetObject; &lt;br /&gt;
   oidBordereau:TOID = oidBordereauReglement; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 // Met à jour l'oidEcriture créée sur les réglements correspondants&lt;br /&gt;
 ..&lt;br /&gt;
 procedure _doUpdateReglementsEcriture(iOidPiece:string; iOpeId:string);&lt;br /&gt;
 var sel:TSelector; &lt;br /&gt;
 begin&lt;br /&gt;
   sel := vueUpdateReglement.CreateSelector('(oidBordereau=%1)','',True,[oidBordereauReglement]); &lt;br /&gt;
   sel.AddParameter('ArgOpeId',iOpeId); &lt;br /&gt;
   sel.AddParameter('ArgOperation','EcrReg'); &lt;br /&gt;
   //&lt;br /&gt;
   sel.Update(['oidEcriture'],['oidTargetEcriture']); &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  aOpeId := CreateGuid;&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     aOidPiece := _doCreatePiece();&lt;br /&gt;
     _doCreateEcritureReglements(aOidPiece,aOpeId);&lt;br /&gt;
     _doUpdateReglementsEcriture(aOidPice,aOpeId); &lt;br /&gt;
     ...&lt;br /&gt;
     TsqlOperation.CleanOpe(aOpeId);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UpdateFrom()===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function updateFrom(sel:TSelector; iMatchedProps:Array of string; iUpdatedProps:Array of string; iUpdatedValue:Array of variant):Integer;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permet de mettre à jour une classe à partir d'un sélecteur et d'une colonne de correspondance.&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;
Type&lt;br /&gt;
  // Update the temp table &lt;br /&gt;
  vueTemp = viewOf(TempLettrage)&lt;br /&gt;
    reference1:string = reference1;&lt;br /&gt;
    reference2:string = reference2;&lt;br /&gt;
    modeLettrage:Integer = modeLettrage; &lt;br /&gt;
  end;&lt;br /&gt;
   &lt;br /&gt;
  vueRef1 = viewOf(TempLettrage)&lt;br /&gt;
    //ACount:Integer = count(id);&lt;br /&gt;
    ATotal:Currency = sumSign(montant:TCValue,sens,'1');&lt;br /&gt;
    reference1:string = reference1; &lt;br /&gt;
    [(modeLettrage=0) and (reference1&amp;lt;&amp;gt;'')] &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
var selT,selG:TSelector;&lt;br /&gt;
begin&lt;br /&gt;
  withP long transaction do&lt;br /&gt;
    begin&lt;br /&gt;
     // for updating the temp table on &amp;quot;match&amp;quot; &lt;br /&gt;
     selT := vueTemp.CreateSelector('','',True,[]);&lt;br /&gt;
&lt;br /&gt;
     // Lettrage sur reference 1 &lt;br /&gt;
     selG := vueRef1.CreateSelector('(ATotal=0)','',True,[]);&lt;br /&gt;
     selG.useCTE := True; &lt;br /&gt;
     selT.UpdateFrom(selG,['reference1'],['modeLettrage'],[1]); &lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
with CTE as (&lt;br /&gt;
select sum(case when t0.sens=1 then ISNULL(t0.montant_TCValue, 0) else -ISNULL(t0.montant_TCValue, 0) end)  as &amp;quot;ATotal&amp;quot;,t0.reference1  as &amp;quot;reference1&amp;quot;&lt;br /&gt;
from dbo.TEMPLETTRAGE t0 WITH (NOLOCK)&lt;br /&gt;
where ((t0.modeLettrage = 0) and (t0.reference1 IS NOT NULL))&lt;br /&gt;
group by t0.reference1&lt;br /&gt;
)&lt;br /&gt;
merge into dbo.TEMPLETTRAGE tm0 using (&lt;br /&gt;
SELECT  *&lt;br /&gt;
FROM CTE&lt;br /&gt;
Where (ATotal = 0.0000)&lt;br /&gt;
) tm1 on (tm1.reference1=tm0.reference1)&lt;br /&gt;
when matched then update set&lt;br /&gt;
tm0.modeLettrage = 1&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opérations ensemblistes SQL==&lt;br /&gt;
&lt;br /&gt;
Des opérations ensemblistes utilisant des tables SQL temporaires peuvent être réalisées en utilisant l'opération InserInto du selecteur.&lt;br /&gt;
&lt;br /&gt;
===Table temporaire===&lt;br /&gt;
&lt;br /&gt;
* TDatabase.AllocTempTable(JobId:string)&lt;br /&gt;
: Génère un nom de table temporaire&lt;br /&gt;
&lt;br /&gt;
* TDatabase.DropTempTables(JobId:string)&lt;br /&gt;
: Supprime (drop) les tables temporaires&lt;br /&gt;
&lt;br /&gt;
===Vue SQL locale===&lt;br /&gt;
&lt;br /&gt;
Une vue SQL locale permet d'utiliser une table SQL comme source d'opération d'un sélecteur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // define an interface&lt;br /&gt;
  intf = interface&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // create a view which support the interface&lt;br /&gt;
  // will be used to create the temp table&lt;br /&gt;
  //&lt;br /&gt;
  vue = viewOf(MyClass,intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // define a sql class based on the interface&lt;br /&gt;
  //&lt;br /&gt;
  sql = sqlClass(intf)&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // view on the sql class&lt;br /&gt;
  //&lt;br /&gt;
  vue2 = viewOf(sql)&lt;br /&gt;
   ...&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
var sel:Tselector; aJob,aTempTable:string; keepTables:boolean;&lt;br /&gt;
begin&lt;br /&gt;
  // Alloc a temp table name&lt;br /&gt;
  //&lt;br /&gt;
  aJob := CreateGuid;&lt;br /&gt;
  aTempTable := ClassManager.DefDatabase.AllocTempTable(aJob);&lt;br /&gt;
  KeepTables := false; // for debuging&lt;br /&gt;
  try&lt;br /&gt;
   // Create a temp table from MyClass view&lt;br /&gt;
   //&lt;br /&gt;
   sel := vue.CreateSelector(...);&lt;br /&gt;
   sel.insertInto(aTempTable,[...],[...]); // we create a tempTable&lt;br /&gt;
&lt;br /&gt;
   // Query the temp table throught the vue2 &lt;br /&gt;
   //&lt;br /&gt;
   sel := vue2.CreateSelector(...);&lt;br /&gt;
   sel.SourceTableName := aTempTable; // because we select the tempTable&lt;br /&gt;
&lt;br /&gt;
  ...&lt;br /&gt;
  finally&lt;br /&gt;
  if not KeepTables then ClassManager.DefDatabase.DropTempTables(aJob); &lt;br /&gt;
  end; &lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Updater==&lt;br /&gt;
&lt;br /&gt;
Classe technique permettant de mettre à jour un attribut sur un ensemble d'objet.&lt;br /&gt;
&lt;br /&gt;
'''Exemple : Mise à jour des compteurs qui ne peuvent pas être déterminés en SQL'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
Type&lt;br /&gt;
  // Should returns all attributes part of the counter&lt;br /&gt;
  //&lt;br /&gt;
  vueNumeroPiece = viewOf(TPiece)&lt;br /&gt;
   pDate:TDatetime = pDate;&lt;br /&gt;
   numero:TCounter = numero; &lt;br /&gt;
  end; &lt;br /&gt;
&lt;br /&gt;
 procedure _doUpdateNumeroPiece(iOidPiece:string);&lt;br /&gt;
 var sel:TSelector; vueNP:vueNumeroPiece; upd:TUpdater;&lt;br /&gt;
 begin&lt;br /&gt;
   upd := TPiece.CreateUpdater('numero'); &lt;br /&gt;
   // &lt;br /&gt;
   sel := vueNumeroPiece.CreateSelector('(oid=%1)','',True,[iOidPiece]);&lt;br /&gt;
   forEach vueNP in sel.AsCursor do&lt;br /&gt;
    begin&lt;br /&gt;
      vueNP.numero.AllocValue;&lt;br /&gt;
      upd.AddValue(vueNP.OID,vueNP.numero.value); &lt;br /&gt;
    end; &lt;br /&gt;
   //&lt;br /&gt;
   upd.Execute; &lt;br /&gt;
 end; &lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  &lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
&lt;br /&gt;
* [[Améliorations des contrôles d'interface (Version 11.00 2025 r2)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 2025 R2]]&lt;br /&gt;
[[Category:Release note]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/TsqlOperation_(class)</id>
		<title>TsqlOperation (class)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/TsqlOperation_(class)"/>
				<updated>2025-12-23T11:00:52Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « {{version2025r2}}  ==Introduction==  La classe TsqlOperation est une classe SQL utilisée dans les opérations SQL exécutées par des sélecteurs.  {|class=&amp;quot;wikitable&amp;quot; |-... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
La classe TsqlOperation est une classe SQL utilisée dans les opérations SQL exécutées par des sélecteurs.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Colonne&lt;br /&gt;
!Type&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|Identity&lt;br /&gt;
|Identifiant unique&lt;br /&gt;
|-&lt;br /&gt;
|opeId&lt;br /&gt;
|string&lt;br /&gt;
|Identifiant d'opération&lt;br /&gt;
|-&lt;br /&gt;
|action&lt;br /&gt;
|string&lt;br /&gt;
|Action SQL&lt;br /&gt;
|-&lt;br /&gt;
|operation&lt;br /&gt;
|string&lt;br /&gt;
|Operation SQL&lt;br /&gt;
|-&lt;br /&gt;
|oidTargeObject&lt;br /&gt;
|TOID&lt;br /&gt;
|Identifiant de l'objet créé / modifié&lt;br /&gt;
|-&lt;br /&gt;
|oidSourceObject&lt;br /&gt;
|TOID&lt;br /&gt;
|Identifiant de l'objet source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[Selecteur (tech)|Sélecteur]]&lt;br /&gt;
* [[CopyTo (selector)|Sélecteur CopyTo]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Code métier}}&lt;br /&gt;
[[category:Classes frameworks]]&lt;br /&gt;
[[category:version2025r2]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Cat%C3%A9gorie:Version2025r2</id>
		<title>Catégorie:Version2025r2</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Cat%C3%A9gorie:Version2025r2"/>
				<updated>2025-12-23T10:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : Page créée avec « __NOTOC__ »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Selecteur_(tech)</id>
		<title>Selecteur (tech)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Selecteur_(tech)"/>
				<updated>2025-12-23T10:44:57Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Les sélecteurs sont des objets techniques permettant d'encapsuler une sélection sur une classe.&lt;br /&gt;
&lt;br /&gt;
A partir d'un sélecteur il est possible de réaliser des opérations sur l'ensemble des objets représentés par la sélection.&lt;br /&gt;
&lt;br /&gt;
===Création d'un sélecteur===&lt;br /&gt;
&lt;br /&gt;
A partir d'une classe métier&lt;br /&gt;
&lt;br /&gt;
* [[CreateSelector (class)|CreateSelector]]&lt;br /&gt;
&lt;br /&gt;
A partir du [[ClassManager_(code)|class manager]]&lt;br /&gt;
&lt;br /&gt;
* [[CreateSelector (CM)|CreateSelector]]&lt;br /&gt;
* [[CreateSelectorWhere (CM)|CreateSelectorWhere]]&lt;br /&gt;
&lt;br /&gt;
===Attributs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[ClassName (selector)|ClassName]]&lt;br /&gt;
|Nom de la classe sur laquelle porte la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[OrderBy (selector)|OrderBy]]&lt;br /&gt;
|Ordre de tri de la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[Where (selector)|Where]]&lt;br /&gt;
|Clause de recherche de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Descendants (selector)|Descendants]]&lt;br /&gt;
|Inclure les objets descendants&lt;br /&gt;
|-&lt;br /&gt;
|[[ArgCount (selector)|ArgCount]]&lt;br /&gt;
|Nombre d'arguments de la clause where&lt;br /&gt;
|-&lt;br /&gt;
|[[Args (selector)|Args[]]]&lt;br /&gt;
|Argument de la clause where&lt;br /&gt;
|-&lt;br /&gt;
|[[AgregateCount (selector)|AgregateCount]]&lt;br /&gt;
|Nombre d'agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[Agregates (selector)|Agregates[]]]&lt;br /&gt;
|Agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[AgregatesOpes (selector)|AgregateOpes[]]]&lt;br /&gt;
|Opérateurs des agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[GroupByCount (selector)|GroupByCount]]&lt;br /&gt;
|Nombre de regroupements&lt;br /&gt;
|-&lt;br /&gt;
|[[GroupBys (selector)|GroupBys[]]]&lt;br /&gt;
|Regroupements&lt;br /&gt;
|-&lt;br /&gt;
|[[MaxInstances (selector)|MaxInstances]]&lt;br /&gt;
|Nombre maximum d'instance retournées&lt;br /&gt;
|-&lt;br /&gt;
|[[ClassFilter (selector)|ClassFilter]]&lt;br /&gt;
|Filtre de classe&lt;br /&gt;
|-&lt;br /&gt;
|[[AnyWhere (selector)|AnyWhere]]&lt;br /&gt;
|Appliquer à tous les périmètres&lt;br /&gt;
|-&lt;br /&gt;
|[[DebugString (selector)|DebugString]]&lt;br /&gt;
|Chaîne de debug&lt;br /&gt;
|-&lt;br /&gt;
|[[ApplyRights (selector)|ApplyRights]]&lt;br /&gt;
|Applique les droits {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[UseCTE (selector)|UseCTE]]&lt;br /&gt;
|Utilise une requête &amp;quot;Common Table Expression&amp;quot; {{version11}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateStamp (selector)|UpdateStamp]]&lt;br /&gt;
|Met à jour les champs UpdStamp et UpdDate dans les update {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateCumuls (selector)|UpdateCumuls]]&lt;br /&gt;
|Met à jour les cumuls si la classe en possède {{version2025r2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Pagination'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[PageMode (selector)|PageMode]]&lt;br /&gt;
|Utilise une requête paginée&lt;br /&gt;
|-&lt;br /&gt;
|[[PageOffset (selector)|PageOffset]]&lt;br /&gt;
|Offset dans la pagination&lt;br /&gt;
|-&lt;br /&gt;
|[[PageSize (selector)|PageSize]]&lt;br /&gt;
|Taille de page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Résultat d'opération SQL {{version2025r2}}'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeStamp (selector)|LastOpeStamp]]&lt;br /&gt;
|Dernier UpdStamp affecté par l'opération&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeFirstOID (selector)|LastOpeFirstOID]]&lt;br /&gt;
|Dernier premier OID affecté par l'opération&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeAffected (selector)|LastOpeAffected]]&lt;br /&gt;
|Dernier nombre d'objets affectés par l'opération&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Identifiants d'opération SQL {{version2025r2}}'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[OpeClass (selector)|OpeClass]]&lt;br /&gt;
|Classe affectée par l'opération SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[Operation (selector)|Operation]]&lt;br /&gt;
|Identfiant d'opérations SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[OperationId (selector)|OperationID]]&lt;br /&gt;
|Identfiant d'ensemble d'opérations SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[OperationId (selector)|OpeID]]&lt;br /&gt;
|Identfiant d'ensemble d'opérations SQL (OperationId)&lt;br /&gt;
|-&lt;br /&gt;
|[[OpeSource (selector)|OpeSource]]&lt;br /&gt;
|Source de l'opération SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[SourceTableName (selector)|SourceTableName]]&lt;br /&gt;
|Nom de table temporaire pour opération sur une table temporaire&lt;br /&gt;
|-&lt;br /&gt;
|[[MergeTableName (selector)|MergeTableName]]&lt;br /&gt;
|Nom de table temporaire pour opération de mise à jour sur une table temporaire&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes d'instance===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[AsList (selector)|AsList]]&lt;br /&gt;
|Retourne une liste basée sur la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[AsCursor (selector)|AsCursor]]&lt;br /&gt;
|Retourne un curseur basé sur la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[Count (selector)|Count]]&lt;br /&gt;
|Retourne le nombre d'objets inclus dans la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Concat (selector)|Concat]]&lt;br /&gt;
|Retourne la valeur concaténée d'un attribut de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Invoke (selector)|Invoke]]&lt;br /&gt;
|Exécute une méthode pour chaque objet de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[InQueue (selector)|InQueue]]&lt;br /&gt;
|Insère les objets de la sélection dans une file d'attente&lt;br /&gt;
|-&lt;br /&gt;
|[[Renumber (selector)|Renumber]]&lt;br /&gt;
|Renumérote un attribut des objets sélectionnés par le sélecteur&lt;br /&gt;
|-&lt;br /&gt;
|[[Update (selector)|Update]]&lt;br /&gt;
|Met à jour les objets sélectionnés par le sélecteur&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateFrom (selector)|UpdateFrom]]&lt;br /&gt;
|Met à jour les objets sélectionnés par le sélecteur à partir d'un sélecteur source {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[CopyTo (selector)|CopyTo]]&lt;br /&gt;
|Copie les objets de la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[InsertInto (selector)|InsertInto]]&lt;br /&gt;
|Insère les objets SQL de la sélection dans une table temporaire {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[AddConstraint (selector)|AddConstraint]]&lt;br /&gt;
|Ajouter une contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[AddColumn (selector)|AddColumn]]&lt;br /&gt;
|Ajouter une colonne &lt;br /&gt;
|-&lt;br /&gt;
|[[Export (selector)|Export]]&lt;br /&gt;
|Export les objets {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[ToJson (selector)|ToJson]]&lt;br /&gt;
|Sérialise les objets de la sélection en format json {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[ToJsonEx (selector)|ToJsonEx]]&lt;br /&gt;
|Sérialise les objets de la sélection en format json avec options {{version2025r2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Paramètres des requêts'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[AddParameter (selector)|AddParameter]]&lt;br /&gt;
|Ajoute un paramètre {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[RmvParameter (selector)|RmvParameter]]&lt;br /&gt;
|Supprime un paramètre {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GetParameter (selector)|GetParameter]]&lt;br /&gt;
|Retourne un paramètre du sélecteur {{version2024r1}}&lt;br /&gt;
|-&lt;br /&gt;
|[[HasParameter (selector)|HasParameter]]&lt;br /&gt;
|Test si le sélecteur à un paramètre {{version2024r1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes de classe===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Objets techniques]]&lt;br /&gt;
[[Category:Sélecteur]]&lt;br /&gt;
[[Category:Version700]]&lt;br /&gt;
[[Category:version11]]&lt;br /&gt;
[[Category:version2025r2]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/Selecteur_(tech)</id>
		<title>Selecteur (tech)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/Selecteur_(tech)"/>
				<updated>2025-12-23T10:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : /* Méthodes d'instance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Les sélecteurs sont des objets techniques permettant d'encapsuler une sélection sur une classe.&lt;br /&gt;
&lt;br /&gt;
A partir d'un sélecteur il est possible de réaliser des opérations sur l'ensemble des objets représentés par la sélection.&lt;br /&gt;
&lt;br /&gt;
===Création d'un sélecteur===&lt;br /&gt;
&lt;br /&gt;
A partir d'une classe métier&lt;br /&gt;
&lt;br /&gt;
* [[CreateSelector (class)|CreateSelector]]&lt;br /&gt;
&lt;br /&gt;
A partir du [[ClassManager_(code)|class manager]]&lt;br /&gt;
&lt;br /&gt;
* [[CreateSelector (CM)|CreateSelector]]&lt;br /&gt;
* [[CreateSelectorWhere (CM)|CreateSelectorWhere]]&lt;br /&gt;
&lt;br /&gt;
===Attributs===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[ClassName (selector)|ClassName]]&lt;br /&gt;
|Nom de la classe sur laquelle porte la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[OrderBy (selector)|OrderBy]]&lt;br /&gt;
|Ordre de tri de la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[Where (selector)|Where]]&lt;br /&gt;
|Clause de recherche de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Descendants (selector)|Descendants]]&lt;br /&gt;
|Inclure les objets descendants&lt;br /&gt;
|-&lt;br /&gt;
|[[ArgCount (selector)|ArgCount]]&lt;br /&gt;
|Nombre d'arguments de la clause where&lt;br /&gt;
|-&lt;br /&gt;
|[[Args (selector)|Args[]]]&lt;br /&gt;
|Argument de la clause where&lt;br /&gt;
|-&lt;br /&gt;
|[[AgregateCount (selector)|AgregateCount]]&lt;br /&gt;
|Nombre d'agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[Agregates (selector)|Agregates[]]]&lt;br /&gt;
|Agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[AgregatesOpes (selector)|AgregateOpes[]]]&lt;br /&gt;
|Opérateurs des agrégats&lt;br /&gt;
|-&lt;br /&gt;
|[[GroupByCount (selector)|GroupByCount]]&lt;br /&gt;
|Nombre de regroupements&lt;br /&gt;
|-&lt;br /&gt;
|[[GroupBys (selector)|GroupBys[]]]&lt;br /&gt;
|Regroupements&lt;br /&gt;
|-&lt;br /&gt;
|[[MaxInstances (selector)|MaxInstances]]&lt;br /&gt;
|Nombre maximum d'instance retournées&lt;br /&gt;
|-&lt;br /&gt;
|[[ClassFilter (selector)|ClassFilter]]&lt;br /&gt;
|Filtre de classe&lt;br /&gt;
|-&lt;br /&gt;
|[[AnyWhere (selector)|AnyWhere]]&lt;br /&gt;
|Appliquer à tous les périmètres&lt;br /&gt;
|-&lt;br /&gt;
|[[DebugString (selector)|DebugString]]&lt;br /&gt;
|Chaîne de debug&lt;br /&gt;
|-&lt;br /&gt;
|[[ApplyRights (selector)|ApplyRights]]&lt;br /&gt;
|Applique les droits {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[UseCTE (selector)|UseCTE]]&lt;br /&gt;
|Utilise une requête &amp;quot;Common Table Expression&amp;quot; {{version11}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Mise à jour'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateStamp (selector)|UpdateStamp]]&lt;br /&gt;
|Met à jour les champs UpdStamp et UpdDate dans les update {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateCumuls (selector)|UpdateCumuls]]&lt;br /&gt;
|Met à jour les cumuls si la classe en possède {{version2025r2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Pagination'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[PageMode (selector)|PageMode]]&lt;br /&gt;
|Utilise une requête paginée&lt;br /&gt;
|-&lt;br /&gt;
|[[PageOffset (selector)|PageOffset]]&lt;br /&gt;
|Offset dans la pagination&lt;br /&gt;
|-&lt;br /&gt;
|[[PageSize (selector)|PageSize]]&lt;br /&gt;
|Taille de page&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Résultat d'opération SQL {{version2025r2}}'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeStamp (selector)|LastOpeStamp]]&lt;br /&gt;
|Dernier UpdStamp affecté par l'opération&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeFirstOID (selector)|LastOpeFirstOID]]&lt;br /&gt;
|Dernier premier OID affecté par l'opération&lt;br /&gt;
|-&lt;br /&gt;
|[[LastOpeAffected (selector)|LastOpeAffected]]&lt;br /&gt;
|Dernier nombre d'objets affectés par l'opération&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Identifiants d'opération SQL {{version2025r2}}'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Attribut&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[OpeClass (selector)|OpeClass]]&lt;br /&gt;
|Classe affectée par l'opération SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[Operation (selector)|Operation]]&lt;br /&gt;
|Identfiant d'opérations SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[OperationId (selector)|OperationID]]&lt;br /&gt;
|Identfiant d'ensemble d'opérations SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[OperationId (selector)|OpeID]]&lt;br /&gt;
|Identfiant d'ensemble d'opérations SQL (OperationId)&lt;br /&gt;
|-&lt;br /&gt;
|[[OpeSource (selector)|OpeSource]]&lt;br /&gt;
|Source de l'opération SQL&lt;br /&gt;
|-&lt;br /&gt;
|[[SourceTableName (selector)|SourceTableName]]&lt;br /&gt;
|Nom de table temporaire pour opération sur une table temporaire&lt;br /&gt;
|-&lt;br /&gt;
|[[MergeTableName (selector)|MergeTableName]]&lt;br /&gt;
|Nom de table temporaire pour opération de mise à jour sur une table temporaire&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes d'instance===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[AsList (selector)|AsList]]&lt;br /&gt;
|Retourne une liste basée sur la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[AsCursor (selector)|AsCursor]]&lt;br /&gt;
|Retourne un curseur basé sur la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[Count (selector)|Count]]&lt;br /&gt;
|Retourne le nombre d'objets inclus dans la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Concat (selector)|Concat]]&lt;br /&gt;
|Retourne la valeur concaténée d'un attribut de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[Invoke (selector)|Invoke]]&lt;br /&gt;
|Exécute une méthode pour chaque objet de la sélection.&lt;br /&gt;
|-&lt;br /&gt;
|[[InQueue (selector)|InQueue]]&lt;br /&gt;
|Insère les objets de la sélection dans une file d'attente&lt;br /&gt;
|-&lt;br /&gt;
|[[Renumber (selector)|Renumber]]&lt;br /&gt;
|Renumérote un attribut des objets sélectionnés par le sélecteur&lt;br /&gt;
|-&lt;br /&gt;
|[[Update (selector)|Update]]&lt;br /&gt;
|Met à jour les objets sélectionnés par le sélecteur&lt;br /&gt;
|-&lt;br /&gt;
|[[UpdateFrom (selector)|UpdateFrom]]&lt;br /&gt;
|Met à jour les objets sélectionnés par le sélecteur à partir d'un sélecteur source {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[CopyTo (selector)|CopyTo]]&lt;br /&gt;
|Copie les objets de la sélection&lt;br /&gt;
|-&lt;br /&gt;
|[[InsertInto (selector)|InsertInto]]&lt;br /&gt;
|Insère les objets SQL de la sélection dans une table temporaire {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[AddConstraint (selector)|AddConstraint]]&lt;br /&gt;
|Ajouter une contrainte&lt;br /&gt;
|-&lt;br /&gt;
|[[AddColumn (selector)|AddColumn]]&lt;br /&gt;
|Ajouter une colonne &lt;br /&gt;
|-&lt;br /&gt;
|[[Export (selector)|Export]]&lt;br /&gt;
|Export les objets {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[ToJson (selector)|ToJson]]&lt;br /&gt;
|Sérialise les objets de la sélection en format json {{version2025r2}}&lt;br /&gt;
|-&lt;br /&gt;
|[[ToJsonEx (selector)|ToJsonEx]]&lt;br /&gt;
|Sérialise les objets de la sélection en format json avec options {{version2025r2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Paramètres des requêts'''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Méthode&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|[[AddParameter (selector)|AddParameter]]&lt;br /&gt;
|Ajoute un paramètre {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[RmvParameter (selector)|RmvParameter]]&lt;br /&gt;
|Supprime un paramètre {{version11}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GetParameter (selector)|GetParameter]]&lt;br /&gt;
|Retourne un paramètre du sélecteur {{version2024r1}}&lt;br /&gt;
|-&lt;br /&gt;
|[[HasParameter (selector)|HasParameter]]&lt;br /&gt;
|Test si le sélecteur à un paramètre {{version2024r1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Méthodes de classe===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Objets techniques]]&lt;br /&gt;
[[Category:Sélecteur]]&lt;br /&gt;
[[Category:Version700]]&lt;br /&gt;
[[Category:version11]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/ToJson_(selector)</id>
		<title>ToJson (selector)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/ToJson_(selector)"/>
				<updated>2025-12-23T10:43:23Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;function ToJson(SA:TJson):Integer;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette méthode sérialise les objets de la sélection en json.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Nombre d'objets&lt;br /&gt;
|-&lt;br /&gt;
|SA&lt;br /&gt;
|Tableau json&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne le nombre d'objets affectés par l'opération.&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;
&lt;br /&gt;
//procedure TableRows(ST:TJsonStruct)&lt;br /&gt;
Type&lt;br /&gt;
  vue = viewOf(...)&lt;br /&gt;
   jsonName:Type(fmtOptions) = propPath;&lt;br /&gt;
   ....&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  sel := vue.CreateSelector('','',True,[]);&lt;br /&gt;
  sel.ToJson(ST.rows);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[ToJsonEx (selector)|ToJsonEx]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Selecteur (tech)}}&lt;br /&gt;
[[category:Sélecteur]]&lt;br /&gt;
[[Category:version11]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php/ToJsonEx_(selector)</id>
		<title>ToJsonEx (selector)</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php/ToJsonEx_(selector)"/>
				<updated>2025-12-23T10:43:08Z</updated>
		
		<summary type="html">&lt;p&gt;Syfre : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version2025r2}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='delphi'&amp;gt;function ToJsonEx(SA:TJson; iOptions:Integer):Integer;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette méthode sérialise les objets de la sélection en json.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Paramètre&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Nombre d'objets&lt;br /&gt;
|-&lt;br /&gt;
|SA&lt;br /&gt;
|Tableau json&lt;br /&gt;
|-&lt;br /&gt;
|iOptions&lt;br /&gt;
|Options de sérialisation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne le nombre d'objets affectés par l'opération en utilisant un jeu d'options.&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;
&lt;br /&gt;
//procedure TableRows(ST:TJsonStruct)&lt;br /&gt;
Type&lt;br /&gt;
  vue = viewOf(...)&lt;br /&gt;
   jsonName:Type(fmtOptions) = propPath;&lt;br /&gt;
   ....&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
  sel := vue.CreateSelector('','',True,[]);&lt;br /&gt;
  sel.ToJsonEx(ST.rows, sjoIdAsGuid);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
&lt;br /&gt;
* [[ToJson (selector)|ToJson]]&lt;br /&gt;
&lt;br /&gt;
{{Footer|Selecteur (tech)}}&lt;br /&gt;
[[category:Sélecteur]]&lt;br /&gt;
[[Category:version11]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	</feed>