<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://wiki.sage.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chlem</id>
	<title>Wiki1000 - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sage.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chlem"/>
	<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php/Sp%C3%A9cial:Contributions/Chlem"/>
	<updated>2026-05-24T23:40:22Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Fournisseur_de_service_SMS&amp;diff=11026</id>
		<title>Fournisseur de service SMS</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Fournisseur_de_service_SMS&amp;diff=11026"/>
		<updated>2016-06-01T12:48:53Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version710}}&lt;br /&gt;
&lt;br /&gt;
Un fournisseur de service SMS configure un service capable d&#039;envoyer des SMS&lt;br /&gt;
&lt;br /&gt;
[[image:sms_service_provider.png]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|Un seul fournisseur peut être configuré}}&lt;br /&gt;
&lt;br /&gt;
L&#039;envoi de SMS est utilisé dans le cadre de la double authentification et de la récupération de mot de passe.&lt;br /&gt;
&lt;br /&gt;
[[category:Administration]]&lt;br /&gt;
[[Category:Version710]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Directives_conditionnelles_(langage)&amp;diff=11025</id>
		<title>Directives conditionnelles (langage)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Directives_conditionnelles_(langage)&amp;diff=11025"/>
		<updated>2016-06-01T12:43:56Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version710}}&lt;br /&gt;
&lt;br /&gt;
La directive de compilation conditionnelle &amp;quot;define&amp;quot; permet de définir une condition de compilation.&lt;br /&gt;
&lt;br /&gt;
===Définir une directive conditionnelle===&lt;br /&gt;
Les directives de compilation conditionnelle peuvent être définies :&lt;br /&gt;
&lt;br /&gt;
* Localement au niveau d&#039;une procédure&lt;br /&gt;
: Une directive définie localement a une portée réduite au corps de la procédure.&lt;br /&gt;
&lt;br /&gt;
* Globalement au niveau du concepteur&lt;br /&gt;
: Une directive définie au niveau du concepteur a une portée globale dans l&#039;ensemble du code.&lt;br /&gt;
&lt;br /&gt;
Pour définir une directive locale utilisez le mot clé {$DEFINE xx} :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure foo();&lt;br /&gt;
{$DEFINE FIX_1}&lt;br /&gt;
begin&lt;br /&gt;
  {$IFDEF FIX_1}&lt;br /&gt;
  // compiled if FIX_1 is defined&lt;br /&gt;
  {$ELSE}&lt;br /&gt;
  // compiled if FIX_1 is not defined&lt;br /&gt;
  {$ENDIF}&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour définir une directive de compilation globale ne l&#039;a définissez pas au niveau du corps de la procédure :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure foo();&lt;br /&gt;
begin&lt;br /&gt;
  {$IFDEF FIX_1}&lt;br /&gt;
  // compiled if FIX_1 is defined&lt;br /&gt;
  {$ELSE}&lt;br /&gt;
  // compiled if FIX_1 is not defined&lt;br /&gt;
  {$ENDIF}&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les directives définies globalement apparaissent dans le dialogue de préférence du concepteur :&lt;br /&gt;
&lt;br /&gt;
[[image:designer_pref_defines.png]]&lt;br /&gt;
&lt;br /&gt;
Vous pouvez activer ou désactiver une directive dans ce dialogue.&lt;br /&gt;
&lt;br /&gt;
Notez que :&lt;br /&gt;
* Les directives globales sont identifiées au moment de la compilation&lt;br /&gt;
* Lorsque vous activez / désactivez une directive les procédures impactées sont recompilées.&lt;br /&gt;
&lt;br /&gt;
Lorsque la directive n&#039;apparait pas dans ce dialogue cela signifie que le code la comportant n&#039;a pas encore été compilé. Vous pouvez soit créer explicitement la directive (fonction click droit &amp;quot;Ajouter&amp;quot;) soit compiler le code correspondant.&lt;br /&gt;
&lt;br /&gt;
===Utilisation des directives conditionnelles===&lt;br /&gt;
Les directives conditionnelles s&#039;utilisent avec :&lt;br /&gt;
&lt;br /&gt;
* {$IFDEF xx}&lt;br /&gt;
:Bloc compilé si la directive est définie&lt;br /&gt;
* {$ELSE}&lt;br /&gt;
:Bloc compilé si la directive n&#039;est pas définie&lt;br /&gt;
* {$ENDIF}&lt;br /&gt;
: Termine le bloc conditionnel&lt;br /&gt;
&lt;br /&gt;
[[Category:Version710]]&lt;br /&gt;
[[Category:Langage]]&lt;br /&gt;
[[Category:Directives]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Contr%C3%B4le_des_autorisations_par_ACL_(Administration)&amp;diff=11024</id>
		<title>Contrôle des autorisations par ACL (Administration)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Contr%C3%B4le_des_autorisations_par_ACL_(Administration)&amp;diff=11024"/>
		<updated>2016-06-01T12:19:55Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version710}}&lt;br /&gt;
