📚 Documentation · Propriétés · ORM_CSHX2

Propriétés publiques

L'ORM_CSHX2 expose 32 propriétés publiques organisées en 5 catégories : configuration de comportement, métadonnées de classe, clauses de requête SQL, drapeaux d'état framework, et propriétés diverses. Chaque propriété est nommée prioritairement en français avec son équivalent anglais associé pour la rétro-compatibilité.

32propriétés
5catégories
10configurables
22autres

Propriétés configurables

10 propriétés

Propriétés que le code applicatif peut modifier librement pour piloter le comportement d'une instance ORM_CSHX2 (politiques d'instance, drapeaux configurables).

01
p_bHorodatageAuto
p_bAutoTimestamp

Alimentation automatique des colonnes SQL_INSERTED et SQL_UPDATED à chaque écriture

Type:booléen Défaut:Vrai Accès:lecture / écriture

Lorsqu'elle est à Vrai, le framework alimente automatiquement les colonnes SQL_INSERTED (à l'INSERT) et SQL_UPDATED (à l'UPDATE) avec l'horodatage courant. Mettre à Faux pour préserver les valeurs existantes (cas import / migration).

// Cas import : préserver les horodatages d'origine clObjArticle:p_bHorodatageAuto = Faux clObjArticle:m_dhSQL_INSERTED = dhImport clObjArticle:mth_Enregistrer()
02
p_bArchivageMongoAuto
p_bAutoMongoArchive

Archivage MongoDB automatique après chaque écriture

Type:booléen Défaut:Faux Accès:lecture / écriture

Lorsqu'elle est à Vrai, l'enregistrement est automatiquement archivé dans MongoDB après chaque INSERT ou UPDATE réussi. Permet une traçabilité complète avec horodatage et valeurs avant/après.

ℹ️ Activation conditionnelle

À activer uniquement sur les classes métier où la traçabilité est requise (RGPD, audit, données sensibles). Coût en performance et en volume disque.

03
p_bLogSuppression
p_bLogDeletion

Journalisation des suppressions dans la table cshx2_trashcan

Type:booléen Défaut:Vrai Accès:lecture / écriture

Lorsqu'elle est à Vrai, chaque suppression est journalisée dans la table cshx2_trashcan avec l'ID, la date, l'utilisateur et la valeur des colonnes au moment de la suppression. Permet la récupération a posteriori d'enregistrements supprimés par erreur.

04
p_bSuppressionEnCascade
p_bCascadeDelete

Suppression en cascade applicative des enregistrements liés

Type:booléen Défaut:Vrai Accès:lecture / écriture

Lorsqu'elle est à Vrai, la suppression d'un enregistrement déclenche également la suppression applicative des enregistrements dépendants (selon les liens déclarés dans l'analyse). Mettre à Faux pour interdire la cascade et obtenir une erreur si des dépendances existent.

⚠️ Cascade applicative — pas SQL

La cascade est gérée côté applicatif (dans le code de l'ORM), pas via les contraintes SQL ON DELETE CASCADE. Les politiques sont indépendantes du schéma de base.

05
p_bBlocageEnregistrement
p_bRecordLock

Verrouillage applicatif de l'enregistrement (drapeau SQL_LOCKED)

Type:booléen Défaut:Faux Accès:lecture / écriture

Lorsqu'elle est à Vrai, l'enregistrement est marqué comme verrouillé (colonne framework SQL_LOCKED). Aucune modification ultérieure n'est autorisée tant que le verrou n'est pas levé via mth_UnLockSelonID().

06
p_bRécupérationID
p_bRetrieveID

Récupération du LAST_INSERT_ID après un INSERT

Type:booléen Défaut:Vrai Accès:lecture / écriture

Lorsqu'elle est à Vrai, le framework récupère automatiquement l'ID auto-généré après un INSERT (équivalent LAST_INSERT_ID() en MySQL/MariaDB ou RETURNING id en PostgreSQL). Mettre à Faux pour les INSERT en masse où l'ID n'est pas nécessaire (gain de performance).

// INSERT en masse sans récupération d'ID — plus rapide clObjArticle:p_bRécupérationID = Faux POUR nCompteur = 1 À 10000 clObjArticle:m_DENOMINATION = "Article " + nCompteur clObjArticle:mth_Enregistrer() FIN
07
p_nIDLangueAffichée
p_nDisplayedLanguageID

Override de la langue d'affichage par instance

Type:entier Défaut:0 (fallback session) Accès:lecture / écriture

Permet de surcharger l'ID de langue d'affichage utilisé pour le chargement des traductions, indépendamment de la langue globale de la session. Le getter implémente un fallback automatique :

  • Si la valeur est > 0, elle est renvoyée (l'instance prime)
  • Sinon, le getter renvoie la langue de la session globale

Permet le multi-langue par instance sans toucher la session globale.

08
p_NombreInsertSimultanés
p_nInsertBatchSize

Taille des batches pour les insertions multi-lignes

Type:entier Défaut:250 Accès:lecture / écriture

Définit le nombre d'enregistrements regroupés dans un même INSERT … VALUES par mth_EnregistrerTableau(). Plus la valeur est élevée, moins il y a d'allers-retours avec la base — au prix d'une mémoire serveur plus sollicitée.

ℹ️ Validation

Si la valeur affectée est inférieure ou égale à 0, la propriété retombe automatiquement à 250 (valeur par défaut).

09
p_bNouvelEnregistrement
p_bNewRecord

Force un INSERT même si la clé primaire est renseignée

Type:booléen Défaut:Faux Accès:lecture / écriture

Par défaut, mth_Enregistrer() détermine automatiquement s'il s'agit d'un INSERT (PK absente) ou d'un UPDATE (PK présente). Lorsque p_bNouvelEnregistrement est à Vrai, le framework force un INSERT même si la clé primaire est renseignée. Utilisé pour les imports avec ID imposé.

// Import avec ID imposé (reprise de base existante) clObjArticle:m_ID_ARTICLE = 42 clObjArticle:p_bNouvelEnregistrement = Vrai clObjArticle:mth_Enregistrer() // → INSERT (et non UPDATE)
10
p_bEnregistrementSupprimé
p_bRecordDeleted

Drapeau d'enregistrement supprimé — exploité par les méthodes d'agrégat

Type:booléen Défaut:Faux Accès:lecture / écriture

Indique que l'instance représente un enregistrement supprimé (logiquement ou physiquement). Le drapeau est posé automatiquement par le framework après une suppression réussie, et exploité par les 6 méthodes d'agrégat qui excluent automatiquement les éléments marqués supprimés des calculs : mth_SommeValeurs, mth_ValeurMoyenne, mth_ValeurMaximale, mth_ValeurMinimale, mth_ValeursDistinctes, mth_Regroupement.

Le code applicatif peut également poser le drapeau manuellement sur certains tuples pour les exclure des calculs sans suppression base — pattern de marquage logique.

// Marquage logique : exclure certains tuples des agrégats POUR i = 1 À TableauOccurrence(clObjLigne:m_tabResults) SI clObjLigne:m_tabResults[i].m_MONTANT < 0 ALORS clObjLigne:m_tabResults[i]:p_bEnregistrementSupprimé = Vrai FIN FIN nSomme = clObjLigne:mth_SommeValeurs("MONTANT")
✅ Cas d'usage

Pratique pour appliquer un filtre métier (lignes annulées, soldes négatifs, doublons) sur un calcul d'agrégat sans modifier la requête SQL ni supprimer physiquement les données.

Métadonnées de classe

5 propriétés (lecture seule)

Propriétés calculées par le framework à partir de l'analyse WinDev et de la classe en cours d'instance. Lecture seule : pas de setter exposé.

11
p_nOccurrencesTrouvées
p_nOccurrencesFound

Nombre d'éléments présents dans m_tabResults après une opération de chargement ou de requête

Type:entier Accès:lecture seule

Renvoie le nombre d'occurrences trouvées dans le tableau de résultats m_tabResults après l'exécution d'une méthode de chargement (mth_ChargerSelonClauseWhere, etc.). Pratique pour boucler sur les résultats sans recalculer la taille du tableau à chaque itération.

clObjArticle:mth_ChargerSelonClauseWhere() POUR i = 1 À clObjArticle:p_nOccurrencesTrouvées Trace(clObjArticle:m_tabResults[i].m_DENOMINATION) FIN
12
p_sRubriqueCléPrimaire
p_sPrimaryKeyColumn

Nom de la rubrique correspondant à la clé primaire de la table SQL

Type:chaîne Accès:lecture seule

Renvoie le nom de la rubrique de l'analyse WinDev qui est mappée à la clé primaire de la table SQL associée à la classe métier. Déterminé statiquement à la déclaration de la classe.

13
p_sTableSQL

Nom physique de la table SQL associée à la classe métier (sans accents)

Type:chaîne Accès:lecture seule

Renvoie le nom de la table SQL correspondant au fichier de l'analyse WinDev mappé à la classe, dépouillé des accents (compatible identifiants SQL portables MySQL · MariaDB · PostgreSQL).

14
p_ClasseDéfinition
p_oClassDefinition

Référence à l'objet Définition de la classe en cours

Type:Définition Accès:lecture seule

Renvoie l'objet Définition WinDev de la classe en cours, depuis le tableau global des définitions. Permet l'introspection avancée (liste des membres, types, etc.).

15
p_sUUIDPrefix

Préfixe utilisé pour la génération des UUID (issu de la session)

Type:chaîne Accès:lecture seule

Proxy vers xFrameWork_Session.Singleton().m_sUUIDPrefix. Renvoie le préfixe utilisé pour générer les identifiants uniques universels (UUID) lors de la création d'enregistrements.

Clauses de requête SQL

10 propriétés

Propriétés utilisées pour construire dynamiquement les requêtes SQL générées par les méthodes de chargement et d'agrégat. Modifiables avant un appel pour personnaliser la requête. Le drapeau p_bClauseRAZ contrôle leur réinitialisation après usage.

16
p_sClauseWhere

Filtre WHERE à appliquer à la requête SQL

Type:chaîne Unicode Accès:lecture / écriture

Définit la clause WHERE à injecter dans la requête SQL générée. La chaîne ne contient pas le mot-clé WHERE lui-même. Les noms de colonnes doivent être quotés via ORM_QuoteIdentifiers() pour la portabilité multi-provider.

clObjArticle:p_sClauseWhere = "m_DENOMINATION LIKE 'A%'" clObjArticle:mth_ChargerSelonClauseWhere()
17
p_sClauseOrderBy

Tri ORDER BY à appliquer à la requête

Type:chaîne Unicode Accès:lecture / écriture

Définit la clause ORDER BY. La chaîne ne contient pas le mot-clé. Multi-colonne supportée avec virgules.

clObjArticle:p_sClauseOrderBy = "m_DENOMINATION ASC, m_PRIX DESC"
18
p_sClauseSelect

Liste personnalisée des colonnes à sélectionner (override du SELECT par défaut)

Type:chaîne Unicode Accès:lecture / écriture

Override des colonnes du SELECT. Si non renseignée, la liste complète des rubriques mappées de la classe est utilisée. Permet d'optimiser le trafic réseau quand seules quelques colonnes sont nécessaires.

19
p_sClauseNotSelect

Liste de colonnes à exclure du SELECT

Type:chaîne Unicode Accès:lecture / écriture

Liste de colonnes à exclure du SELECT (l'inverse de p_sClauseSelect). Pratique pour récupérer toutes les colonnes sauf quelques exceptions (ex. exclure des colonnes BLOB volumineuses).

20
p_sClauseJoin

Clauses JOIN additionnelles dans la requête

Type:chaîne Unicode Accès:lecture / écriture

Permet d'injecter des clauses INNER JOIN, LEFT JOIN, RIGHT JOIN dans la requête générée. Utile pour les requêtes multi-tables où le mapping ORM standard ne couvre pas le besoin.

21
p_sClauseWith

Clause WITH (CTE — Common Table Expression)

Type:chaîne Unicode Accès:lecture / écriture

Permet d'injecter une clause WITH (Common Table Expression) en tête de la requête. Supporté par les 3 providers (MySQL 8+ · MariaDB 10.2+ · PostgreSQL).

22
p_nClauseLimit

Clause LIMIT — nombre maximum de lignes renvoyées

Type:entier Accès:lecture / écriture

Limite le nombre de lignes renvoyées par la requête. À utiliser conjointement avec p_nClauseOffset pour la pagination.

23
p_nClauseOffset

Clause OFFSET — décalage de départ pour la pagination

Type:entier Accès:lecture / écriture

Décalage de départ pour la sélection des lignes. Combiné à p_nClauseLimit, permet la pagination des résultats.

// Page 3 sur 25 lignes par page clObjArticle:p_nClauseLimit = 25 clObjArticle:p_nClauseOffset = 50 clObjArticle:mth_ChargerSelonClauseWhere()
24
p_nClauseLock

Mode de verrouillage SQL pour la requête (FOR UPDATE, LOCK IN SHARE MODE)

Type:entier Accès:lecture / écriture

Mode de verrouillage pessimiste appliqué à la requête SELECT. Utilisé dans le cadre de transactions pour réserver les lignes lues. Les valeurs possibles sont définies par les constantes ORM_LOCK_*.

25
p_bClauseRAZ
p_bClauseReset

Réinitialise toutes les clauses après l'exécution d'une requête

Type:booléen Accès:lecture / écriture

Lorsqu'elle est à Vrai, le framework remet à blanc toutes les clauses (WHERE, ORDER BY, SELECT, JOIN, etc.) après l'exécution d'une méthode de chargement. Évite les fuites de configuration entre deux requêtes successives sur la même instance.

Drapeaux d'état framework

5 propriétés

Propriétés gérées automatiquement par le framework pour suivre l'état interne d'une instance. Le code applicatif peut les lire mais ne devrait pas les modifier directement (sauf cas exceptionnel documenté).

26
p_bUpdated

Drapeau "instance modifiée depuis le dernier chargement"

Type:booléen Défaut:Faux Accès:lecture / écriture (latch)

Indique si l'instance a été modifiée depuis son dernier chargement ou enregistrement. Le setter implémente un latch : une fois passée à Vrai, la propriété ne peut être remise à Faux qu'en interne par le framework (lors d'un nouveau chargement ou enregistrement réussi).

27
p_bHiérarchieIncomplète
p_bPartiallyHydrated

Drapeau "hydratation partielle de la hiérarchie"

Type:booléen Défaut:Faux Accès:lecture / écriture

Indique que l'instance courante n'a pas chargé toute sa hiérarchie d'objets liés (lazy loading, chargement partiel pour optimiser la mémoire). Permet aux méthodes consommatrices de savoir si elles doivent recharger des dépendances avant de les utiliser.

28
p_bClassSerialized

Drapeau "classe sérialisée"

Type:booléen Défaut:Faux Accès:lecture / écriture

Indique que l'instance courante a été sérialisée (transformation en représentation textuelle pour transport ou persistance). Utilisé en mode API pour gérer la traversée des limites de processus.

29
p_sProcédureCourante
p_sCurrentProcedure

Nom de la procédure en cours d'exécution (utilisé pour le logging et le diagnostic)

Type:chaîne Accès:lecture / écriture

Proxy vers xFrameWork_Session.Singleton().m_sCurrentProcedure. Le getter implémente un fallback : si la session ne contient pas de procédure courante (chaîne vide), elle est initialisée au nom de l'exécutable courant. Utilisé par les mécanismes de logging et de diagnostic pour contextualiser les erreurs.

30
p_sListeRubriquesTraduites
p_sTranslatedColumnList

Liste des rubriques traduites pour la classe en cours

Type:chaîne Accès:lecture / écriture

Liste des colonnes faisant l'objet d'une traduction multi-langue (alimentation conditionnelle de COALESCE dans le SELECT). Renseignée par le framework au moment de la résolution du mapping.

ℹ️ Détail technique

La liste est consultée par le générateur de SELECT pour déterminer si une colonne doit recevoir un traitement de fallback de traduction (COALESCE(traduction, valeur_par_défaut)).

Propriétés diverses

2 propriétés

Propriétés ne relevant d'aucune des catégories précédentes.

31
p_nSQLDataAccessType

Type d'accès SQL à utiliser pour les requêtes (mode connexion / mode requête)

Type:entier Accès:lecture / écriture

Spécifie le type d'accès aux données SQL. Modifié par les classes métier dans des cas particuliers de configuration de connexion ou de routage de requêtes vers une connexion alternative.

32
p_sGUIDTemp

GUID temporaire associé à l'instance (transactions, identification provisoire)

Type:chaîne Unicode Accès:lecture / écriture

GUID temporaire affecté à l'instance avant son enregistrement définitif en base. Permet d'identifier de manière unique une instance pendant sa préparation (utilisé notamment dans les contextes transactionnels où plusieurs instances sont préparées avant le commit).