<?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/index.php?action=history&amp;feed=atom&amp;title=FindOrCreate_%28CM%29</id>
		<title>FindOrCreate (CM) - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="https://frp.sage.fr/wiki1000/index.php?action=history&amp;feed=atom&amp;title=FindOrCreate_%28CM%29"/>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;action=history"/>
		<updated>2026-05-30T17:25:18Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=11396&amp;oldid=prev</id>
		<title>Flfay le 8 mars 2017 à 07:32</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=11396&amp;oldid=prev"/>
				<updated>2017-03-08T07:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Version précédente&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Version du 8 mars 2017 à 07:32&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 6 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 6 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lorsque cette méthode est utilisée dans le cadre d'une exécution parallèle, elle assure que l'objet ne sera créé qu'une fois. Ceci suppose que la transaction séparée va échouer en cas de création de doublon, il faut donc que la classe de l'objet créé comporte une règle unique adéquate.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lorsque cette méthode est utilisée dans le cadre d'une exécution parallèle, elle assure que l'objet ne sera créé qu'une fois. Ceci suppose que la transaction séparée va échouer en cas de création de doublon, il faut donc que la classe de l'objet créé comporte une règle unique adéquate.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{warning|à l'intérieur d'une transaction longue, se comporte comme un find standard.}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Flfay</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10644&amp;oldid=prev</id>
		<title>Syfre le 9 octobre 2015 à 11:19</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10644&amp;oldid=prev"/>
				<updated>2015-10-09T11:19:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Version précédente&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Version du 9 octobre 2015 à 11:19&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 3 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 3 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cette fonction recherche un objet d'une classe métier répondant à une condition.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cette fonction recherche un objet d'une classe métier répondant à une condition.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Si l'objet n'est pas trouvé, la fonction exécute la méthode &amp;quot;Execute&amp;quot; de l'objet iDelegate dans une transaction séparée partagée, puis recherche de nouveau l'objet.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Si l'objet n'est pas trouvé, la fonction exécute la méthode &amp;quot;Execute&amp;quot; de l'objet iDelegate dans une &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Transaction privée|&lt;/ins&gt;transaction séparée partagée&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, puis recherche de nouveau l'objet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lorsque cette méthode est utilisée dans le cadre d'une exécution parallèle, elle assure que l'objet ne sera créé qu'une fois. Ceci suppose que la transaction séparée va échouer en cas de création de doublon, il faut donc que la classe de l'objet créé comporte une règle unique adéquate.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lorsque cette méthode est utilisée dans le cadre d'une exécution parallèle, elle assure que l'objet ne sera créé qu'une fois. Ceci suppose que la transaction séparée va échouer en cas de création de doublon, il faut donc que la classe de l'objet créé comporte une règle unique adéquate.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10643&amp;oldid=prev</id>
		<title>Syfre le 9 octobre 2015 à 11:18</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10643&amp;oldid=prev"/>
				<updated>2015-10-09T11:18:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Version précédente&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Version du 9 octobre 2015 à 11:18&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 110 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 110 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  end;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  end;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;end;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;end;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Voir aussi :&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Voir aussi :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* [[FindObject (CM)|FindObject]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* [[FindObject (CM)|FindObject]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Footer|Gestion des instances (CM)}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Footer|Gestion des instances (CM)}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[category:ClassManager]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[category:ClassManager]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[category:CMI]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[category:CMI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[category:latest]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	<entry>
		<id>https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10641&amp;oldid=prev</id>
		<title>Syfre : Page créée avec « &lt;source lang='delphi'&gt;function FindOrCreate(const iClassName,iWhere,iOrderBy:string,iDescendants:Boolean; iArgs:Variants; iDelegate:TitObject):TitObject;&lt;/source&gt;  Cette f... »</title>
		<link rel="alternate" type="text/html" href="https://frp.sage.fr/wiki1000/index.php?title=FindOrCreate_(CM)&amp;diff=10641&amp;oldid=prev"/>
				<updated>2015-10-09T09:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;source lang=&amp;#039;delphi&amp;#039;&amp;gt;function FindOrCreate(const iClassName,iWhere,iOrderBy:string,iDescendants:Boolean; iArgs:Variants; iDelegate:TitObject):TitObject;&amp;lt;/source&amp;gt;  Cette f... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang='delphi'&amp;gt;function FindOrCreate(const iClassName,iWhere,iOrderBy:string,iDescendants:Boolean; iArgs:Variants; iDelegate:TitObject):TitObject;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction recherche un objet d'une classe métier répondant à une condition.&lt;br /&gt;
&lt;br /&gt;
Si l'objet n'est pas trouvé, la fonction exécute la méthode &amp;quot;Execute&amp;quot; de l'objet iDelegate dans une transaction séparée partagée, puis recherche de nouveau l'objet.&lt;br /&gt;
&lt;br /&gt;
Lorsque cette méthode est utilisée dans le cadre d'une exécution parallèle, elle assure que l'objet ne sera créé qu'une fois. Ceci suppose que la transaction séparée va échouer en cas de création de doublon, il faut donc que la classe de l'objet créé comporte une règle unique adéquate.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Result&lt;br /&gt;
|Un objet de la classe métier&lt;br /&gt;
|-&lt;br /&gt;
|iWhere&lt;br /&gt;
|Une expression objet que doit remplir l'objet.&lt;br /&gt;
|-&lt;br /&gt;
|iOrderBy&lt;br /&gt;
|Un ordre de tri appliqué dans la requête.&lt;br /&gt;
|-&lt;br /&gt;
|iDescendants&lt;br /&gt;
|Inclure les classes dérivées de la hiérarchie de classe.&lt;br /&gt;
|-&lt;br /&gt;
|iArgs&lt;br /&gt;
|Arguments de l'expression&lt;br /&gt;
|-&lt;br /&gt;
|iDelegate&lt;br /&gt;
|Objet délégation utilisé si l'objet  recherché n'est pas trouvé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le pseudo-code équivalent à cette fonction est :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
function ClassManager.FindOrCreate(const iClassName:string; const iWhereFormat,iOrderBy:string; iDescendants:Boolean; const iArgs:Variant; iDelegate:TitObject):TitObject;&lt;br /&gt;
var rslt:boolean; new,old:TTranContext;&lt;br /&gt;
begin&lt;br /&gt;
  // Find the object&lt;br /&gt;
  Result := ClassManager.FindObject(iClassName,iWhereFormat,iOrderBy,iDescendants,iArgs,True);&lt;br /&gt;
  if Assigned(Result) then Exit;&lt;br /&gt;
&lt;br /&gt;
  // Not found&lt;br /&gt;
  // Call the delegate.Execute method in a separate shared transaction&lt;br /&gt;
  //&lt;br /&gt;
  rslt := false;&lt;br /&gt;
  new := ClassManager.AllocTransContext;&lt;br /&gt;
  old := ClassManager.ActivateContext(new);&lt;br /&gt;
  try&lt;br /&gt;
    ClassManager.BeginTran;&lt;br /&gt;
    try&lt;br /&gt;
      if not _ExecuteDelegation(iDelegate,'Execute') then&lt;br /&gt;
       raise EScript.CreateFmt('(FindOrCreate) Delegate object %s has no Execute method',[iDelegate.Regclass.AClassName]);&lt;br /&gt;
      //&lt;br /&gt;
      rslt := ClassManager.Commit&lt;br /&gt;
    except&lt;br /&gt;
      rslt := false;&lt;br /&gt;
      ClassManager.RollBack;&lt;br /&gt;
    end;&lt;br /&gt;
  finally&lt;br /&gt;
  ClassManager.ActivateContext(old);&lt;br /&gt;
  end;&lt;br /&gt;
  //&lt;br /&gt;
  Result := ClassManager.FindObject(iClassName,iWhereFormat,iOrderBy,iDescendants,iArgs,True);&lt;br /&gt;
  if not Assigned(Result) then&lt;br /&gt;
   begin&lt;br /&gt;
     if not _ExecuteDelegation(iDelegate,'OnExecuteFailed') then&lt;br /&gt;
        raise ERule.CreateFmt(_TP('Impossible de créer un objet de la classe %s'),[RegClass.aClassLabel]);&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{info|Cette fonction retourne le premier objet retrouvé.}}&lt;br /&gt;
