TechTip pour créer les index manquants sur les champs déclarés "Unique" mais non-indexés : http://kb.4d.com/assetid=77023 (en anglais), ou ci-dessous code en français :
 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l) 
 C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXT($delim_t;$lf_t)
 C_TEXT($tableName_t;$fieldName_t;$note_t)
 
 $maxTableNumber_l:=Get last table number
 
 For($currentTable_l;1;$maxTableNumber_l)
    If(Is table number valid($currentTable_l))
       $maxFieldCount_l:=Get last field number(Table($currentTable_l))
       boucle($currentField_l;1;$maxFieldCount_l)
       If(Is field number valid($currentTable_l;$currentField_l))
          GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
          $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
 
          If($isUnique_f) & (Not($isIndexed_f))
             $tablePtr:=Table($currentTable_l)
             $fieldPtr:=Field($currentTable_l;$currentField_l)
             $tableName_t:=Table name($tablePtr)
             $fieldName_t:=Field name($fieldPtr)
             $indexName_t:="["+$tableName_t+"]"+$fieldName_t+" indexé car unicité"
             ARRAY POINTER($fieldsArray_p;1)
             $fieldsArray_p{1}:=$fieldPtr
             CREATE INDEX($tablePtr->;$fieldsArray_p;Standard BTree Index;$indexName_t;*)
          End if
       End if
    End for
 End if
End forTechtip pour générer un fichier disque listant les champs uniques non-indexés : http://kb.4d.com/assetid=77024, (en anglais) ou ci-dessous code en français :
 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l)  
 C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXT($delim_t;$lf_t)
 C_TIME($logfile_h)
 C_TEXT($tableName_t;$fieldName_t;$note_t)
 
 $delim_t:=Char(Tab)
 $lf_t:=Char(Carriage return)+Char(Line feed)
 
 $logHeader_t:="Champs uniques sans index :"+$lf_t
 $logfile_t:=Get 4D folder(Logs folder)+"UniqueNonIndex.txt"
 $logfile_h:=Create document($logfile_t)
 If(OK=1)
    SEND PACKET($logfile_h;$logHeader_t)
    $maxTableNumber_l:=Get last table number
    For($currentTable_l;1;$maxTableNumber_l)
       If(Is table number valid($currentTable_l))
          $maxFieldCount_l:=Get last field number(Table($currentTable_l))
          For($currentField_l;1;$maxFieldCount_l)
             If(Is field number valid($currentTable_l;$currentField_l))
                GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
                $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
                If(($isUnique_f) & (Not($isIndexed_f)))
                   $tableName_t:=Table name(Table($currentTable_l))
                   $fieldName_t:=Field name(Field($currentTable_l;$currentField_l))
                   $logRecord_t:="["+$tableName_t+"]"+$fieldName_t+$lf_t
                   SEND PACKET($logfile_h;$logRecord_t)
                End if
             End if
          End for
       End if
    End for
 End if
 CLOSE DOCUMENT($logfile_h)Voir L'éditeur de méthode est en "Anglais-US" par défaut. Dans le contexte du déploiement d'applications fusionnées, pour utiliser les paramètres régionaux vous pouvez éditer le contenu du fichier de préférences de 4D v15 sur chaque machine  locale et fixer la clé "use_localized_language" à "true".