<!--4DIF (B_VDansGesprojet)--> : 4DENDIF attendu
  
ADMINISTRATION ET GESTION
administration : Aller plus loin avec les fonctions (art 927)
FONCTIONS

Extraire un pourcentage des commentaires :
La fonction Gen_ExtraireCodePourcentage(Code à extraire;Chaine dans laquelle extraire le code;{Montant sur lequel appliquer le ratio}) permet d'exploiter des codes à la façon des commentaires des budgets dans un état perso. Exemple si une facture contient dans sa zone de commentaire le texte suivant "PLI35% PLS65%" pour un montant HT de 1000. La fonction Gen_ExtraireCodePourcentage("PLI";[Factures]Commentaire;[Factures]Facture_HT) renverra : 350 • Autre exemple : si une facture contient dans sa zone de commentaire le texte suivant "PLI200%! PLS800%!" pour un montant HT de 1000. La fonction Gen_ExtraireCodePourcentage("PLI";[Factures]Commentaire;[Factures]Facture_HT) renverra : 200

Trouver la dernière archive :
Bud_TrouverDernierArchive ("Code budget" (Il est possible d'utiliser l'arobase @);{Archive verrouillée : Vrai ou Faux};{Date archive};{Dernière archive : 0, avant dernière archive : -1, avant avant dernière archive : -2 ... (347) première archive : 1, deuxième archive : 2... })
La fonction retourne le nom de l'archive et effectue une sélection dans la table archive_budgets Vous pouvez ensuite utiliser la fonction somme.

Remarque:
Afin de passer en paramètre un code budgétaire, il est nécessaire d'ajouter un "@" à la fin.

Exemple 1 :
Bud_TrouverDernierArchive ("1001.100@")
=> Trouvera la dernière archive verrouillée du code budgétaire "1001.100" (Ligne 100 dépenses de l'opération 1001) si elle existe, sinon trouvera la dernière archive si elle existe

Exemple 2 :
Bud_TrouverDernierArchive ("1001.100@";Vrai)
=> Trouvera la dernière archive verrouillée du code budgétaire "1001.100" si elle existe

Exemple 3 :
Bud_TrouverDernierArchive ("1001.100@";Faux)
=> Trouvera la dernière archive du code budgétaire "1001.100" si elle existe

Syntaxe 4 :
Bud_TrouverDernierArchive ("1001.100@";Faux;!30/6/2013!)
=> Trouvera l'archive au 30/06/2013 du code budgétaire "1001.100" si elle existe. A noter que dans ce cas, le 2ème paramètre (Archive verrouillée) est ignoré.

Exemple 5 :
Bud_TrouverDernierArchive ("1001.@";Faux)
=> Trouvera toutes les dépenses de la dernière archive, si elle existe, de l'opération 1001. Cette syntaxe ne doit pas être utiliser au niveau du budget mais plutôt au niveau synthèse des projets.

Exemple 6 :
Pour avoir le total du dernier budget verrouillée HT côté dépenses dans un état au niveau de la synthèse il faut procéder de la façon suivante :
Colonne cachée : Bud_TrouverDernierArchive([Projets]Chaine numéro projet+".@";Vrai) ou Bud_TrouverDernierArchive([Projets]Chaine numéro projet+".@";Vrai;!00/00/00!;0)
Colonne suivante : Somme(Archives_budgets]Budget HT)

Exemple 7 :
Pour avoir le total de l'avant dernier budget verrouillée HT côté recette dans un état au niveau de la synthèse il faut procéder de la façon suivante :
Colonne cachée : Bud_TrouverDernierArchive([Projets]Chaine numéro projet+".@";Vrai;!00/00/00!;-1)
Colonne suivante : Somme(Archives_budgets]Budget HT)

Exemple 8 (347) :
Pour avoir le total du première budget verrouillée HT côté recette dans un état au niveau de la synthèse il faut procéder de la façon suivante :
Colonne cachée : Bud_TrouverDernierArchive([Projets]Chaine numéro projet+".@";Vrai;!00/00/00!;1)
Colonne suivante : Somme(Archives_budgets]Budget HT)


Trouver les doublons d'un champ :
en mode accès aux tables : Gen_SelectionDoublon(->[table]champ) ou Gen_SelectionDoublon et saisir le champ au format [Nom_de_la_table]Nom_du_champ dans le dialogue


Mettre en minuscule/majuscule tous les enregistrements d'un champ d'une table :
Gen_Mise en minuscule(0 (majuscule) ou 1 (minuscule);Numéro table;Numéro champ)


Forcer le clonage Clonebase : Variable Clo_Lancer à vrai
taper dans executer : Ecrire variable process(Chercher process("Clo_CloneBase";*);Clo_Lancer;Vrai)


Renuméroter une série de projets :
Je crée un fichier texte qui contient l'ancien numéro opération dans la première colonne (Titre:Ancien numéro) puis le nouveau numéro opération (que des chiffres) dans la deuxième colonne (Titre:Nouveau numéro).
Je copie le fichier (y compris les entêtes de colonnes).
puis en mode expert, exécuter la méthode : Gen_MappageNuméroOpération