&lt;br /&gt;
Le contrôle des autorisations par ACL est une fonctionnalité permettant de contrôler à quelles fonctionnalités un utilisateur a accès.&lt;br /&gt;
&lt;br /&gt;
===Contrôle d&#039;accès===&lt;br /&gt;
Historiquement la gestion des autorisations dans Sage FRP 1000 est implémentée par la gestion des menus. L&#039;accès aux interfaces, et donc les autorisations correspondantes, est conditionné par les menus auquel l&#039;utilisateur a accès. Toutefois, et particulièrement à partir de la version Web, il existe plusieurs manières d&#039;ouvrir un écran sans passer par les menus. La gestion d&#039;autorisation par les menus n&#039;était donc pas suffisante.&lt;br /&gt;
&lt;br /&gt;
La nouvelle gestion introduite par cette fonctionnalité permet de combler cette faille, en effet le nouveau contrôle d&#039;autorisation est appliqué globalement quel que soit la manière dont l&#039;interface est ouverte.&lt;br /&gt;
&lt;br /&gt;
===Traçabilité===&lt;br /&gt;
La nouvelle gestion des accès permet aussi la traçabilité des accès, elle permet de répondre aux questions suivantes :&lt;br /&gt;
&lt;br /&gt;
* Quelles sont les interfaces autorisées pour un utilisateur ?&lt;br /&gt;
* Quelles étaient les interfaces autorisées pour un utilisateur à une certaine date ?&lt;br /&gt;
* Quelles sont les utilisateurs autorisés pour une interface ?&lt;br /&gt;
* Quelles étaient les utilisateurs autorisées pour une interface a une certaine date ?&lt;br /&gt;
&lt;br /&gt;
===Listes d&#039;autorisation===&lt;br /&gt;
La gestion des autorisations s&#039;appuie sur le concept de liste blanche et liste noire.&lt;br /&gt;
&lt;br /&gt;
La liste blanche est constituée des objets :&lt;br /&gt;
&lt;br /&gt;
* Pour lesquels l&#039;utilisateur est explicitement autorisé, ce qui inclue ses personnalisations.&lt;br /&gt;
* Pour lesquels l&#039;utilisateur est implicitement autorisé, ce qui inclue les objets référencés par un menu auquel l&#039;utilisateur est rattaché (premier niveau) ET les objets référencés par ces objets (niveau supérieur)&lt;br /&gt;
* Les objets globaux pour lesquels tous les utilisateurs sont autorisés.&lt;br /&gt;
&lt;br /&gt;
La liste noire est constituée des objets :&lt;br /&gt;
&lt;br /&gt;
* Pour lesquels l&#039;utilisateur est explicitement interdit.&lt;br /&gt;
&lt;br /&gt;
===Les objets globaux comprennent des interfaces qui sont toujours autorisées :===&lt;br /&gt;
* Les écrans de connexion et de changement de mot de passe&lt;br /&gt;
* Les écrans de gestion de compte&lt;br /&gt;
* L’écran notifiant une interdiction d&#039;accès&lt;br /&gt;
&lt;br /&gt;
===La liste des objets référencés===&lt;br /&gt;
Cette liste est une table de références croisées entre les objets d&#039;interface. Par exemple lorsqu&#039;une interface (I1) contient un lien vers une autre interface (I2) cela constitue une référence R1 référençant I2 avec comme source I1&lt;br /&gt;
&lt;br /&gt;
===La liste blanche des objets implicites===&lt;br /&gt;
La liste blanche est alimentée :&lt;br /&gt;
&lt;br /&gt;
* Par les objets de premier niveau référencés par les entrées de menu&lt;br /&gt;
* Par les objets de niveau supérieur référencés par la liste des références.&lt;br /&gt;
&lt;br /&gt;
===Objets concernés===&lt;br /&gt;
Les objets concernés par le contrôle d&#039;accès :&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Type d&#039;objet&lt;br /&gt;
!Nom d&#039;objet&lt;br /&gt;
!Contrôle liste blanche&lt;br /&gt;
!Contrôle liste noire&lt;br /&gt;
|-&lt;br /&gt;
|Ecrans &lt;br /&gt;
|*.dfm &lt;br /&gt;
|Oui &lt;br /&gt;
|Oui&lt;br /&gt;
|-&lt;br /&gt;
|Formats d&#039;édition &lt;br /&gt;
|mod*.dfm &lt;br /&gt;
|Non &lt;br /&gt;
|Oui&lt;br /&gt;
|-&lt;br /&gt;
|Reports &lt;br /&gt;
|*.drp &lt;br /&gt;
|Non &lt;br /&gt;
|Oui&lt;br /&gt;
|-&lt;br /&gt;
|Formats d&#039;export &lt;br /&gt;
|&lt;br /&gt;
|Non &lt;br /&gt;
|Oui&lt;br /&gt;
|-&lt;br /&gt;
|Formats d&#039;import &lt;br /&gt;
|&lt;br /&gt;
|Non &lt;br /&gt;
|Oui&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Mise à jour de la liste d&#039;autorisation===&lt;br /&gt;
La listes d&#039;autorisation est impactées :&lt;br /&gt;
* Par les modifications d&#039;un menu&lt;br /&gt;
* Par les associations explicite d&#039;objet à un utilisateur.&lt;br /&gt;
* Par la modification des références entre interfaces &lt;br /&gt;
&lt;br /&gt;
Tous ces cas sont gérés automatiquement excepté le cas ou les références entre interfaces sont modifiées, par exemple si vous ajouter un lien vers une interface (Int référencée) à partir d&#039;une autre interface (Int. source)&lt;br /&gt;
&lt;br /&gt;
Dans ce cas vous devez :&lt;br /&gt;
* Mettre à jour la table des références de l&#039;interface source.&lt;br /&gt;
* Mettre à jour la liste des autorisation.&lt;br /&gt;
&lt;br /&gt;
===Rôle développeur===&lt;br /&gt;
En mode développement le contrôle d&#039;accès peut devenir pénalisant car le développeur doit maintenir la liste d&#039;autorisation à jour au cours du développement.&lt;br /&gt;
&lt;br /&gt;
Pour cette raison les utilisateurs ayant le rôle développeur (Droit d&#039;ouvrir le concepteur de modèle) peuvent outre passé le contrôle d&#039;accès lors de l&#039;ouverture d&#039;une interface.&lt;br /&gt;
&lt;br /&gt;
[[category:Administration]]&lt;br /&gt;
[[category:Autorisations]]&lt;br /&gt;
[[category:Version710]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Contr%C3%B4le_des_acc%C3%A8s_par_ACL_(Administration)&amp;diff=11023</id>
		<title>Contrôle des accès par ACL (Administration)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Contr%C3%B4le_des_acc%C3%A8s_par_ACL_(Administration)&amp;diff=11023"/>
		<updated>2016-06-01T12:16:37Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version710}}&lt;br /&gt;
