schema.json
S’assurer de la cohérence de sw_sys_metacolumn.
Voici une requête pour aider à la comparaison de la définition des colonnes par le Studio et la réalité.Bloc de code language sql SET @tableName = 'customercontact'; SET @realTableName = CONCAT('sw_data_', @tableName); SELECT meta.metacolumn_ID, meta.schemaColumn, isc.COLUMN_NAME, meta.`position`, isc.ORDINAL_POSITION, meta.schemaColumnType, meta.schemaColumnLength, isc.COLUMN_TYPE, meta.storageType, isc.IS_GENERATED FROM ( SELECT mc.*, mt.schemaTable FROM sw_sys_metacolumn AS mc INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID WHERE mt.schemaTable = @realTableName ) AS meta LEFT JOIN INFORMATION_SCHEMA.COLUMNS AS isc ON isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName AND isc.COLUMN_NAME = meta.schemaColumn UNION SELECT meta.metacolumn_ID, meta.schemaColumn, isc.COLUMN_NAME, meta.`position`, isc.ORDINAL_POSITION, meta.schemaColumnType, meta.schemaColumnLength, isc.COLUMN_TYPE, meta.storageType, isc.IS_GENERATED FROM INFORMATION_SCHEMA.COLUMNS AS isc LEFT JOIN ( SELECT mc.*, mt.schemaTable FROM sw_sys_metacolumn AS mc INNER JOIN sw_sys_metatable AS mt ON mt.metatable_ID = mc.metatable_ID WHERE mt.schemaTable = @realTableName ) AS meta ON isc.COLUMN_NAME = meta.schemaColumn WHERE isc.TABLE_SCHEMA = DATABASE() AND isc.TABLE_NAME = @realTableName ORDER BY IFNULL(`position`, 0), ORDINAL_POSITION;
Définir les colonnes
Avoir toutes les colonnes réelles dans leur ordre de création
Bloc de code SET @tableName = 'customercontact'; SET @prefix = CONCAT('sw_data_', @tableName, '.'); /*Field list (without custom field)*/ SELECT SUBSTRING(mc.codeMetaColumn, LENGTH(@prefix)+1) FROM sw_sys_metacolumn AS mc WHERE mc.codeMetaColumn LIKE CONCAT(@prefix,'%') AND IFNULL(mc.storageType, 0) != 1 ORDER BY mc.position;language sql Définir toutes les entités nécessaires pour les colonnes avec ForeignEntity
Définir l’identification
Si c’est une sous-entité définir les propriétés nécessaires
Définir l’export de la liste avec Exportable
Note : si la variable de profile n’existe pas encore dans l’Excel, mettre “Exportable”: false
Exemple : pour l’entité customercontactBloc de code language json "Exportable": { "Variable": "profile.exportable.customercontact" }
Définir la fiche d'édition avec EntityConfigName
Notes :le nom correspond au fichier sans l’extension .id.component.json
la propriété est soumise aux BusinessFeatureFlags
Ajouter les actions
Bloc de code language json "Actions": { "Standard": { "New": { "Link": { "Target": "customer/new", "Mode": "Redirect" } } }, "Inline": { "Inline1": { "Label": "Inline1", "Link": { "Target": "customer", "Mode": "Popin" } }, "Inline2": { "Label": "Inline2", "Link": { "Target": "customer", "Mode": "Popin" } }, "Inline3": { "Label": "Inline3", "Icon": "lightbulb", "Link": { "Target": "customer", "Mode": "Popin" } } }, "Menu": { "Menu1": { "Label": "Menu1", "Link": { "Target": "customer", "Mode": "Popin" } }, "Menu2": { "Label": "Menu2", "Link": { "Target": "customer", "Mode": "Popin" } }, "Menu3": { "Label": "Menu3", "Icon": "lightbulb", "Link": { "Target": "customer", "Mode": "Popin" } } } }
Définir la vue par défaut “Tous”
Bloc de code language json "ViewsDefaultSettings": { "Listing": { "Columns": [ "colonne1", "colonne2", "colonne3" ] } }
Notes :
Le système met toujours la colonne primaire (TitleField) en première position, même si on ne l’a pas mis dans la liste des colonnes de la vue
Lorsqu’il n’y a pas une colonne en plus de la colonne primaire, il y a une erreur système
...