Changer génériquement la valeur d'un champ dans une table en fonction d'une matrice d'une autre table :
Par exemple : j'ai une liste de facture dont je connais le code facture pour lesquelles je souhaite modifier en lot la date de facture.
Je crée un fichier texte qui contient le code facture dans la première colonne (Titre:Ancienne valeur) puis la nouvelle date dans la deuxième colonne (Titre:Nouvelle valeur).
Je copie le fichier (y compris les entêtes de colonnes).
J'exécute la fonction Gen_MappageValeur


Recréer la liste des taches du module Grille (GRI)
Gen_RecreerListeTache (à exécuter sur le serveur)


Sélectionner une entrée de la base par son numéro d'enregistrement (par ex : une ligne de détail d'une facture)
En mode expert : Sélectionner la table Détails Factures
Menu Sélection -> Chercher par formule
Taper la formule : Numéro enregistrement([Détails factures])=numéro d'enregistrement désiré


Gen_NettoyageBase Attention à utiliser avec précaution
Fonction à exécuter : Gen_NettoyageBase
Cette fonction permet de nettoyer la base et de la rendre plus présentable à l'affichage (remplir automatiquement certains champs obligatoires après une reprise, modifier la casse de certains champs, etc.).


Com_ModifCompte(AncienCompte;NouveauCompte;{Vrai=applique aussi sur la table Table comptable})
Attention à utiliser avec précaution
Cette fonction permet de modifier un compte / une liste de comptes (via la table libre) en indiquant un ancien compte et un nouveau compte. Le troisième paramètre est optionnel.


Exécuter sur serveur :
Certaines fonctions doivent être exécuter sur serveur, d'autres peuvent l'être (les calculs étant exécutés par le serveur, le client n'est pas bloqué ou ralenti).
pour ce faire il faut exécuter : executer sur serveur("nom_de_la_méthode";64000;"nom_de_la_méthode")

64000 signifiant la taille de la pile (a priori suffisant pour la plupart des méthodes).


Renumerotation des bordereaux
Fonction à exécuter : Bor_RenumérotationBordereau
au prompt, entrer le numéro du dernier bordereau valide.
Cette fonction permet de renuméroter les bordereaux à partir du dernier bordereau valide.


Entretien des périodes dans budgets et archives budgets
Fonction à exécuter : Bud_ReaffecterEcartsurPeriode(Vrai)
- Commun aux deux : rempli periode 1 si aucune période n'est renseignée
- Si Vrai :
Réaffecte les écarts sur période 1 (Budgets et archives budgets)
-Si Faux :
Réaffecte les écarts au prorata des périodes (Budgets)

Création de la méthode Doc_ArchiverDoc. Cette méthode permet de dupliquer tous les documents externes sélectionnés du module documentaire en tant que fichier. L'emplacement est toujours Server database/ArchivesDocumentaire/Nom de la table. Le nom du fichier est Nom du document = [Documents]ID_Document + "-" + [Document]Reference_ID + "-" [Documents]Numero_operation+ "-" + Titre. Cette méthode est à intégrer dans les Scripts Nocturnes après avoir fait une sélection de document (V332).

Création de la fonction Gen_ExecuterRequeteSql (Requete) qui permet d'exécuter la requete Sql contenu dans l'argument requete. Cette fonction permet d'exécuter des requètes SQL dans Script (état perso ou nocturne) (V333).

Possibilité d'exécuter un script après l'exécution dans Script (Préférences).
Toutes le code situé après le commentaire //Aprés exécution est exécuté après l'exécution de l'état (V333).

Création de la fonction Gen_LireMotsClésTexte
Cette fonction permet de découper une chaine de caractère en mots et retourne les mots dans un tableau de texte nommé "TableauMotsClés" (V333).

Création de la fonction Gen_Tableau vers sélection.
Cette fonction est l'équivalent de la fonction 4D : Tableau vers sélection et qui permet de créer des enregistrements remplis à partir de tableau. Gen_Tableau vers selection (->TDateRefact;->[Previsions]Date_fact;->NumProj;->[Previsions]Recette;->Précision;->[Previsions]Reference_utilisateur). La fonction standard 4D ne fonctionne pas dans Script (V333).

Création de la fonction Gen_remplirTableau
Cette fonction permet de remplir un tableau avec des valeurs régulières fonction d'un incrément et d'un cycle (V333).

Gen_RemplirTableau (Pointeur vers le tableau à remplir;Première valeur (texte) ou pointeur vers tableau de valeur; Pas (Si = 0 la première valeur est répétée);(DateFin-DateDébut+1))

Exemple :

Gen_RemplirTableau (->TDateRefact;Chaine(DateDébut);1;(DateFin-DateDébut+1))

Gen_RemplirTableau (->NumProj;"->NumAffaire";0;(DateFin-DateDébut+1))

Gen_RemplirTableau (->Précision;"123456789";0;(DateFin-DateDébut+1))

Ajout de l'option "2048" (argument 2 de la fonction) dans la fonction budget_agé
Cette fonction permet de faire la somme sur la section budgétaire plutôt que sur le code budget. Dans ce cas l'argument 1 de la fonction doit être structuré de la façon suivante : num opé/libellé section (arobase autorisée sur section). Ex : 138/00-Foncier (V333).

Mots clés
Si le champ Commentaires_2 de la table Projets ([7]72) est renommé en "Mots clés" désormais ce champ est rempli par la valeur texte 1 des variables clés du projet. Permet d'ajouter des valeurs de recherche par mot clé avec la loupe (V340).