&lt;br /&gt;
Le contrôle des accès par ACL est une fonctionnalité permettant de contrôler les accréditations (qui a accès à quoi) de manière centralisée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Administration]]&lt;br /&gt;
[[category:Autorisations]]&lt;br /&gt;
[[category:Version710]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Configuration_des_applications_(administration)&amp;diff=11018</id>
		<title>Configuration des applications (administration)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Configuration_des_applications_(administration)&amp;diff=11018"/>
		<updated>2016-05-30T16:08:33Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version710}}&lt;br /&gt;
La configuration d&#039;application permet de définir des scripts de configuration qui seront exécutés au chargement de l&#039;application.&lt;br /&gt;
&lt;br /&gt;
Ces scripts permettent notamment :&lt;br /&gt;
* De définir des directives de compilation pour conditionner le code métier&lt;br /&gt;
* De définir des index personnalisés pour adapter les index aux usages du progiciel.&lt;br /&gt;
&lt;br /&gt;
===Pour définir une configuration===&lt;br /&gt;
Les configuration sont définies au niveau de l&#039;application puis associées aux applications dans un dossier.&lt;br /&gt;
&lt;br /&gt;
Pour définir une configuration :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-1.png]]&lt;br /&gt;
&lt;br /&gt;
puis saisissez le contenu du script :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-2.png]]&lt;br /&gt;
&lt;br /&gt;
===Pour associer une configuration===&lt;br /&gt;
Pour associer une configuration à une application dans le contexte d&#039;un dossier glisser l&#039;application sur le noeud &amp;quot;Configurations dans ce dossier&amp;quot; de l&#039;application :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-3.png]]&lt;br /&gt;
&lt;br /&gt;
Notez que :&lt;br /&gt;
* Une configuration peut être partagée par plusieurs contextes de dossier.&lt;br /&gt;
* La liste des configurations est ordonnée, l&#039;ordre de chargement de la configuration peut avoir une influence.&lt;br /&gt;
&lt;br /&gt;
Pour ordonner la liste des configurations :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-4.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de script de configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
begin&lt;br /&gt;
  // defines&lt;br /&gt;
  {$DEFINEGLOBAL FIX_MY_PROBLEM}&lt;br /&gt;