&lt;br /&gt;
Exemple&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// delegate class&lt;br /&gt;
// This class create a ClassB object using unCode as parameter.&lt;br /&gt;
//&lt;br /&gt;
 MyDelegate = class&lt;br /&gt;
   unCode: string;&lt;br /&gt;
   procedure Execute;&lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
procedure MyDelegate.Execute;&lt;br /&gt;
var instB:ClassB;&lt;br /&gt;
begin&lt;br /&gt;
  instB := ClassB.Create;&lt;br /&gt;
  instB.unCodeB := unCode;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
// Caller class&lt;br /&gt;
// This method create two objects ClassA and ClassB, ClassB is created using the delagate&lt;br /&gt;
//&lt;br /&gt;
procedure MyClass.CreateAandB(const S1,S2:string; iValue:Integer);&lt;br /&gt;
var instD:Delegate; instA:ClassA; instB:ClassB;&lt;br /&gt;
begin&lt;br /&gt;
  withP transaction do&lt;br /&gt;
   begin&lt;br /&gt;
     instA := ClassA.Create;&lt;br /&gt;
     instA.unEntierA := iValue;&lt;br /&gt;
     instA.unCodeA := S1;&lt;br /&gt;
     instA.unExtension := S1;&lt;br /&gt;
     //&lt;br /&gt;
     // Create a MyDelegate object&lt;br /&gt;
     instD := MyDelegate.Create;&lt;br /&gt;
     instD.unCode := S2;&lt;br /&gt;
     instB := ClassManager.FindOrCreate('ClassB','unCodeB=%1','',True,[S2],instD);&lt;br /&gt;
     //&lt;br /&gt;
     instA.refB := instB;&lt;br /&gt;
   end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi :&lt;br /&gt;
* [[FindObject (CM)|FindObject]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Footer|Gestion des instances (CM)}}&lt;br /&gt;
[[category:ClassManager]]&lt;br /&gt;
[[category:CMI]]&lt;br /&gt;
[[category:latest]]&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>	</entry>

	</feed>