&lt;br /&gt;
  // index&lt;br /&gt;
  ModelManager.AddCustomIndex(&#039;WFAddress&#039;,&#039;Country,City&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
* [[AddCustomIndex (MM)|Ajout d&#039;index personnalisé]]&lt;br /&gt;
* [[AddSearchKey (MM)|Ajout de clé de recherche globale]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:Directives]]&lt;br /&gt;
[[Category:Version710]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=Configuration_des_applications_(administration)&amp;diff=11017</id>
		<title>Configuration des applications (administration)</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=Configuration_des_applications_(administration)&amp;diff=11017"/>
		<updated>2016-05-30T15:57:02Z</updated>

		<summary type="html">&lt;p&gt;Chlem : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version710}}&lt;br /&gt;
La configuration d&#039;application permet de définir des scripts de configuration qui seront exécutés au chargement de l&#039;application.&lt;br /&gt;
&lt;br /&gt;
Ces scripts permettent notamment :&lt;br /&gt;
* De définir des directives de compilation pour conditionner le code métier&lt;br /&gt;
* De définir des index personnalisés pour adapter les index aux usages du progiciel.&lt;br /&gt;
&lt;br /&gt;
===Pour définir une configuration===&lt;br /&gt;
Les configuration sont définies au niveau de l&#039;application puis associées aux applications dans un dossier.&lt;br /&gt;
&lt;br /&gt;
Pour définir une configuration :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-1.png]]&lt;br /&gt;
&lt;br /&gt;
puis saisissez le contenu du script :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-2.png]]&lt;br /&gt;
&lt;br /&gt;
===Pour associer une configuration===&lt;br /&gt;
Pour associer une configuration à une application dans le contexte d&#039;un dossier glisser l&#039;application sur le noeud &amp;quot;Configurations dans ce dossier&amp;quot; de l&#039;application :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-3.png]]&lt;br /&gt;
&lt;br /&gt;
Notez que :&lt;br /&gt;
* Une configuration peut être partagée par plusieurs contexte de dossier.&lt;br /&gt;
* La liste des configuration est ordonnée, l&#039;ordre de chargement de la configuration peut avoir une influence.&lt;br /&gt;
&lt;br /&gt;
Pour ordonner la liste des configurations :&lt;br /&gt;
&lt;br /&gt;
[[image:app-conf-4.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de script de configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
begin&lt;br /&gt;
  // defines&lt;br /&gt;
  {$DEFINEGLOBAL FIX_MY_PROBLEM}&lt;br /&gt;
&lt;br /&gt;
  // index&lt;br /&gt;
  ModelManager.AddCustomIndex(&#039;WFAddress&#039;,&#039;Country,City&#039;);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi:&lt;br /&gt;
* [[AddCustomIndex (MM)|Ajout d&#039;index personnalisé]]&lt;br /&gt;
* [[AddSearchKey (MM)|Ajout de clé de recherche globale]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Administration]]&lt;br /&gt;
[[Category:Directives]]&lt;br /&gt;
[[Category:Version710]]&lt;/div&gt;</summary>
		<author><name>Chlem</name></author>
	</entry>
</feed>