Ce document présente toutes les nouvelles fonctionnalités introduites dans 4D 21 LTS, couvrant tout ce qui a été ajouté depuis 4D 20 R2 jusqu’à 4D 21. Chaque fonctionnalité comprend des liens directs vers son article de blog pour des exemples pratiques, ainsi que vers la documentation pour des détails techniques complets.
En outre, les sections portant la mention
se concentrent spécifiquement sur les nouveautés depuis 4D 20 R10.
Ce document est divisé en dix sections :
4D 21 : VOTRE MOTEUR D’IA
4D 21 transforme 4D en son propre moteur d’IA, offrant une boîte à outils d’IA complète conçue pour les applications commerciales du monde réel. Vous pouvez communiquer avec des modèles hébergés localement ou dans le cloud, générer et stocker des vecteurs, exécuter des recherches sémantiques nativement dans ORDA et connecter votre logique métier directement aux conversations pilotées par l’IA, le tout sans wrappers externes, processus de patchwork ou changements architecturaux majeurs.
L’IA devient une extension naturelle de votre code existant, que votre application soit toute nouvelle ou vieille de plusieurs dizaines d’années. Avec un support vectoriel natif, une communication de modèle rationalisée et des outils pour intégrer un comportement intelligent dans les flux de travail quotidiens, 4D 21 rend l’intégration de l’IA fluide, pratique et immédiatement utile.
Ajouter des capacités d’IA avec le composant intégré 4D AIKit
4D AIKit est un composant 4D intégré qui apporte des capacités compatibles avec OpenAI directement dans votre environnement 4D. Avec seulement quelques lignes de code, vous pouvez automatiser les processus, enrichir les expériences utilisateur et intégrer des fonctionnalités intelligentes dans la logique métier sans sortir de 4D.
AIKit comprend plus de 30 classes conçues pour prendre en charge :
-
La génération de texte et les interfaces basées sur le chat.
-
Le marquage d’images, la reconnaissance d’objets et l’analyse descriptive.
-
La transcription de la parole en texte
-
La génération visuelle à partir d’invites
-
La modération de contenu textuel.
AIKit permet également des flux de travail avancés qui mélangent à la fois des modèles basés sur le cloud et des modèles hébergés localement. Vous pouvez créer des outils d’automatisation des médias sociaux, des pipelines de contenu alimentés par l’IA ou des expériences d’apprentissage dynamique en combinant l’analyse de texte et d’image dans un seul flux.
PRISE EN CHARGE NATIVE DES VECTEURS POUR L’INTÉGRATION DE L’IA ET LA RECHERCHE SÉMANTIQUE
Les fonctionnalités intelligentes commencent par un élément fondamental : les vecteurs. Qu’il s’agisse de recherche sémantique, de systèmes de recommandation, de classification de documents ou de regroupement d’images, les vecteurs sont la structure qui représente le sens. Avec 4D 21, les vecteurs deviennent un élément natif et de première classe de la plateforme.
4D.Vector est une nouvelle classe intégrée, conçue spécifiquement pour stocker et exploiter les encastrements d’IA. Elle contient des données numériques de haute dimension dans un format efficace en termes de mémoire et prend en charge les principales opérations de similarité telles que la similarité en cosinus, le produit en points et la distance euclidienne directement au sein de 4D. Les requêtes sémantiques sont ainsi rapides, précises et totalement intégrées à votre modèle de données.
Vous pouvez stocker des vecteurs dans votre base de données, les utiliser dans des attributs de type classe et créer des fonctionnalités qui trient, comparent ou regroupent les données en fonction de leur signification plutôt que des correspondances exactes. C’est l’épine dorsale des flux de travail modernes alimentés par l’IA, qui est désormais native dans 4D.
En complément, 4D AIKit introduit la génération native de vecteurs via l’API d’intégration d’OpenAI. La nouvelle méthode OpenAIEmbeddingsAPI.create() transforme les chaînes ou les collections en instances 4D.Vector en un seul appel, sans manipulation de jeton, ni plomberie HTTP, ni analyse JSON. Une fois générés, les vecteurs sont intégrés de manière transparente dans les systèmes d’évaluation de la similarité, de filtrage sémantique, de classement ou dans les requêtes ORDA.
Ensemble, 4D.Vector + AIKit embeddings offrent un pipeline complet pour l’intelligence sémantique :
- Générer des embeddings
- Les stocker efficacement
- Les comparer et les évaluer nativement
- Exécuter des requêtes sémantiques directement dans 4D.
Il s’agit d’une architecture prête pour l’IA, intégrée au langage et à la couche de données.
REQUÊTES SÉMANTIQUES 
Vous pouvez désormais intégrer la recherche sémantique directement dans vos requêtes ORDA. Au lieu de dépendre de processus distincts, vous pouvez comparer le champ vectoriel d’un enregistrement à un vecteur de référence et renvoyer instantanément les résultats les plus pertinents, tout cela dans la même grammaire ORDA que vous utilisez déjà.
La requête accepte un simple objet paramètre avec un vector requis et des attributs facultatifs tels que la similarité metric (qui est par défaut un cosinus) et une similarité threshold.
// Step 1: Define the kind of profile you want to match semantically
$searchText:="senior project manager with strong HR background, based in France"
// Step 2: Create an AI client (local baseURL optional)
$client:=cs.AIKit.OpenAI.new("YourApiKey")
$client.baseURL:="http://127.0.0.1:1234/v1"
// Step 3: Generate an embedding vector for the search text
$embedResult:=$client.embeddings.create($searchText; "text-embedding-mxbai-embed-large-v1")
$semanticVector:=$embedResult.vector
// Step 4: Build the semantic query object with similarity options
$semanticQuery:={vector: $semanticVector; metric: "cosine"; threshold: 0.4}
// Step 5: Run the query — combine semantic match with traditional filter
$results:=ds.Profiles.query("yearsOfExperience >= 5 & expertise >= :1"; $semanticQuery)
Lesconditions vectorielles s’intègrent parfaitement à la logique ORDA classique, de sorte que vous pouvez combiner la similarité sémantique et les filtres traditionnels dans une seule requête. En ajustant le seuil, les résultats peuvent passer de larges et bruyants à étroits et précis, vous donnant des résultats significatifs et adaptés au contexte sans ajouter de complexité. L’ensemble du processus reste dans le cadre de la grammaire ORDA que vous connaissez déjà, ce qui permet à vos requêtes d’être claires, expressives et faciles à maintenir.
Formats d’appel et de réponse pour les outils d’IA 
L’appel d’outils d’IA et les formats de réponse structurés étendent 4D AIKit avec la possibilité d’intégrer des fonctions spécifiques à l’entreprise directement dans les conversations pilotées par l’IA. L’appel d’outil vous permet d’exposer des fonctionnalités sélectionnées de votre application, telles que « lister les catégories de produits disponibles » ou « obtenir les produits les plus vendus« , en tant qu’outils pouvant être appelés. Lorsqu’un modèle d’IA détermine qu’un outil est nécessaire, 4D AIKit achemine automatiquement l’appel vers vos fonctions 4D enregistrées et intègre le résultat dans la réponse. Cela évite de devoir télécharger ou réentraîner de grands ensembles de données, tout en permettant à l’IA de répondre aux questions des utilisateurs avec des données en direct et spécifiques à l’application. En pratique, cela signifie que vous pouvez intégrer un assistant de chat dans votre application, et lorsqu’un utilisateur demande « Quels sont les 10 produits les plus vendus par catégorie ? », le modèle peut appeler vos fonctions, récupérer des données commerciales réelles et renvoyer la réponse en langage naturel.
En outre, 4D AIKit prend désormais en charge les formats de réponse structurés, ce qui rend l’intégration avec les processus en aval plus fiable. Outre le texte brut, les réponses peuvent être demandées en tant qu’objets JSON stricts ou forcées à se conformer à un schéma JSON que vous définissez. Ceci est particulièrement utile lorsque des données non structurées provenant d’utilisateurs doivent être transformées en données prévisibles, ou lorsque ducontenu généré par l’IA doit être intégré dans des flux de travail automatisés sans nettoyage manuel.
Ensemble, les requêtes sémantiques, les appels d’outils et les formats de réponse structurés font de l’IA dans 4D non pas une simple couche conversationnelle, mais un composant système entièrement intégré, capable de récupérer des données métier pertinentes, d’appliquer une logique en toute sécurité dans votre application et de fournir des sorties structurées qui s’intègrent parfaitement dans vos flux de travail. Et maintenant, avec AIKit en open-source, vous bénéficiez d’une visibilité totale et de la possibilité de le façonner, de l’étendre et de le faire évoluer en fonction de vos propres besoins commerciaux.
RÉSEAU
4D 21 redéfinit la couche réseau avec une base moderne, axée sur les performances et conçue pour répondre aux attentes actuelles en matière de connectivité. Qu’il s’agisse d’exécuter des charges de travail client/serveur à forte latence, de changer de réseau en cours de session, d’intégrer des périphériques via TCP ou UDP, ou d’optimiser des appels HTTP répétés, l’ensemble de la pile est conçu pour offrir des connexions plus rapides, une résilience plus forte et un contrôle plus étroit. QUIC devient le protocole de transport recommandé pour des sessions distantes plus fluides et à faible latence, TCP bénéficie d’API asynchrones avec TLS et d’une gestion fine des délais, UDP arrive avec une nouvelle API de socket pilotée par les événements, et les requêtes HTTP bénéficient d’une gestion des connexions persistantes par le biais d’agents dédiés. Ensemble, ces mises à jour apportent vitesse, stabilité et flexibilité à chaque couche de la communication réseau de votre application.
QUIC : UNE CONNECTIVITÉ CLIENT/SERVEUR PLUS RÉSILIENTE
QUIC est une couche réseau moderne conçue pour rendre les connexions client/serveur 4D plus résilientes et plus fiables, en particulier lorsque la qualité du réseau varie. Avec 4D 21, vous pouvez activer QUIC directement à partir des paramètres de structure, d’utilisateur ou de base de données, même dans les applications compilées, ce qui facilite les tests et le déploiement sans reconstruction.
Dans les charges de travail réelles, QUIC offre de meilleures performances que ServerNet et gère les connexions instables ou à forte latence de manière plus gracieuse. Cela signifie des interactions plus rapides pour les utilisateurs, un travail plus fluide sur les réseaux Wi-Fi ou mobiles, et une expérience plus résiliente dans l’ensemble.
ServerNet reste pris en charge, mais QUIC est désormais le choix recommandé pour les nouveaux déploiements visant à bénéficier des normes de transport Internet actuelles. Avant de migrer un environnement existant, vérifiez que votre infrastructure prend en charge UDP, car certains réseaux le restreignent.
Commutation de réseau transparente avec QUIC 
Avec QUIC, le passage d’une interface réseau à une autre n’interrompt plus votre connexion 4D Remote. Que vous passiez d’Ethernet à Wi-Fi, que vous changiez d’adaptateur ou que vous réveilliez un ordinateur portable sur un autre réseau, le client rétablit automatiquement sa session avec 4D Server et poursuit l’exécution sans perte de données. QUIC permet des reconnexions rapides et résilientes dans des conditions de réseau changeantes, ce qui rend l’expérience fluide même dans des environnements mobiles ou instables.
Votre flux de travail reste intact : le contexte d’exécution est préservé et les processus reprennent exactement là où ils se sont arrêtés. Côté serveur, l’adresse IP du client est mise à jour en temps réel dans la boîte de dialogue d’administration, les journaux de diagnostic et les attributs de session, ce qui permet aux administrateurs d’avoir une visibilité totale. Cela rend 4D Remote beaucoup plus robuste lorsque les conditions du réseau changent fréquemment.
RÉSEAU TCP SÉCURISÉ MODERNE (CLIENTS, SERVEURS & TLS)
4D 21 propose une pile réseau TCP complète et moderne qui remplace les anciennes commandes Internet de 4D par une approche plus rapide, plus propre et entièrement asynchrone.
La classe TCPConnection gère la communication côté client avec une API orientée objet et des rappels tels que onConnection, onData, onShutdown et onError. Vous pouvez envoyer des blobs ou du texte, réagir à des événements dès qu’ils se produisent et vous connecter à des périphériques externes, à des services ou à des protocoles personnalisés en toute simplicité.
La classe TCPListener ajoute la partie serveur. Elle vous permet d’écouter sur un port, d’accepter ou de rejeter les connexions entrantes et de confier chaque client accepté à une instance TCPConnection dédiée. Cela vous donne un modèle cohérent pour construire des services légers ou des passerelles directement dans 4D.
Pour tout sécuriser, les connexions TCP prennent désormais en charge le cryptage TLS/SSL natif. En activant l’ attribut TLS dans le nouveau paramètre options de 4D.TCPConnection.new(), vous établissez automatiquement des sessions cryptées, avec TLS 1.3 comme protocole par défaut. Les ports standard et sécurisés peuvent fonctionner en parallèle et la communication cryptée commence dès que la poignée de main est terminée.
Les connexions TCP exposent également une propriété.connectionTimeout , qui vous permet de contrôler directement le temps d’attente avant l’abandon d’une connexion bloquée ou qui ne répond pas. Cela vous permet d’ajuster les seuils de latence, d’échouer rapidement dans de mauvaises conditions de réseau et d’éviter les blocages de l’interface utilisateur ou les attentes interminables.
Ensemble, ces fonctionnalités fournissent une base moderne, flexible et sécurisée pour l’implémentation de protocoles TCP personnalisés et la construction de solutions réseau client et serveur entièrement dans 4D.
NOUVELLES COMMANDES UDP
La nouvelle classe 4D.UDPSocket offre aux développeurs un contrôle total sur la communication en temps réel, basée sur les événements, en utilisant le protocole UDP. Elle prend en charge les modes client et serveur et est optimisée pour la transmission rapide de données sans connexion dans des cas d’utilisation tels que la messagerie IoT, la surveillance en temps réel des appareils ou la signalisation interne.
Cette classe est entièrement pilotée par les événements et prend en charge des rappels tels que onData, onError et onTerminate. Les développeurs peuvent émettre et recevoir des paquets à l’aide de send(), analyser les métadonnées des paquets via 4D.UDPEvent, et enregistrer le trafic dans le fichier unifié 4DTCPUDPLog.txt.
Grâce à la prise en charge des threads préemptifs, la classe UDPSocket fonctionne efficacement dans les environnements à forte concentration de données et remplace l’ancien plugin Internet Commands par une alternative moderne orientée objet.
OPTIMISEZ VOS CONNEXIONS HTTP AVEC LES AGENTS HTTP
4D 21 introduit les agents HTTP, vous donnant plus de contrôle sur la façon dont votre application se connecte aux serveurs HTTP. Les agents gèrent la persistance et la réutilisation des connexions, évitant ainsi de devoir renégocier une nouvelle connexion, en particulier TLS/SSL, pour chaque requête.
Par défaut, toutes les commandes HTTPRequest utilisent désormais un agent intégré qui maintient les connexions en vie. Lorsque vous avez besoin de plus de contrôle, vous pouvez créer votre propre agent pour affiner les comportements tels que :
-
la gestion du maintien en vie
-
le nombre maximal de connexions simultanées
-
les délais de connexion
-
Configuration TLS/SSL au niveau de l’agent
L’utilisation d’un agent est simple : vous le créez une fois et vous le passez dans vos options de demande. Comme HTTPAgent est un objet partagé, vous pouvez également conserver un seul agent pour toutes les requêtes adressées au même serveur, ou même le réutiliser sur plusieurs serveurs, chacun conservant son propre pool de connexions.
Les agents HTTP rendent les appels répétés plus rapides, plus prévisibles et plus faciles à gérer, en particulier dans les applications qui interagissent fortement avec des API externes.
ORDA
4D 21 étend ORDA avec un contrôle plus approfondi du cycle de vie et un traitement des données plus raffiné, permettant aux développeurs de construire une logique d’entreprise plus propre et plus autonome. Grâce aux nouveaux événements du cycle de vie, à la prise en charge des constructeurs, au filtrage plus intelligent des entités et aux fonctions de nettoyage de la mémoire, la couche de données n’est plus seulement un système de stockage, mais un moteur réactif et piloté par des règles, intégré directement dans votre modèle.
MODÈLE COMPLET d’événements de cycle de vie des entités 
4D 21 introduit un modèle de cycle de vie complet et unifié pour les entités ORDA, vous donnant un contrôle total sur la façon dont les données se comportent de la création à la suppression. Au lieu de disperser les règles dans des formulaires, des API ou des déclencheurs, vous définissez maintenant toute votre logique d’entreprise directement dans vos classes de données : c’est plus propre, plus centralisé et plus facile à maintenir.
Ce cycle de vie commence dès la création d’une entité. Les constructeurs d’entités vous permettent d’attribuer des valeurs par défaut, d’initialiser la logique spécifique au contexte (comme l’utilisateur ou la session en cours) ou de pré-remplir les attributs automatiquement. Dès qu’une entité est modifiée en mémoire, l’événement onTouch réagit à ces changements en temps réel, ce qui facilite la normalisation des valeurs, l’application des règles ou la préparation des mises à jour dépendantes avant le début de toute opération d’enregistrement.
Lorsqu’une entité est sauvegardée, 4D 21 exécute désormais une séquence en trois phases : validateSave, saving, et afterSave. Cela vous permet de bloquer rapidement les opérations non valides, d’appliquer la logique métier pendant l’enregistrement et de déclencher des actions de suivi une fois l’opération terminée. Le même pipeline en trois phases existe pour les suppressions avec vvalidateDrop, dropping, et afterDrop, ce qui vous permet d’empêcher les suppressions non autorisées, de nettoyer les données connexes et d’exécuter la logique post-suppression de manière cohérente.
Tous les événements sont disponibles au niveau de l’entité et de l’attribut. Les événements de validation peuvent bloquer les opérations lorsque les règles ne sont pas respectées, tandis que les post-événements s’exécutent toujours, même si l’opération échoue, ce qui garantit un comportement fiable et prévisible dans l’ensemble du modèle.
En consolidant cette logique au sein de vos classes de données ORDA, le comportement des entités devient prévisible, autonome et cohérent dans l’ensemble de votre application. Les règles métier ne sont plus cachées dans des déclencheurs. Les systèmes externes peuvent s’intégrer proprement grâce à des crochets d’événements natifs. Dans les projets basés sur ORDA, les déclencheurs traditionnels ne sont plus nécessaires, les événements du cycle de vie offrent toute la puissance d’ORDA dans une architecture plus propre et plus facile à maintenir.
Restreindre les données sur les sélections d’entités
Contrôler qui voit quelles données est essentiel dans les applications métier. Désormais, vous pouvez définir ces règles une seule fois, proprement et directement dans votre modèle de données.
Alors que le système de permission existant dans 4D contrôle si les utilisateurs peuvent accéder à une classe de données entière, la nouvelle fonction restrict() introduite dans 4D 21 affine encore cet accès. Elle vous permet d’appliquer des filtres contextuels sur les sélections d’entités en fonction des valeurs de session, des rôles des utilisateurs ou de toute autre logique d’exécution.
Plutôt que d’appliquer des filtres manuellement dans votre code, vous les définissez une fois dans la classe de données à l’aide de la fonction restrict(). Par exemple, un vendeur peut être limité à la visualisation des clients qu’il gère, tandis que les administrateurs voient toujours l’ensemble des données, le tout étant déterminé automatiquement lors de chaque opération de lecture comme query() ou all().
Cette approche centralisée renforce non seulement la sécurité, mais permet également de conserver une logique propre et cohérente dans les contextes web et client-serveur.
DES SÉLECTIONS D’ENTITÉS PROPRES AVEC SUPPRESSION AUTOMATIQUE DES LACUNES
Lorsque les utilisateurs suppriment des entités d’une sélection, l’interface se retrouve souvent encombrée par des espaces vides. Cela rompt le flux, ajoute de la friction et rend votre interface utilisateur moins réactive.
Avec 4D 21, la nouvelle fonction clean() résout ce problème en une seule ligne. Après avoir effectué un dépôt, il vous suffit d’appeler .clean() sur la sélection d’entités pour supprimer automatiquement les espaces vides laissés par les entités supprimées. Cette fonction est transparente, efficace et permet de restaurer une vue polie et ininterrompue sans reconstruction manuelle.
Ce petit ajout se traduit par une grande amélioration de la qualité de l’interface et de l’expérience de l’utilisateur. Et cela ne se limite pas à l’interface utilisateur : l’API REST $entityset prend également en charge le paramètre clean, ce qui permet à vos réponses API de renvoyer des données propres et sans lacunes, même après des suppressions.
Que vous développiez une interface de bureau ou que vous travailliez avec des clients web, cette fonctionnalité permet à vos vues de données d’être ordonnées et à vos interactions avec l’utilisateur d’être fluides.
4D Qodly Pro
4D Qodly Pro vous permet d’étendre votre application métier avec des interfaces modernes basées sur le navigateur, sans écrire une seule ligne de HTML ou de JavaScript. Grâce à un éditeur visuel par glisser-déposer, vous pouvez créer des formulaires web réactifs et les connecter directement à votre logique métier 4D.
Les pages Qodly peuvent être intégrées directement dans les formulaires 4D classiques à l’aide d’une zone Web. Du point de vue de l’utilisateur, il s’agit d’une interface unique et unifiée. Il n’y a pas besoin de fenêtres séparées ou de licences supplémentaires. La page Qodly intégrée partage la même session et la même licence que le client 4D Remote, ce qui rend l’expérience à la fois transparente et sans coût supplémentaire.
Si vous voulez voir comment cela se passe rapidement dans la pratique, vous pouvez regarder la rediffusion du webinaire officiel de 4D Qodly Pro, qui explique comment ajouter des formulaires basés sur un navigateur à une application 4D réelle.
CONSTRUIRE DES INTERFACES WEB MODERNES SANS RÉÉCRIRE VOTRE APPLICATION
4D Qodly Pro vous permet de créer des interfaces modernes, basées sur un navigateur, directement au-dessus de votre application 4D existante, sans avoir à apprendre les frameworks web, à réécrire la logique ou à gérer des bases de code séparées. Vous concevez des pages visuellement, liez des données visuellement, sécurisez l’accès visuellement et exposez des API visuellement, tout en restant dans le flux de travail familier de 4D. Le résultat est un chemin plus rapide vers le web avec moins de code, moins de complexité et aucune déconnexion entre votre interface utilisateur et votre logique d’entreprise.
-
Étendez ou déplacez vos applications de bureau vers le web sans restructurer votre architecture : Les pages Qodly s’appuient sur votre modèle ORDA et vos classes de serveur existants. Votre logique, votre base de données et vos règles de sécurité restent exactement là où elles sont.
-
Construisez des interfaces réactives visuellement en utilisant des composants réutilisables : Vous faites glisser les composants sur le canevas, vous les configurez à l’aide des panneaux latéraux et vous les liez aux qodlysources sans code. Les composants élaborés et les modèles prêts à l’emploi vous permettent d’assembler rapidement des écrans avec un style cohérent.
-
Accélérez le développement en supprimant la complexité du frontend : La liaison des données, le formatage, les états conditionnels, les événements et la navigation sont tous visuels. Aucun HTML, CSS ou JavaScript n’est nécessaire, seulement la logique 4D et les panneaux de Qodly Studio.
-
Utilisez la licence 4D Client que vous possédez déjà : Lorsqu’une page Qodly est intégrée dans une zone Web d’un client 4D Remote, elle s’exécute sous la même session et la même licence. Les utilisateurs voient une interface unifiée et le déploiement reste simple et rentable.
-
Garder les équipes productives avec une expérience familière de glisser-déposer : Qodly Studio s’inspire de l’éditeur de formulaires 4D, ce qui permet aux nouveaux développeurs de rejoindre facilement le projet et aux équipes 4D expérimentées de travailler plus rapidement.
-
La conception, la logique et les données se trouvent toutes dans le même environnement : Qodly Studio gère la mise en page, les pages Qodly définissent la structure, et vos règles de gestion se trouvent dans vos classes. Rien n’est dispersé dans des fichiers externes ou des cadres déconnectés.
-
Construisez visuellement un comportement dynamique : Les états conditionnels et non conditionnels permettent aux pages de s’adapter aux rôles des utilisateurs, aux changements de données ou aux interactions de l’interface utilisateur, le tout configuré à l’aide de panneaux guidés. Vous voyez exactement quand et pourquoi les éléments apparaissent, changent ou réagissent.
-
Définissez visuellement les rôles, les privilèges et les règles d’accès : Une interface dédiée vous permet de créer des hiérarchies de rôles, d’attribuer des privilèges et d’examiner les autorisations finales d’un seul coup d’œil. Elle précise qui peut lire, mettre à jour, supprimer ou exécuter chaque partie de votre application.
-
Exposez la logique du serveur sous la forme de gestionnaires HTTP simples et visuels : Vous choisissez une classe, une méthode, un modèle d’URL et Qodly se charge du routage. C’est un moyen facile de publier des API ou d’intégrer des systèmes externes sans couches ou cadres supplémentaires.
-
Déboguez les pages directement sur votre serveur 4D : Vous prévoyez instantanément les modifications de l’interface utilisateur, vous inspectez les qodlysources et vous utilisez le débogueur 4D à l’intérieur de Qodly Pro – exactement à l’endroit où la logique s’exécute.
Composants personnalisés : Étendez Qodly avec vos propres éléments de construction
4D Qodly Pro prend également en charge les composants personnalisés, vous donnant un moyen d’étendre l’interface utilisateur lorsque vous avez besoin de quelque chose qui va au-delà de la boîte à outils intégrée.
-
Ajoutez de nouvelles capacités avec vos propres composants React : Des widgets complexes, des visualisations spécialisées ou des interactions uniques peuvent être construits en tant que composants React et téléchargés directement dans Qodly Studio.
-
Réutilisez-les dans vos projets ou partagez-les au sein de la communauté : Les composants personnalisés se comportent comme des composants natifs une fois installés, ils glissent et déposent, lient des données, appliquent des styles et déclenchent des événements exactement de la même manière.
-
Assurer l’efficacité du développement : Au lieu de recréer une interface utilisateur spécialisée à chaque fois, vous installez un composant une fois et l’utilisez partout.
-
Se fondre harmonieusement dans le reste de l’interface utilisateur : Vous contrôlez l’apparence, le comportement et l’intégration, tandis que Qodly s’assure que les composants s’exécutent efficacement dans son runtime.
Et grâce à une communauté active qui partage continuellement des composants personnalisés, vous pouvez enrichir votre boîte à outils sans avoir à tout construire vous-même.
Installation automatique de Qodly Studio 
Lancer Qodly Studio pour la première fois depuis le mode 4D Design déclenche un assistant de configuration automatique. Tous les paramètres requis : Activation du serveur REST, sessions évolutives, ports du serveur web, sont détectés et présentés avec une invite à les activer.
S’ils sont acceptés, les services redémarrent si nécessaire et Qodly Studio s’ouvre dans le navigateur. En cas de refus, aucune modification n’est apportée. Le flux de travail est fluide, rapide et sans intervention de la part des nouveaux utilisateurs.
Sessions partagées et interactions entre les applications client/serveur et 4D Qodly Pro 
Lorsqu’une page Qodly est affichée dans une zone Web d’ un client 4D Remote, elle s’exécute dans la même session et avec la même licence. Cela signifie qu’aucune licence supplémentaire n’ est consommée et que le même contexte de session circule de manière transparente entre le formulaire de bureau et la page 4D Qodly Pro.
L’authentification et les privilèges sont préservés automatiquement, et les données de session peuvent être transmises pour initialiser la page web avec le contexte du bureau, par exemple en affichant les détails de l’entité actuellement sélectionnée.
Outre le partage de session, les actions de 4D Qodly Pro permettent une interaction directe et bidirectionnelle entre les formulaires 4D et les pages de 4D Qodly Pro. À partir d’une page Qodly, les développeurs peuvent appeler des fonctions 4D par l’intermédiaire de l’objet $4d, préalablement initialisé avec la commande WA SET CONTEXT. Inversement, un formulaire 4D peut mettre à jour les sources Qodly directement, ce qui garantit la synchronisation de l’état et de la logique dans les deux environnements.
Ensemble, ces améliorations permettent de combiner facilement des formulaires 4D classiques avec des pages Qodly modernes dans une seule application, unifiant les sessions, les interactions et le contexte tout en évitant les connexions redondantes, les licences supplémentaires ou le travail d’intégration complexe.
Internationalisation intégrée (i18n) 
4D Qodly Pro inclut l’internationalisation intégrée (i18n), afin que vos applications puissent s’adapter de manière transparente à de multiples langues et paramètres régionaux.
Les langues prises en charge sont définies en tant que locales dans la nouvelle section Localisation, où les clés et les valeurs de traduction peuvent être gérées et liées aux composants. Le choix de la langue est géré par la source Qodly intégrée à UserLanguage, qui applique la sélection de l’utilisateur en temps réel.
Lesretours automatiques couvrent les données de session, les valeurs par défaut du navigateur ou une locale principale, tandis que la prise en charge native de droite à gauche (RTL) rend des langues comme l’arabe naturelles. Le passage d’une langue à l’autre met instantanément à jour le contenu, créant ainsi une expérience personnalisée et fluide.
Cela vous permet de vous développer sur de nouveaux marchés, de réduire les frictions liées à l’intégration et de renforcer la confiance des utilisateurs sans avoir à repenser votre interface utilisateur ou à ajouter de la complexité. Qu’il s’agisse d’un lancement local ou mondial, votre produit est prêt à parler la langue de vos utilisateurs.
Rapport d’événements de la page Qodly 
Le rapport d’événements fournit une vue claire et unifiée de tous les événements de votre page, qu’ils proviennent d’actions standard, d’actions de navigation, de fonctions de classe ou d’actions de dialogue. Il indique les événements déclarés, l’endroit où ils sont mis en œuvre et l’ordre exact dans lequel ils s’exécutent.
En rendant le flux d’événements transparent, il accélère le débogage, découvre instantanément les chevauchements ou les gestionnaires manquants et facilite l’optimisation. Les équipes peuvent collaborer plus facilement et vous gagnez en confiance en sachant exactement comment votre page se comporte.
C’est un moyen simple d’apporter clarté, précision et efficacité à la gestion des événements, qu’il s’agisse d’une petite application ou d’une solution à grande échelle.
COMMANDES DE ZOOM SUR LE CANEVAS 
L’éditeur de pages 4D Qodly Pro inclut des contrôles de zoom sur le canevas pour faciliter le travail avec des mises en page complexes. Les développeurs peuvent maintenant zoomer, dézoomer ou réinitialiser la vue directement depuis la barre d’outils, avec un support pour les raccourcis clavier et la navigation avec la molette de la souris.
Le niveau de zoom actuel est affiché dans l’interface, ce qui permet aux développeurs de contrôler précisément la manière dont ils visualisent et organisent les composants sur le canevas.
Ces améliorations permettent d’améliorer la navigation, la précision de la conception et la convivialité générale, en alignant l’éditeur de pages sur les normes des outils de conception visuelle modernes.
BASE DE DONNÉES
4D 21 renforce les fondations de votre modèle de données avec des fonctionnalités qui apportent plus de structure, plus de fiabilité et de meilleures performances à l’échelle. Vous pouvez désormais affecter des classes directement aux champs d’objets pour garantir la validation de la forme et des modèles typés plus sûrs. Les sélections d’enregistrements restent cohérentes même lorsque les données changent en arrière-plan, ce qui garantit des résultats stables pour les opérations de longue durée. Grâce à la nouvelle prise en charge de l’UUID v7, vos identifiants sont ordonnés dans le temps et faciles à indexer, ce qui facilite le tri des grands ensembles de données et accélère les requêtes sur les systèmes distribués.
CHAMPS D’OBJET DE TYPE CLASSE DANS L’ÉDITEUR DE STRUCTURE
Dans l’éditeur de structure, les champs d’objets peuvent désormais être affectés à une classe spécifique. Ilne s’agit pas de simples métadonnées, mais d’un contrat que 4D applique à plusieurs niveaux.
Assignez une classe d’utilisateurs à un champ d’objet et vous obtiendrez :
-
autocomplétion au niveau de la propriété
-
Vérification de la syntaxe à la compilation
-
Validation de la forme de l’objet au moment de l’exécution
Si l’objet ne correspond pas à la classe déclarée, 4D lève une erreur. La structure devient schéma, vos données restent propres, et lorsqu’elle est combinée avec 4D.Vector, la définition d’un attribut vectoriel typé dans votre classe signifie que chaque entité porte sa propre empreinte sémantique, prête pour l’évaluation de la similarité, le tri piloté par l’IA ou les recommandations intelligentes.
MAINTENIR LA COHÉRENCE DES SÉLECTIONS D’ENREGISTREMENTS
4D 21 renforce la fiabilité des données en s’assurant que les sélections d’enregistrements restent stables même lorsque des enregistrements sont supprimés et que de nouveaux sont créés en arrière-plan.
Dans les versions précédentes, la suppression d’un enregistrement pouvait libérer un emplacement interne susceptible d’être réutilisé ultérieurement par un nouvel enregistrement, de sorte qu’une sélection existante incluait inopinément des données qui ne correspondaient pas aux critères initiaux.
Désormais, une fois qu’une sélection est créée, elle reste cohérente pendant toute sa durée de vie. Les enregistrements supprimés disparaissent tout simplement de la sélection et les enregistrements nouvellement créés ne s’y glissent jamais. Cela s’applique aussi bien aux sélections QUERY classiques qu’aux sélections d’entités ORDA.
Avec cette mise à jour, les boucles, les fusions de courrier, les tâches d’arrière-plan et les sélections de longue durée se comportent exactement comme prévu, sans surprise, sans vérification supplémentaire, juste des résultats fiables.
PRISE EN CHARGE DES UUIDS V7
La génération d’UUID est devenue plus intelligente. Generate UUID prend désormais en charge les identifiants de la version 7. Cela signifie que vos UUID ne sont pas seulement universellement uniques, mais qu’ils peuvent être triés chronologiquement, qu’ils sont adaptés aux bases de données et qu’ils sont conçus pour les systèmes distribués modernes.
En interne, les UUID v7 intègrent des données d’horodatage, ce qui les rend idéaux pour un stockage ordonné et plus faciles à indexer. Il s’agit d’un petit changement qui a un impact considérable sur l’échelle et les performances des requêtes.
Composant 4D
4D 21 apporte deux avancées majeures au développement de composants : un gestionnaire de dépendances entièrement moderne et une édition transparente des composants au sein du projet. Vous pouvez charger « uniquement ce dont vous avez besoin » grâce à la gestion optionnelle des composants, extraire des composants directement de GitHub, aligner automatiquement tous les composants sur votre version de 4D, et compter sur 4D pour résoudre les dépendances récursives et prévenir les conflits. En même temps, vous pouvez voir, éditer et déboguer le code des composants directement dans votre projet hôte, ce qui rend le développement basé sur les composants plus rapide, plus propre et beaucoup plus facile à maintenir. Ensemble, ces changements créent un flux de travail rationalisé et prévisible pour la création, le partage et la mise à l’échelle des composants au sein des équipes et des projets.
INTÉGRATION TRANSPARENTE DES COMPOSANTS DANS LE PROJET 
Ledéveloppement de composants dans 4D a fait un grand pas en avant. Les méthodes et les classes d’un composant, qu’elles soient partagées ou non, peuvent désormais être visualisées et modifiées directement dans le projet hôte, sans qu’il soit nécessaire d’ouvrir le composant séparément ou de se déconcentrer pendant le développement. Toutes les méthodes peuvent désormais être modifiées sur place, et des composants entiers peuvent être créés à partir de l’interface utilisateur hôte, initialisés avec l’espace de noms, les fichiers et la structure, puis modifiés immédiatement en mode interprété.
Au-delà du code, la visibilité s’est élargie pour inclure des formulaires en lecture seule, des dossiers, des constantes, des commandes, des plug-ins et même une corbeille spécifique au composant. Les constantes conservent un lien avec leurs composants sources, ce qui garantit la cohérence de l’application, tandis que les nouveaux flux de création relient automatiquement les dépendances et mettent en place une structure pour les modes gérés et hérités.
Dans l’ensemble, cela rend l’itération des composants plus rapide, la modularisation plus fluide, et les projets plus propres et plus transparents. Il s’agit d’une étape importante qui rapproche les composants du flux de travail du projet hôte, et d’autres améliorations sont encore prévues sur la feuille de route.
GESTION OPTIONNELLE DES COMPOSANTS 
4D 21 n’inclut plus les composants 4D standard. Au lieu de cela, vous déclarez vos besoins dans la boîte de dialogue Add Dependency, et 4D les récupère et les installe automatiquement à la demande. De là, vous pouvez accéder directement au catalogue complet des composants 4D, y compris 4D AI Kit, 4D NetKit, 4D View Pro, SVG, et plus encore, tous publiés en tant qu’open source sur GitHub. Cela vous donne la flexibilité d’installer uniquement ce dont vous avez besoin tout en facilitant l’exploration des composants internes, en contribuant aux améliorations et en alignant vos projets sur l’évolution des besoins.
-
Dépendances ciblées : Seuls les composants nécessaires sont installés.
-
Alignement des versions : Les dépendances suivent par défaut la version actuelle de 4D, ce qui garantit la compatibilité sans nécessiter de vérifications manuelles.
Lors de la mise à niveau vers 4D 21, les projets existants peuvent télécharger automatiquement les composants requis, tandis que les bases de données binaires continuent d’y accéder via le programme d’installation ou le portail de téléchargement.
Automatiser la compatibilité des dépendances avec Follow 4D Version
La règle Follow 4D version simplifie la gestion des dépendances en synchronisant automatiquement vos dépendances avec votre environnement 4D. Cela réduit les problèmes de compatibilité et vous fait gagner du temps.
- Compatibilité automatique: Les dépendances s’alignent sur votre version 4D, sans qu’aucun suivi manuel ne soit nécessaire.
- Mises à jour et rétrogradations sans effort: Les dépendances sont mises à jour automatiquement lors de la mise à niveau ou de la rétrogradation de 4D.
- Résolution fiable des dépendances: Le système résout les dépendances en se basant sur les conventions de dénomination des balises structurées pour les versions LTS et R.
INTÉGRATION DE COMPOSANTS GITHUB-NATIVE ET CONTRÔLE DES DÉPENDANCES
L’intégration des composants dans 4D 21 est conçue pour la façon dont le développement se déroule actuellement. Les équipes partagent du code. Les bibliothèques internes évoluent. Les composants publics s’améliorent. Et tout passe par GitHub. Le nouveau système de dépendances connecte votre projet directement à ces dépôts afin que les composants s’installent, se mettent à jour et restent alignés avec leur source sans aucune manipulation manuelle.
Une fois qu’un composant est référencé, 4D l’extrait directement de GitHub et applique des règles de version sémantiques afin que vous puissiez décider exactement du degré de rigueur ou de liberté avec lequel vous souhaitez suivre les mises à jour. Vous pouvez geler une version lorsque la stabilité est importante, rester dans une fourchette de sécurité lorsque vous souhaitez des mises à jour contrôlées, ou suivre la dernière version lorsque vous procédez à des itérations rapides. Lorsqu’une nouvelle version est disponible sur GitHub, 4D la met immédiatement en évidence afin que vous puissiez mettre à jour un seul composant ou l’ensemble en une seule étape.
Les dépôts privés s’intègrent parfaitement. Vous ajoutez un jeton une fois, et 4D s’occupe du reste, en récupérant les composants internes aussi facilement que les composants publics.
Cela crée un flux propre et prévisible. Chaque composant est traçable. Chaque mise à jour est intentionnelle. Chaque dépendance reste connectée à la base de code qui la définit. L’adoption devient plus facile, la maintenance devient plus légère et le partage du code entre les équipes devient une partie naturelle de votre flux de travail.
RÉSOLUTION ET GESTION RÉCURSIVE DES DÉPENDANCES
Le gestionnaire de composants comprend désormais l’arbre complet. Une fois qu’un composant se trouve dans votre projet, 4D analyse toutes les dépendances sur lesquelles il repose, charge automatiquement celles qui sont nécessaires et vérifie les conflits avant qu’ils n’apparaissent.
Le chargement récursif garantit que les sous-dépendances ne manquent jamais. Les plages de versions sont résolues intelligemment afin que plusieurs composants puissent dépendre de la même bibliothèque sans interrompre la construction. Et si un cycle apparaît, 4D le bloque à la racine pour que votre projet reste stable.
Vous bénéficiez d’une visibilité claire sur la structure : les dépendances déclarées, les dépendances indirectes, et exactement quel composant a besoin de quoi. Chaque ajout, mise à jour ou suppression est propagé dans l’arbre afin que votre projet reste cohérent sans nettoyage manuel.
Ajouter et supprimer des composants locaux
La gestion des composants locaux dans 4D 21 est désormais beaucoup plus fluide et prévisible. L’interface des dépendances du projet vous permet d’ajouter, de supprimer et d’organiser les composants en un seul endroit, sans avoir à toucher au système de fichiers ou à chercher dans les paramètres du projet.
Tout est piloté par deux fichiers : dependencies.json, qui centralise toutes les dépendances du projet à des fins de cohérence, et environment4d.json, qui gère les chemins d’accès aux composants personnalisables. Lorsque vous ajoutez un composant local, 4D écrit automatiquement la bonne entrée. Si le composant se trouve ailleurs, les deux fichiers sont mis à jour pour que le projet s’ouvre proprement sur n’importe quelle machine, sous macOS ou Windows. La suppression d’un composant suit le même flux, avec des invites de confirmation pour éviter les ruptures accidentelles et un nettoyage automatique pour que votre configuration reste stable.
Un redémarrage est nécessaire pour que tout changement prenne effet, et 4D vous guide à l’aide de notifications claires. L’ensemble du processus réduit les frictions, le temps de configuration et vous donne un accès plus rapide et plus fiable aux composants dont vous dépendez.
UTILISER DES CLASSES DANS DES COMPOSANTS AVEC DES ESPACES DE NOMS DÉCLARÉS
4D 21 simplifie considérablement l’interaction entre les composants. Lorsqu’un composant déclare un espace de noms (namespace), toutes ses classes deviennent automatiquement disponibles pour tous les autres composants du même projet hôte.
Il suffit d’inclure les composants dont vous avez besoin et vous pouvez utiliser directement leurs classes à l’adresse cs.<namespace> dans votre code.
Cette approche rend le développement basé sur les composants plus modulaire, plus prévisible et plus facile à maintenir.
STRUCTURE DES COMPOSANTS MISE À JOUR POUR LA NOTARISATION DE SILICON MACOS
4D 21 présente une structure de composants redessinée qui s’aligne sur les exigences de notarisation d’Apple pour les Macs basés sur Silicon. Les composants suivent désormais la même disposition qu’une application 4D complète, ce qui rend la notarisation plus fiable et élimine les problèmes structurels auxquels les développeurs étaient confrontés avec les anciens formats.
Les métadonnées sont désormais générées automatiquement au moment de la construction. Les champs tels que CFBundleDisplayName, CFBundleShortVersionString, CFBundleVersion et les informations de copyright sont remplis directement à partir de vos paramètres de construction. Lorsque vous utilisez Build4D, ces valeurs proviennent de votre buildApp.4DSettings, de sorte que les composants sont emballés correctement sans configuration supplémentaire.
Notez que la structure mise à jour n’est pas compatible avec les anciennes versions de 4D comme 4D 20 R7 ou 20 LTS. Les composants construits avec 4D 20 R8 ont introduit cette nouvelle structure et peuvent encore charger des composants plus anciens, mais les versions plus anciennes ne peuvent pas charger les composants construits à l’aide de la structure mise à jour.
4D NetKit & Mailing
4D NetKit est passé d’un ensemble d’utilitaires Microsoft 365 et Google à un cadre d’authentification et de communication plus approfondi. Il permet à votre application de bénéficier d’une authentification unique via Microsoft 365 et étend cette capacité avec le support complet d’OpenID Connect, ouvrant ainsi la porte à un large éventail de fournisseurs d’identité : Google, Okta, les systèmes IAM d’entreprise, tout ce qui parle le standard.
Le résultat est un environnement où les flux de connexion, la gestion des jetons, les opérations de messagerie et les intégrations de calendrier ne sont plus perçus comme des systèmes externes ajoutés de l’extérieur. Ils font désormais partie des fondations de votre application : sécurisés, modernes et prévisibles.
GESTION COMPLÈTE DES MESSAGES ET DES ÉTIQUETTES GMAIL
L’intégration de Gmail dans 4D 21 passe d’un simple point d’entrée « envoyer un message » à une boîte aux lettres complète et programmable. Une fois votre application authentifiée par OAuth 2.0, Gmail se comporte comme une autre couche de votre logique, et non comme un service distant avec lequel vous devez vous battre.
Tout commence par l’envoi. Vous créez des e-mails structurés et les envoyez via l’API Gmail, en contournant la fragilité des relais SMTP et des protocoles existants. C’est propre, prévisible et sécurisé.
À partir de là, la boîte de réception s’ouvre. Vous pouvez la lire, la façonner, la réorganiser et la nettoyer, avec la même précision que celle que vous appliquez à vos propres structures de données.
Vous pouvez désormais
-
récupérer la liste complète des libellés de Gmail, y compris les libellés système et personnalisés
-
Récupérer les identifiants des messages pour n’importe quel libellé (boîte de réception, corbeille, non lus, dossiers).
-
Charger le contenu complet des messages à la demande
-
Supprimer ou mettre à la corbeille des messages en un seul appel
-
Récupérer plusieurs courriels à la fois, jusqu’à 100 par requête
-
Attribuer ou supprimer des libellés, y compris des combinaisons telles que Travail + IMPORTANT
-
Créer, mettre à jour et supprimer des libellés de manière programmée
-
Extraire les métadonnées des libellés, telles que le nombre de messages non lus et le nombre total de messages.
Il ne s’agit pas d’un « accès à l’e-mail », mais d’une automatisation de l’e-mail.
CRÉER ET GÉRER DES BROUILLONS GMAIL
4D 21 vous permet de créer des brouillons Gmail directement dans la boîte aux lettres, en les plaçant sous l’étiquette de votre choix sans rien envoyer. C’est un moyen simple de conserver des modèles réutilisables exactement là où ils doivent être, dans Gmail, prêts à être récupérés, modifiés et envoyés lorsque le moment l’exige.
Grâce à l’API Gmail, vous pouvez ajouter un message en tant que brouillon (avec le libellé DRAFT par défaut ou votre propre libellé personnalisé), le rouvrir ultérieurement, le modifier et l’envoyer via le flux Gmail standard. Lorsqu’un brouillon n’est plus nécessaire, vous pouvez le supprimer proprement.
METTRE À JOUR LES PROPRIÉTÉS DE LA MESSAGERIE MICROSOFT 365
4D 21 vous donne un contrôle direct sur les messages Microsoft 365, en vous permettant de mettre à jour les propriétés des emails reçus ou en cours de rédaction à travers Office365.mail.update(). La demande de modification de l’indicateur isRead a ouvert la porte, mais la fonctionnalité va plus loin.
Grâce à Microsoft Graph, vous pouvez ajuster des attributs tels que le statut de lecture, les catégories ou l’importance. Et lorsque vous travaillez avec des brouillons, vous pouvez même mettre à jour des éléments plus profonds tels que l’objet ou le corps du message. Il s’agit d’un moyen simple de synchroniser l’état des boîtes aux lettres avec vos flux de travail, sans manipulation manuelle ni outil externe.
Vous décidez de la manière dont votre application réagit : marquer un message comme traité, l’étiqueter pour examen, le reclasser en fonction des règles de l’entreprise ou préparer un brouillon de message pour le compléter ultérieurement. Tout est géré par une seule API, un seul flux d’authentification et un seul modèle cohérent.
UN DÉCOMPTE PLUS RAPIDE DES MESSAGES NON LUS DANS PLUSIEURS BOÎTES AUX LETTRES
Avec 4D 21, la vérification du nombre d’emails non lus est beaucoup plus efficace. La fonction IMAPTransporter.getBoxList() peut désormais renvoyer les propriétés de la boîte aux lettres et le nombre de messages non lus en une seule requête, ce qui améliore considérablement les temps de réponse.
Si vous souhaitez obtenir une vue d’ensemble de toutes les boîtes aux lettres, y compris le nombre d’e-mails non lus, le nombre total et le nombre d’e-mails récents, vous pouvez activer l’option « withBoxInfo » et tout récupérer en une seule fois :
ACCÈS AUX INFORMATIONS SUR LES UTILISATEURS ET LES RÉPERTOIRES DE GOOGLE
4D 21 donne à votre application un accès direct aux données utilisateur de Google, ce qui facilite la personnalisation des interfaces, l’automatisation des flux de communication et l’utilisation d’annuaires à l’échelle du domaine. Une fois authentifié par OAuth 2.0, vous pouvez tout récupérer, du profil de base de l’utilisateur actuel aux listes complètes de contacts et aux enregistrements organisationnels.
Vous pouvez récupérer
-
Les détails de l’utilisateur actuellement authentifié
-
Les profils de domaine et les répertoires de contacts
-
Des enregistrements d’utilisateurs spécifiques à l’aide d’un nom de ressource et de masques de champ.
Ces fonctionnalités permettent à votre application de s’adapter aux personnes qui l’utilisent, en montrant qui est connecté, en extrayant automatiquement les bons destinataires ou en synchronisant les données organisationnelles sans effectuer de recherches manuelles.
GESTION COMPLÈTE DES CALENDRIERS POUR GOOGLE ET MICROSOFT 365
La gestion des calendriers dans 4D 21 passe de la simple récupération à un contrôle total avec les nouvelles classescs.NetKit.Office365.calendar et cs.NetKit.Google.calendar . Votre application peut lire les calendriers, extraire les événements et gérer le cycle de vie complet d’une réunion, qu’elle se trouve dans Google Calendar ou Microsoft 365. Une connexion OAuth 2.0 et, soudain, vos flux de travail de planification cessent d’être perçus comme des systèmes externes et commencent à se comporter comme des extensions de votre application.
Vous pouvez récupérer tous les calendriers liés à un compte, choisir celui qui intéresse votre logique et charger ses événements avec des filtres pour les plages, les limites ou la récurrence. À partir de là, vous êtes libre de façonner la réunion elle-même : heures de début et de fin, participants, rappels, catégories, règles de récurrence, et même liens de visioconférence comme Teams ou Google Meet.
La création, la mise à jour ou la suppression d’événements se fait en un seul appel. Si un événement est annulé, les participants en sont automatiquement informés. S’il est mis à jour, la plateforme se charge de renvoyer les détails. Votre travail consiste à façonner le flux de travail, et non à gérer les appels HTTP ou à réconcilier les différences d’API entre les écosystèmes.
En pratique, vous pouvez
-
récupérer des calendriers dans Google et Microsoft 365
-
Charger des événements avec des fenêtres temporelles, des filtres et des extensions optionnelles
-
créer des réunions avec des participants, des descriptions, des rappels et des liens
-
mettre à jour uniquement les champs importants sans reconstruire l’événement
-
Supprimer proprement des événements, la plateforme se chargeant des notifications.
OAUTH2 AMÉLIORÉ, OPENID CONNECT & CONTRÔLE D’AUTHENTIFICATION
L’authentification dans 4D 21 devient plus fluide, plus sûre et beaucoup plus flexible. 4D NetKit gère désormais l’ensemble du flux OAuth2 et OpenID avec les principaux fournisseurs, Microsoft, Google, GitHub, Okta, et tout serveur compatible OAuth2, tout en vous donnant un contrôle total sur la sécurité, la présentation et le comportement des rappels sans ajouter de couches de code supplémentaires.
4D NetKit gère automatiquement l’ensemble de l’échange : l’identifiant du client, l’URI de redirection, les champs d’application, la récupération du jeton et le flux de retour. Une fois l’authentification réussie, votre application peut afficher sa propre page HTML directement à l’utilisateur, ce qui permet de conserver une expérience propre et totalement intégrée.
Voici l’ensemble des améliorations, fusionnées en une seule fonctionnalité unifiée :
-
Flux d’autorisation OAuth2 amélioré : 4D NetKit gère désormais l’échange OAuth2 complet pour des fournisseurs tels que Microsoft, Google, GitHub ou tout autre serveur OAuth2 personnalisé, en gérant l’ID du client, l’URI de redirection, les champs d’application, la récupération du jeton et le retour final. Cela crée une expérience d’accueil plus fluide, sans pages système gênantes, sans transitions confuses, et un transfert propre directement dans votre application. Dès que l’authentification est réussie, vous pouvez afficher votre propre page HTML afin que le flux semble intégré, moderne et entièrement sous votre contrôle.
-
Protection PKCE (Proof Key for Code Exchange) pour une autorisation plus sûre : En activant PKCEEnabled dans cs.NetKit.OAuth2Provider, chaque échange de code d’autorisation devient cryptographiquement sécurisé. Cela protège votre application contre les attaques par interception ou par rejeu, particulièrement importantes pour les applications de bureau et les applications natives, en garantissant que le code d’autorisation renvoyé ne peut être utilisé que par le client demandeur d’origine. Vous bénéficiez d’une amélioration majeure de la sécurité sans avoir à écrire vous-même le moindre code cryptographique.
-
Authentification OAuth2 basée sur un certificat pour une sécurité de niveau entreprise : Au lieu de vous appuyer sur les secrets des clients, vous pouvez vous authentifier à l’aide d’une clé privée et d’une empreinte de certificat. 4D NetKit construit et signe l’assertion automatiquement, ce qui réduit considérablement les risques d’exposition et s’aligne sur les pratiques de sécurité modernes des entreprises, telles que celles exigées par la plate-forme d’identité de Microsoft. En définissant la permission sur Service et en fournissant .privateKey et .thumbprint sur votre objet cs.NetKit.OAuth2Provider, la poignée de main complète du certificat et l’échange de jetons s’exécutent de manière sécurisée et cohérente dans tous les environnements.
-
Contrôle d’affichage personnalisé pour les flux de connexion OAuth : En attribuant la valeur False à browserAutoOpen dans vos informations d’identification cs.NetKit.OAuth2Provider, vous pouvez contrôler entièrement l’affichage de l’écran de connexion. Vous pouvez l’afficher dans une zone Web, l’incorporer dans une boîte de dialogue ou l’intégrer dans un flux de travail guidé qui correspond à votre interface utilisateur. Le flux de sécurité reste géré par 4D NetKit, mais la présentation devient la vôtre, créant une expérience de connexion qui semble native plutôt qu’externe, idéale pour les applications de marque ou les flux d’accueil en douceur.
-
Utiliser le serveur web hôte pour les rappels OAuth2 : Les réponses OAuth peuvent désormais être renvoyées directement via les ports de votre serveur web hôte. 4D NetKit choisit automatiquement le bon serveur en fonction de votre URI de redirection : les ports correspondants vont au serveur hôte, les ports standards comme 80 ou 443 lui sont attribués par défaut, et tout le reste est renvoyé au serveur interne de NetKit. Lorsque le serveur hôte est utilisé, il suffit d’ajouter un gestionnaire HTTP pour capturer le rappel, et NetKit.OAuth2Authorization.getResponse complète l’échange. Cela permet d’éviter les auditeurs secondaires, les conflits de port et la complexité de l’installation, ce qui rend les flux d’authentification plus propres et plus faciles à déployer.
-
Conformité à OpenID Connect avec la gestion de l’état et du nonce
: Le flux d’authentification prend désormais entièrement en charge state et nonce, permettant à votre application de valider l’intégrité de la redirection et d’appliquer automatiquement l’unicité du jeton. state protège contre les manipulations de type CSRF en s’assurant que la réponse correspond à la demande, tandis que nonce prévient les attaques par rejeu en garantissant que les jetons sont frais et uniques. Étant donné que 4D NetKit gère les deux paramètres en interne, vous pouvez intégrer les fournisseurs OpenID modernes, Google, Microsoft et Okta, sans avoir à créer des couches de validation personnalisées. -
URL personnalisées pour les résultats d’authentification et d’erreur
: Les attributs authenticationPage et authenticationErrorPage de la commande cs.NetKit.OAuth2Provider.new() acceptent désormais des URL complètes, ce qui vous donne un contrôle total sur ce que l’utilisateur voit après l’authentification. Vos pages de succès ou d’erreur peuvent être hébergées n’importe où, dans une application 4D Qodly Pro, sur votre propre serveur web ou sur un service tiers, au lieu d’être limitées à des fichiers HTML locaux. Cela vous permet de fournir des réponses dynamiques, adaptées à la marque et au contexte, qui peuvent être mises à jour indépendamment de votre application 4D, sans déploiement ni reconstruction.
SERVEUR HTTP
4D 21 étend le serveur HTTP pour en faire une couche plus performante, plus sûre et plus conviviale pour les développeurs. Vous pouvez définir des règles de réponse globales, acheminer les demandes par le biais de mappages de gestionnaires propres, renvoyer un contenu Web structuré et intégrer des systèmes externes sans risquer d’exposer la session. La communication en temps réel devient plus facile grâce à la prise en charge complète du client WebSocket, et l’utilisation des licences reste sous votre contrôle grâce à des options de flux d’authentification plus intelligentes. Tout est conçu pour simplifier le routage, renforcer la sécurité et rationaliser la communication de vos points d’extrémité Web.
règles de réponse http personnalisées 
Les en-têtes de réponse HTTP de 4D sont désormais configurables au niveau du serveur. En utilisant un nouveau fichier HTTPRules.json ou le paramètre settings.rules lors du démarrage, les développeurs peuvent définir des règles de réponse correspondant à un modèle d’URL. Les règles prises en charge sont les suivantes
-
removedHeaders: supprimer les en-têtes indésirables (par exemple, supprimer l’en-tête Server pour des audits plus stricts).
-
addedHeaders: injecte des en-têtes de sécurité tels que Content-Security-Policy, X-Frame-Options ou Permissions-Policy.
-
denyAccess: bloque l’accès aux chemins sensibles avec un statut 403.
-
redirection: acheminer les demandes d’images, de CSS ou de JavaScript vers un CDN.
-
status: définit explicitement le code d’état de la réponse.
En gérant les en-têtes directement dans 4D, l’infrastructure devient plus légère, avec beaucoup moins de dépendance à l’égard des proxys inversés externes ou de l’injection manuelle d’en-têtes. La cohérence est améliorée et les politiques sont appliquées au niveau du framework pour toutes les réponses web, y compris REST.
ROUTAGE HTTP STRUCTURÉ AVEC LES GESTIONNAIRES DE REQUÊTES
4D 21 introduit les gestionnaires de requêtes HTTP, un moyen plus propre et plus modulaire de décider comment votre serveur répond aux requêtes web entrantes. Au lieu d’écrire de gros blocs On Web Connection, vous associez des modèles d’URL à des fonctions de classe, ce qui facilite l’organisation, le test et la maintenance de votre routage.
Avec les nouvelles fonctions 4D.IncomingMessage et 4D.OutgoingMessage vous pouvez inspecter les URL, les en-têtes, les paramètres et le contenu du corps, puis renvoyer des réponses structurées, qu’il s’agisse d’authentifier des utilisateurs, de servir des fichiers, de rediriger vers des pages ou de gérer des téléchargements.
Tout est configuré dans le fichier HTTPHandlers.json, où chaque entrée définit
-
le modèle d’URL à utiliser
-
Les verbes HTTP à accepter
-
La classe singleton et la méthode qui gèrent la requête
Cela vous donne un contrôle précis sur le routage des requêtes, une séparation plus nette de la logique métier et un support intégré pour des scénarios tels que la redirection de l’authentification, la gestion des fichiers et même la redirection des utilisateurs vers les pages Qodly.
INTÉGRATIONS SÉCURISÉES, SANS RISQUE DE SESSION, AVEC DES CODES D’ACCÈS À USAGE UNIQUE
4D 21 ajoute des codes de passe à usage unique (OTP) et des outils de restauration de session qui facilitent la connexion de vos applications web à des systèmes tiers sans exposer les cookies de session ou interrompre le flux d’utilisateurs.
Avec Session.createOTP()vous générez un code d’accès à usage unique lié à la session web en cours. Vous pouvez envoyer en toute sécurité cet OTP à des services externes, par exemple dans des liens de vérification d’e-mails ou des rappels de traitement d’inventaire, sans jamais exposer le cookie de session 4D. Lorsque la requête est renvoyée, 4D rétablit automatiquement la session correcte en utilisant le cookie de session :
-
$4DSID dans l’URL, lorsque cela est autorisé
-
Session.restore()lorsque le fournisseur ne prend en charge qu’un paramètre d’état
Cela permet de conserver le contexte de l’utilisateur intact à travers des processus à plusieurs étapes, d’éviter les risques d’interception et de prendre en charge des intégrations plus propres avec des API externes.
PRISE EN CHARGE DU CLIENT WEBSOCKET POUR LA COMMUNICATION EN TEMPS RÉEL
Les mises à jour en temps réel sont essentielles dans les applications modernes, des tableaux de bord aux interfaces IoT. Pour cela, 4D 21 introduit la classe 4D.WebSocket qui vous offre un moyen simple de construire des clients WebSocket qui se connectent à n’importe quel serveur WebSocket.
Les WebSockets créent une connexion full-duplex, vous permettant d’envoyer et de recevoir des messages instantanément. Vous pouviez déjà héberger votre propre serveur WebSocket à l’aide de 4D.WebSocketServer; désormais, vous pouvez également vous connecter à des serveurs externes, échanger des messages et réagir aux événements du serveur.
Il suffit de définir une classe de gestionnaire avec des rappels tels que onMessage, onOpen, onTerminate et onError, puis de créer votre client avec :
Form.webSocket := 4D.WebSocket.new($url; cs.WSConnectionHandler.new())
À partir de là, votre application peut écouter les messages entrants et envoyer des mises à jour en temps réel, ce qui est parfait pour les fonctions de chat, les tableaux de bord en direct, les appareils IoT, etc.
En-têtes client Websocket PERSONNALISÉS
Lorsque vous avez besoin de transmettre des informations supplémentaires au cours d’une poignée de main WebSocket, comme des jetons de sécurité, des métadonnées d’application ou des identifiants personnalisés, 4D 21 vous permet de définir des en-têtes personnalisés directement à partir de votre client WebSocket.
Il vous suffit d’ajouter un attribut headers à votre classe WebSocket handler. Cet objet fonctionne comme les en-têtes HTTP standard, en utilisant des paires clé/valeur :
This.headers := New object("x-authorization"; $token)
This.headers.Cookie := "yummy_cookie=choco; tasty_cookie=strawberry"
Ces en-têtes sont automatiquement envoyés à l’ouverture de la connexion, ce qui vous offre un moyen souple d’authentifier, de personnaliser ou de configurer vos sessions WebSocket sans modifier le code du serveur.
Parfait pour la sécurité basée sur les jetons, les configurations multi-locataires ou tout flux de travail où le client doit se présenter avant que les données ne commencent à circuler.
FOURNIR UN CONTENU WEB PERSONNALISÉ AVEC LA CLASSE OUTGOINGMESSAGE
4D 21 introduit la classe OutgoingMessage, ce qui facilite grandement le retour de contenu personnalisé, comme des fichiers, des images ou des données binaires, à partir de vos points d’extrémité Web ou REST. Au lieu d’être limité à des valeurs scalaires ou à des entités ORDA, vous pouvez désormais envoyer des réponses complètes, prêtes pour le web, directement au navigateur.
Avec cette classe, vous pouvez définir les en-têtes, le corps de la réponse et le code d’état HTTP, ce qui vous donne un contrôle total sur la manière dont le contenu est délivré. Elle est idéale pour les cas d’utilisation tels que le téléchargement de PDF, la diffusion d’images ou le renvoi de toute charge utile binaire.
Pour rendre les choses encore plus faciles, 4D prend désormais en charge le mot-clé onHTTPGet. Lorsqu’il est ajouté à une fonction exposée, cette fonction peut être appelée par une simple requête GET du navigateur, ce qui est parfait pour les liens conviviaux ou les téléchargements directs de fichiers.
CONTRÔLER L’UTILISATION DES LICENCES AVEC FORCE LOGIN
4D 21 introduit Force Login, un mode qui empêche les requêtes REST de consommer une licence 4D Client jusqu’à ce que l’utilisateur s’authentifie. Le chargement d’une page Qodly, l’affichage d’un formulaire ou le déclenchement d’appels REST descriptifs ne consomment plus de licence, seule une authentification réussie le fait.
Cela empêche les écrans de connexion de bloquer les ressources, réduit l’utilisation inutile des licences et vous donne un contrôle total sur le moment où les licences sont allouées. Dès que l’utilisateur se déconnecte, la licence est immédiatement libérée.
4D Write Pro
4D Write Pro fait un grand pas en avant avec de nouveaux outils qui rendent les documents plus faciles à construire, plus intelligents à formater et plus puissants à automatiser. Les tableaux s’adaptent intelligemment à vos données, les mises en page sont plus faciles à façonner visuellement ou par programmation, les documents s’étendent à des milliers de lignes sans effort, l’exportation devient plus performante avec le PDF/A, les pièces jointes et la prise en charge des factures électroniques. Et pour la première fois, un assistant IA intégré vous aide à rédiger, affiner et améliorer votre contenu directement dans 4D Write Pro.
ASSISTANT D’ECRITURE ALIMENTÉ PAR L’AI POUR 4D WRITE PRO
4D Write Pro dispose désormais d’un assistant d’écriture doté d’une IA qui vous aide à rédiger, éditer et peaufiner vos documents directement dans 4D Write Pro. Une fois connecté à l’API OpenAI, vous bénéficiez d’une assistance en temps réel pour améliorer la clarté, corriger les erreurs, remodeler le texte ou simplement trouver les bons mots.
Vous activez les fonctions d’IA en définissant votre clé API à l’adresse WP SetAIKey. Ensuite, un nouveau bouton AI apparaît dans l’interface, vous permettant d’accéder rapidement à des outils utiles.
Vous pouvez discuter avec l’assistant pour trouver des idées, améliorer la formulation ou résoudre un problème d’écriture. Des actions prédéfinies permettent d’aller encore plus vite : résumer le contenu, traduire le texte, vérifier la grammaire ou réécrire des sections pour améliorer la fluidité.
Lorsque vous insérez du contenu généré par l’IA, vous choisissez la manière dont il est appliqué : texte brut, entièrement stylisé ou copié pour une utilisation ultérieure. Un historique des requêtes intégré vous permet de revenir sur des requêtes passées, d’accéder à des réponses antérieures et de réutiliser les résultats sans perdre la trace de votre travail.
EXPORT PDF/A, PIÈCES JOINTES ET SUPPORT E-INVOICE
4D 21 étend 4D Write Pro avec un ensemble complet d’outils pour produire des PDF prêts pour l’archivage, incorporer des pièces jointes et générer des factures électroniques. Au centre de ces améliorations se trouve la prise en charge de la famille PDF/A, une version du PDF axée sur la préservation et conçue pour que les documents restent lisibles pendant des décennies, tout en permettant de nouveaux flux de travail tels que la facturation électronique.
Pour les équipes de tous les secteurs (juridique, médical, technique, comptable, construction, travaux publics, etc.), PDF/A-3 se distingue par la possibilité d’intégrer des pièces jointes directement dans le document. Grâce à la nouvelle option d’exportation de fichiers, vous pouvez regrouper des fichiers texte, des images, des fichiers XML ou d’autres documents en un seul PDF durable.
L’exportation suit le même flux de travail que celui que vous connaissez déjà : via l’interface ou par programme, en choisissant des formats tels que PDF/A-2 ou PDF/A-3. Lorsque vous utilisez le format PDF/A-3, les pièces jointes sont simplement incluses dans les options d’exportation, ce qui est idéal lorsque vous souhaitez une archive autonome qui conserve toutes les informations connexes.
Cette amélioration permet également de générer des factures électroniques. Les factures électroniques modernes reposent généralement sur le PDF/A-3 combiné à un fichier XML structuré qui contient les détails de la facture dans des formats normalisés tels que FACTUR-X (France) ou ZUGFeRD (Allemagne). Dans 4D Write Pro, vous créez ces factures hybrides en ajoutant le XML via l’objet facturX et la collection de fichiers lors de l’exportation.
CONTRÔLE AVANCÉ DES SECTIONS À PARTIR DE L’INTERFACE ET DU CODE
4D 21 vous permet de mieux contrôler la façon dont vos documents respirent et circulent. Les sections et les sous-sections cessent d’être des mécanismes cachés et deviennent des outils que vous pouvez façonner, visuellement à partir de l’interface ou précisément dans le code.
Les commandes de section proposent désormais des options plus riches par le biais de menus simples, vous permettant d’insérer des coupures, de définir des premières pages différentes, de diviser les pages de gauche et de droite ou de supprimer les en-têtes et les pieds de page de certaines plages. Ce qui nécessitait auparavant de fouiller dans les attributs se fait désormais d’un simple clic au moment où vous en avez besoin.
Du côté de la programmation, de nouvelles commandes de gestion des sections vous permettent de supprimer ou de réinitialiser proprement des éléments structurels sans perturber le reste du document.
-
WP DELETE SECTION supprime une section entière, son contenu, ses en-têtes, ses pieds de page et ses éléments ancrés, sans effondrer le formatage ou déplacer les index de manière imprévisible.
-
WP DELETE SUBSECTION efface les attributs liés à « première page différente » ou « pages gauche/droite différentes », y compris les images ancrées et les zones de texte.
-
WP RESET ATTRIBUTES efface les dérogations au niveau de la section ou de la sous-section, ce qui vous permet de revenir au formatage hérité en une seule étape.
Combinées, ces améliorations vous offrent un flux de travail fluide de haut en bas : édition intuitive à partir de l’interface pour façonner la mise en page, et contrôle programmatique précis lorsque votre logique a besoin de réinitialiser, d’élaguer ou de reconstruire des sections à la demande.
Définir la taille de la page en une seule étape avec wk page size
4D 21 ajoute un nouvel attribut de document 4D Write Pro, wk page size, qui facilite grandement la définition de la taille globale d’un document. Au lieu de définir la largeur et la hauteur séparément, vous pouvez maintenant appliquer les deux en même temps avec une seule valeur.
Vous avez le choix entre
-
Formats d’imprimante intégrés
-
Vos propres formats personnalisés
-
Une gamme complète de formats ISO (A0-A10, série B, série C, DL, Legal, Tabloïd, etc.)
Cela signifie que vous pouvez concevoir des documents pour l’impression ou l’exportation sans vous soucier de l’imprimante sélectionnée. Que vous prépariez des lettres, des factures, des livrets ou des mises en page personnalisées, il est désormais plus simple, plus rapide et plus cohérent de définir le bon format.
Envelopper du texte autour des images et des zones de texte
Avec 4D 21, les images et les zones de texte offrent désormais la possibilité d’envelopper du texte, ce qui apporte de la souplesse dans la conception de la mise en page des documents. Grâce aux nouveaux modes d’ancrage, les utilisateurs peuvent enrouler du texte autour des images et des zones de texte, créant ainsi des documents visuellement attrayants sans contraintes.
L’interface de 4D Write Pro a été améliorée pour vous permettre de choisir le mode d’affichage des images et des zones de texte. De nouvelles valeurs pour l’action standard image/anchorLayout et textBox/anchorLayout sont disponibles. Vous pouvez également ajuster ces paramètres par programmation en utilisant les nouveaux attributs : wk text wrap top bottom, wk text wrap square, wk text wrap square left, wk text wrap square right, et wk text wrap square largest.
Ces paramètres d’habillage sont également conservés lors de l’exportation vers SVG, PDF et HTML intégré, ainsi que lors de l’importation ou de l’exportation de documents Word.
CONCEPTION DE TABLEAUX INTELLIGENTS ET FUSION DE CELLULES
4D 21 apporte deux améliorations majeures qui rendent la construction et le formatage des tableaux dans 4D Write Pro beaucoup plus facile pour les développeurs et les utilisateurs finaux.
L’assistant de création de tableaux permet aux utilisateurs de générer des tableaux à partir des données de la base sans avoir besoin de comprendre les sources de données ou les formules. En utilisant les modèles fournis par le développeur, ils peuvent sélectionner les champs, traduire les étiquettes, préparer des formules spécifiques à l’entreprise et appliquer des styles graphiques, le tout au travers d’une interface guidée.
Une fois le tableau créé, les nouvelles fonctionnalités de fusion de cellules vous permettent de contrôler entièrement la mise en page et la structure. Vous pouvez fusionner des cellules horizontalement, verticalement ou en blocs, que le tableau soit rempli automatiquement ou manuellement. Les fusions peuvent être effectuées via l’interface (boutons de la barre d’outils et menus contextuels), les actions standard(cellule/fusion, cellule/séparation) ou par code à l’aide des nouvelles commandes WP TABLE MERGE CELLS et WP TABLE SPLIT CELLS.
Ensemble, ces outils facilitent la conception de tableaux plus propres et plus flexibles qui s’adaptent à tous les besoins de présentation de documents ou de données.
Lignes et colonnes de tableau illimitées
4D 21 lève la limite des 1 000 lignes dans les tableaux de 4D Write Pro. Les tableaux peuvent désormais être aussi grands que la mémoire disponible de votre machine le permet, ce qui permet de générer de longues factures, des catalogues, des annuaires et tout autre document basé sur des données sans contraintes artificielles.
Lorsqu’une table est liée à une source de données, chaque élément de la sélection ou de la collection d’entités peut désormais produire une ligne, même en cas d’en-têtes, de ruptures de tri, de lignes supplémentaires ou de reports. Vous avez ainsi toute latitude pour créer des documents volumineux tout en conservant des mises en page structurées.
Gérer les sources de données vides
4D 21 vous permet de mieux contrôler la façon dont les tableaux apparaissent lorsque la source de données à laquelle ils sont liés ne contient pas de données. Un nouvel attribut, wk empty datasource, vous permet de décider exactement de ce qui doit se passer dans cette situation afin que vos documents aient toujours l’air intentionnels et soignés.
Vous pouvez choisir de
-
afficher la ligne de données (par défaut)
-
masquerla ligne de données tout en conservant les lignes d’en-tête et les lignes suivantes
-
Masquer l’ensemble du tableau lorsqu’il ne fournit plus de contenu significatif
-
Afficher une ligne de remplacement conçue spécifiquement pour les états vides
Visibilité temporaire des bordures de tableau cachées
4D 21 facilite le travail avec les tableaux en introduisant la propriété visibleTableBorders, une option de visualisation qui affiche temporairement les bordures cachées sous forme de lignes pointillées. Cela vous permet de voir la structure de votre tableau, en particulier lorsque les cellules sont fusionnées, sans modifier l’aspect final du document.
Vous pouvez basculer cette option directement depuis la barre d’outils ou la barre latérale, ce qui vous permet d’avoir une vue plus claire lors de l’édition et de vous assurer que les mises en page restent précises et faciles à gérer.
Attribuer des noms aux formules
Les formules jouent un rôle important dans les documents de 4D Write Pro, mais jusqu’à présent leur affichage, valeurs, expressions ou symboles, pouvait rendre les modèles plus difficiles à lire. Avec 4D 21, vous pouvez attribuer des noms aux formules, ce qui permet aux utilisateurs de mieux comprendre ce que représente chaque formule et facilite la maintenance des documents.
Au lieu d’afficher la formule elle-même, vous pouvez afficher une étiquette simple et significative. Cela rend les modèles beaucoup plus intuitifs, en particulier lorsque les formules deviennent complexes.
Deux commandes ont été mises à jour pour prendre en charge cette amélioration :
-
WP INSERT FORMULA accepte désormais un objet comprenant à la fois la formule et son nom.
-
WP GET FORMULAS renvoie chaque formule avec son nom, ce qui facilite l’inspection et la gestion des formules dans un document.
Amélioration de la syntaxe des commandes
4D 21 apporte une série d’améliorations à 4D Write Pro qui rendent votre code plus facile à écrire, plus facile à maintenir et beaucoup plus flexible. De nombreuses commandes acceptent désormais des types de paramètres modernes tels que les objets et les collections, plusieurs commandes ont été transformées en fonctions qui renvoient des résultats utiles, et de nouvelles aides simplifient le travail avec les sections, les pages et les tableaux.
Voici un aperçu des nouveautés :
- Gestion plus propre des attributs : Vous pouvez désormais transmettre un seul objet à WP SET ATTRIBUTES, ce qui vous permet d’appliquer plusieurs propriétés de formatage à la fois.
- Opérations de tableau plus souples : WP TABLE APPEND ROW accepte désormais les formules, les formules nommées et même les collections complètes de valeurs.
- Gestion simplifiée des images : WP INSERT PICTURE est désormais une fonction qui renvoie l’élément d’image inséré. Elle accepte également les valeurs4D.File, ce qui vous offre davantage d’options quant à la manière dont les images sont stockées et chargées.
- Commandes d’importation et d’exportation modernisées : Les commandes telles que WP IMPORT DOCUMENT,WP EXPORT DOCUMENT et WP Add picture fonctionnent désormais de manière transparente avec 4D.File.En outre, le nom WP INSERT DOCUMENT a été renommée en WP Insert document body pour mieux refléter son rôle.
- Des commandes qui renvoient enfin des plages : Vous obtenez désormais une plage utilisable lors de l’insertion de formules, de ruptures ou de corps de documents.
- Accès facile à la structure du document : De nouvelles fonctions telles que This.sectionIndex, This.sectionNameet This.pageIndex vous permettent de faire référence à la section ou à la page en cours directement dans les formules.
Contrôle du formatage des messages électroniques avec des options d’espacement personnalisées
Garantissez une mise en forme propre et cohérente des courriers électroniques en choisissant la valeur d’espacement CSS lors de l’exportation MIME. Cette option permet d’éviter les sauts de ligne indésirables causés par une mauvaise interprétation de white-space:pre-wrap par certains clients de messagerie, ce qui vous permet d’utiliser white-space:normal à la place pour une meilleure compatibilité d’affichage.
4D view Pro
4D View Pro bénéficie d’un sérieux coup de pouce avec de nouvelles méthodes de traitement des feuilles de calcul volumineuses, des flux de travail Excel plus intelligents et des fonctionnalités plus réactives et plus conviviales pour les développeurs. Les formats compressés accélèrent le chargement et le stockage des documents lourds, les fonctions personnalisées deviennent plus puissantes, les mises à niveau de SpreadJS élargissent les possibilités de création et les options d’importation et d’exportation améliorées garantissent la précision et la facilité de contrôle de vos données.
FORMATS DE DOCUMENTS COMPRESSÉS POUR UNE MEILLEURE PERFORMANCE
4D 21 introduit deux façons de traiter plus efficacement les documents 4D View Pro complexes et volumineux : le nouveau format de fichier compressé .sjs et la prise en charge de l’importation et de l’exportation de documents en tant que BLOB.
Le format .sjs est une structure légère et compressée composée de plusieurs petits fichiers JSON, similaire à la mise en page XML d’Excel. Il réduit la taille des fichiers, accélère le chargement et gère les feuilles de calcul volumineuses de manière plus fiable. Vous pouvez l’importer et l’exporter comme un fichier .4vp standard en utilisant VP IMPORT DOCUMENT et VP EXPORT DOCUMENT.
En complément, 4D prend désormais en charge un format BLOB compressé, qui vous permet de bénéficier des mêmes avantages en termes de performances, directement dans votre base de données. Utilisez VP EXPORT TO BLOB pour stocker un document sous forme de BLOB de manière asynchrone, puis rechargez-le à tout moment à l’aide de VP IMPORT FROM BLOB. Cela facilite l’enregistrement, la récupération et le traitement de documents View Pro lourds sans dépendre du système de fichiers.
Les deux formats sont conçus pour améliorer les performances, rationaliser le stockage et assurer un traitement plus fluide des contenus View Pro volumineux.
Amélioration des fonctions personnalisées
4D 21 permet des calculs personnalisés sur le contenu des colonnes ou des lignes d’une feuille de calcul sans connaissance préalable du nombre de cellules concernées. Ceci est rendu possible en autorisant le passage de plusieurs plages de cellules ou d’objets à des formules personnalisées, ce qui entraîne la récupération d’une collection ou d’un objet contenant tout le contenu des cellules dans une méthode 4D.
MISES À JOUR DE SPREADJS 16.2 ET AMÉLIORATIONS DU RUBAN
4D 21 présente une mise à jour majeure de 4D View Pro avec l’intégration de SpreadJS 16.2 et un ruban mis à jour conçu pour tirer parti de ses nouvelles capacités.
Vous trouverez ci-dessous les nouvelles fonctionnalités de SpreadJS :
-
Panneau d’édition de formules pour faciliter la lecture, l’édition et le débogage de longues formules.
-
Mode de calcul manuel pour contrôler le moment où les formules sont recalculées.
-
Références inter-feuillets lors de l’édition des formules.
-
Amélioration du tableau croisé dynamique : définition de la position des sous-totaux par champ.
-
Nouveaux outils graphiques : Graphiques en cascade, formatage de lignes lisses et graphiques construits à partir de plages de sélection multiples.
-
Lollipop Variance Sparkline pour une visualisation compacte de la variance.
-
Faites glisser les en-têtes pour déplacer ou insérer des lignes et des colonnes.
-
Options supplémentaires de collage spécial (commentaires, validation, largeurs, formats…).
-
Style d’onglet avec couleurs et icônes personnalisables.
-
Défilement basé sur les pixels pour un retour d’information plus fluide.
-
L’importation Excel conserve les conditions de tri pour des résultats cohérents.
-
Améliorations du classeur : afficher/masquer les zéros, feuilles protégées par un mot de passe, valeurs par défaut des cellules et insertion de cellules coupées dans les tableaux.
Vous trouverez ci-dessous les nouvelles fonctionnalités du ruban mis à jour :
-
Contrôles directs du ruban pour l’édition de formules, les thèmes, les couleurs et les polices.
-
Options pour déplacer/insérer des lignes et des colonnes lorsque la fonction « glisser-déplacer » est activée.
-
Contrôles graphiques mis à jour pour une création et un formatage rapides à l’aide des nouvelles fonctionnalités de SpreadJS.
Améliorations de l’import/export Excel
4D 21 rend le travail avec des fichiers Excel dans 4D View Pro plus flexible en élargissant les options d’importation et d’exportation disponibles dans 4D View Pro. VP EXPORT DOCUMENT et VP IMPORT DOCUMENT.
Lors de l’exportation, vous pouvez désormais décider exactement de ce qui sera intégré au classeur généré, en liant les sources, les styles, les formules, les cellules fusionnées, les données de calcul, les noms non utilisés et même si les en-têtes doivent se comporter comme des lignes ou des colonnes gelées. Vous pouvez également ajouter une protection par mot de passe et accélérer le chargement du classeur en incluant les données de calcul mises en cache.
Lors de l’importation, de nouvelles options permettent de préserver le formatage, les formules, les en-têtes gelés et les styles, tout en vous donnant le contrôle sur le recalcul, les références dynamiques et les modes d’ouverture (normal, paresseux, incrémentiel). Cela garantit que les fichiers Excel se chargent proprement et de manière cohérente dans votre interface 4D View Pro.
Tous les paramètres sont organisés dans un seul objet excelOptions, ce qui facilite la lecture et la maintenance de votre code et le rend compatible avec les projets existants.
IMPORTATIONS FIABLES AVEC PRISE EN CHARGE DES FONCTIONS PERSONNALISÉES
4D 21 garantit que les commandes d’importation telles que VP IMPORT DOCUMENT, VP IMPORT FORM BLOB, et VP IMPORT FROM OBJECTne déclenchent leur rappel qu’une fois que tous les calculs des fonctions personnalisées sont terminés. Cela permet de prévoir le moment où les actions de suivi telles que l’impression, l’exportation ou l’enregistrement seront effectuées.
La mise à jour étend également VP FLUSH COMMANDSqui accepte désormais un rappel asynchrone qui s’exécute une fois que tous les calculs en attente sont terminés. Cela vous permet de mettre en file d’attente des opérations en toute sécurité sans bloquer l’interface ou risquer d’obtenir des résultats incomplets.
Ensemble, ces améliorations facilitent le travail avec les documents qui reposent sur des formules personnalisées, réduisant ainsi les erreurs et garantissant le bon déroulement de votre flux de travail, de l’importation à la sortie finale.
sécurité
4D 21 renforce la sécurité à tous les niveaux, de la communication cryptée à la manipulation plus sûre des données et à la gestion plus intelligente des certificats. Les certificats TLS automatiques simplifient le déploiement, la prise en charge étendue des clés RSA et ECDSA modernise vos options cryptographiques, et les nouveaux outils de validation de l’autorité de certification aident à protéger le trafic client-serveur sur les réseaux non fiables. Les requêtes HTTPS peuvent désormais obtenir des informations d’identification directement à partir du système d’exploitation, la signature cryptographique fonctionne proprement avec les données textuelles et binaires, et la surveillance des sessions offre aux administrateurs une vue unifiée et en temps réel de toute l’activité Web active. Même les tâches quotidiennes telles que le collage de formules bénéficient de valeurs par défaut plus sûres, tandis que les mises à jour majeures des bibliothèques garantissent que vos applications s’exécutent sur des bases actuelles et renforcées.
Certificats SSL/TLS auto-générés pour les communications client-serveur
4D 21 simplifie le déploiement sécurisé en supprimant les anciens certificats SSL/TLS par défaut qui étaient fournis avec 4D Server. Au lieu de cela, lorsqu’un serveur démarre une application utilisant des connexions cryptées, il vérifie maintenant le dossier Resources pour les certificats fournis par l’utilisateur. Si aucun n’est trouvé, 4D génère automatiquement un certificat SSL/TLS temporaire.
Cela signifie qu’il n’est plus nécessaire de fournir des certificats uniquement pour permettre une communication cryptée entre le client et le serveur. Chaque redémarrage du serveur génère un nouveau certificat, ce qui améliore la sécurité tout en réduisant les étapes d’installation.(Remarque: cela ne s’applique pas au serveur web, qui nécessite toujours des certificats validés par l’autorité de certification pour la compatibilité avec les navigateurs).
Support étendu des certificats SSL/TLS avec ECDSA
4D supporte depuis longtemps les certificats RSA pour sécuriser les communications SSL/TLS. Avec 4D 21, vous pouvez maintenant utiliser des certificats ECDSA, vous offrant une alternative moderne que de nombreuses plateformes adoptent de plus en plus.
Que vous sécurisiez des communications client-serveur ou des requêtes HTTPS, 4D 21 accepte désormais les certificats RSA et ECDSA, sans qu’il soit nécessaire de modifier le flux de travail. Placez simplement vos fichiers key.pem et cert.pem dans les emplacements prévus, et 4D s’occupe du reste.
Validation améliorée de l’autorité de certification pour la SÉCURITÉ client-serveur
4D 21 renforce la sécurité client-serveur en permettant aux clients de vérifier les certificats du serveur auprès d’autorités de certification (AC) de confiance. Cela garantit que le serveur auquel vous vous connectez est authentique et aide à prévenir les attaques de type man-in-the-middle (MITM).
Pour activer la validation de l’autorité de certification, vous devez spécifier deux valeurs dans le fichier buildApp.4DSettings:
-
le chemin d’accès à un fichier contenant des signatures d’autorités de certification approuvées
-
le nom de domaine attendu du certificat du serveur
Vous pouvez également fournir une liste de noms de domaine autorisés lorsque plusieurs serveurs sont impliqués. Grâce à ces informations, le client vérifie que le certificat du serveur est signé par une autorité de certification valide et qu’il correspond au domaine prévu ; dans le cas contraire, la connexion est rejetée.
Cela ajoute une couche de protection essentielle pour les déploiements qui s’effectuent sur des réseaux publics ou non fiables.
Utiliser le magasin de certificats Windows au lieu des fichiers locaux 
Lesrequêtes HTTPS peuvent désormais extraire des certificats directement du trousseau de clés Windows à l’aide du paramètre storeCertificateName dans les classes HTTPRequest et HTTPAgent . Il n’est donc plus nécessaire de stocker et de gérer les fichiers de certificats localement.
La protection au niveau du système et la gestion centralisée remplacent le jonglage manuel des fichiers. La gestion des certificats devient plus sûre, plus cohérente et plus facile à administrer au sein des équipes et des machines.
FORCE LOGIN COMME NOUVELLE VALEUR PAR DÉFAUT POUR L’AUTHENTIFICATION RESTANTE
4D 21 active maintenant Force Login comme modèle de sécurité par défaut pour l’accès REST. Au lieu de s’appuyer sur d’anciens mécanismes d’authentification, chaque requête REST nécessite désormais une connexion explicite via la fonction ds.authentify.
Les nouveaux projets incluent automatiquement un fichier roles.json avec forceLogin réglé sur true, ce qui signifie qu’aucun accès REST n’est autorisé tant que des privilèges n’ont pas été attribués. Les projets existants peuvent basculer vers ce modèle grâce à un bouton dédié dans la boîte de dialogue Paramètres de structure, qui met à jour les configurations existantes et crée un fichier roles.json lorsque cela est nécessaire.
Cette mise à jour apporte à tous les projets un modèle de sécurité moderne, basé sur les privilèges, plus facile à maintenir et beaucoup plus précis. Vous pouvez maintenant gérer les permissions en utilisant l’éditeur Qodly Studio Roles & Privileges et définir exactement quelles parties de votre datastore et de vos fonctions sont exposées.
Force Login garantit que les API REST sont protégées par défaut et vous donne un moyen clair et cohérent de contrôler l’accès dans l’ensemble de votre application.
SIGNATURE ET VÉRIFICATION CRYPTOGRAPHIQUES SIMPLIFIÉES AVEC PRISE EN CHARGE DES BLOBS
4D 21 rationalise les flux de travail cryptographiques en étendant les fonctionnalités de 4D.CryptoKey.sign() et 4D.CryptoKey.verify() pour accepter à la fois les entrées de type texte et de type blob. Il n’est plus nécessaire de convertir les données binaires en texte, ou vice versa, avant de les signer ou de les vérifier.
Il est ainsi beaucoup plus facile de travailler avec des fichiers, des charges utiles binaires et des données structurées, tout en conservant un code de signature et de vérification propre et direct.
Gestion unifiée des sessions pour REST et 4DACTION 
Avec 4D 21, vous disposez désormais d’un moyen complet d’inspecter toutes les sessions web ouvertes, qu’elles proviennent de connexions REST, d’appels SOAP ou de requêtes 4DACTION.
-
Toutes les sessions actives sont listées en temps réel, donnant aux administrateurs une vue transparente de l’activité et de l’utilisation des ressources.
-
Les sessions peuvent être étiquetées avec des noms d’utilisateurs via Session.setPrivilege(), ce qui facilite l’identification des utilisateurs connectés, le suivi des actions et la gestion des licences.
-
Les sessions sont sécurisées par des threads et automatiquement optimisées, ce qui garantit une utilisation efficace des ressources et des performances fiables, même en cas de forte charge.
Cela permet une exécution plus fluide de l’API à l’échelle tout en offrant aux développeurs et aux administrateurs une surveillance plus claire, un audit plus solide et une stabilité améliorée.
COLLAGE PLUS SÛR pour les formules
Pour protéger vos données lorsque vous travaillez dans différents environnements, 4D colle désormais les formules provenant de sources externes sous forme de valeurs uniquement.
Ceci s’applique aux champs de texte multi-style et aux documents 4D Write Pro :
-
Si la formule copiée n’a jamais été exécutée, sa source est collée en texte brut.
-
Si elle a été évaluée, seule la valeur résultante (texte ou image) est collée, jamais la logique sous-jacente.
Les formules copiées au sein d’une même application continuent d’être collées normalement. Mais lorsque le contenu est déplacé entre des applications ou des environnements distincts, 4D supprime automatiquement les formules afin d’empêcher l’accès involontaire à des données sensibles.
Mise à jour de la bibliothèque de base et des dépendances 
Avec 4D 21 LTS, nous avons mis à jour Xerces, libldap, ICU, Chromium (CEF), OpenSSL, libZip, LZMA, ZLib, Libuv, BoringSSL et PDFWriter, afin de moderniser l’ensemble de la pile pour renforcer la sécurité, améliorer la stabilité et assurer la compatibilité avec les plates-formes actuelles.
Langage 4D
Le langage de programmation 4D a connu l’une de ses plus grandes évolutions. Dans les versions de fonctionnalités menant à 4D 21 LTS, il bénéficie d’une syntaxe plus claire, d’une gestion des erreurs plus sûre, de capacités de classes modernes, d’un typage plus fort, d’une validation du code en temps réel et d’outils plus riches pour REST, les sessions, HTTP, la synchronisation des données, et bien plus encore.
Que vous construisiez des services web, manipuliez des données, structuriez du code ou optimisiez des flux de travail, les nouvelles fonctionnalités du langage éliminent les chaudières, renforcent la sécurité et rendent le développement quotidien plus rapide et plus prévisible.
Code Live Checker
4D 21 introduit le Code Live Checker, un système de validation en temps réel qui détecte les erreurs au fur et à mesure que vous écrivez. Il vérifie la syntaxe, les noms de classes, les noms de fonctions, les listes de paramètres et la compatibilité des types, vous aidant ainsi à repérer les fautes de frappe, les incohérences et les références non valides avant qu’elles ne se transforment en erreurs d’exécution.
Le vérificateur s’exécute en arrière-plan pendant que vous tapez et pendant les vérifications syntaxiques ou la compilation. Il fonctionne avec les classes utilisant la notation par points et applique les mêmes règles aux classes de composants qui incluent un fichier de syntaxe. Vous verrez des avertissements en cas de code incohérent et des erreurs en cas d’échec à l’exécution, ce qui rendra votre code plus sûr et plus facile à maintenir.
SINGLETONS DANS L’APPLICATION, LES SESSIONS ET REST
4D 21 introduit les singletons, une nouvelle façon de créer un objet qui est accessible partout où vous en avez besoin. Les singletons peuvent héberger des valeurs interprocessus, des utilitaires centraux, ou même agir comme des blocs de construction pour des modèles tels que les usines, vous donnant un endroit propre et fiable pour centraliser la logique partagée.
Vous pouvez définir deux types de singletons :
-
lessingletons de processus, propres à chaque processus
-
Lessingletons partagés, uniques pour l’ensemble de l’application.
La création d’un singleton est simple : ajoutez le mot-clé singleton au constructeur d’une classe (ou d’un singleton partagé pour une version partagée). À partir de là, l’instance du singleton est toujours disponible via l’attribut me, ce qui donne à votre application une source unique de vérité pour tout ce que cette classe gère.
4D 21 ajoute également des singletons de session, qui donnent à chaque utilisateur sa propre instance isolée. Ils sont idéaux dans les environnements web et client-serveur où plusieurs processus traitent les demandes d’un même utilisateur. Grâce aux singletons de session, des tâches telles que la gestion d’un panier d’achat ou d’une liste de travail spécifique à un utilisateur deviennent simples et sûres, car chaque session conserve son propre état.
Enfin, les singletons partagés s’intègrent désormais de manière transparente aux API REST et aux pages Qodly. Toute fonction exposée sur un singleton partagé peut être appelée directement via REST, ou sélectionnée en tant qu’action d’événement dans Qodly Studio, tout comme les méthodes de classe de données. L’accès reste entièrement contrôlé par le biais de rôles et de privilèges, ce qui garantit la sécurité et la clarté du fonctionnement de vos API.
Ensemble, ces fonctionnalités vous offrent un moyen cohérent et évolutif de gérer les valeurs globales, les données par utilisateur et la logique d’application partagée à travers chaque couche de votre solution.
Simplification des déclarations de paramètres de méthodes
4D 21 simplifie la façon dont vous déclarez les paramètres des méthodes. En utilisant les prototypes #DECLARE, vous n’avez plus besoin de répéter les déclarations de paramètres dans des méthodes distinctes. compiler_ dans des méthodes distinctes. Le compilateur traite désormais les déclarations de prototypes de la même manière qu’il traite les signatures de fonctions de classe, ce qui réduit la redondance et renforce la sécurité des types.
Le code existant continue de fonctionner comme avant, mais la non-concordance des types entre les prototypes et les déclarations héritées déclenche désormais des erreurs, ce qui vous permet de détecter les problèmes plus tôt. Des avertissements s’affichent également lorsque des paramètres sont déclarés deux fois ou lorsqu’une méthode est appelée avec un nombre d’arguments supérieur à celui autorisé par le prototype.
Cette mise à jour permet de gagner du temps, d’éviter l’encombrement et de prévenir les erreurs d’exécution lors de la compilation.
DÉCLARATION ET INITIALISATION EN UNE LIGNE POUR LES VARIABLES ET LES PROPRIÉTÉS
4D 21 rationalise votre code en vous permettant de déclarer et d’initialiser les variables et les propriétés de classe en une seule ligne. Cela permet d’éliminer les chaudières et de clarifier l’intention d’un seul coup d’œil.
Vous pouvez laisser 4D déduire le type de la valeur :
DÉCLARATION SIMPLIFIÉE des fonctions variables
4D 21 facilite grandement l’écriture de fonctions acceptant un nombre flexible de paramètres. Vous pouvez désormais utiliser le symbole « … » comme dernier paramètre de votre déclaration pour indiquer que la fonction accepte n’importe quel nombre d’arguments.
Vous pouvez également attacher un type, ce qui permet à 4D de vérifier que chaque paramètre entrant correspond à vos attentes :
#DECLARE(... : Real) : Real
Vous pouvez également laisser la fonction sans type si vous souhaitez accepter n’importe quoi :
GESTION MODERNE ET STRUCTURÉE DES ERREURS (TRY-CATCH, TRY(), THROW)
4D 21 vous offre une manière plus propre et plus prévisible de gérer les erreurs dans votre code. Vous pouvez désormais déclencher des erreurs de manière délibérée, les rattraper exactement là où elles se produisent et les récupérer de manière gracieuse, sans que des gestionnaires globaux ou des boîtes de dialogue inattendues ne viennent interrompre le flux de travail.
-
Blocs Try-Catch pour une récupération contrôlée : Enveloppez plusieurs instructions à l’intérieur de Try … Catch … End try. Si l’un des éléments du bloc Try échoue, l’exécution passe directement au bloc Catch. Aucune boîte de dialogue n’apparaît et ON ERR CALL n’est pas déclenché. Cela vous permet d’annuler le travail, de consigner les détails ou de poursuivre avec un chemin de repli d’une manière structurée et lisible.
-
Try(Expression) pour la gestion des erreurs en ligne : Exécutez une seule expression et gérez les échecs juste à côté du code qui les a provoqués. Try() renvoie le résultat en cas de succès ou undefined en cas d’erreur. Vous pouvez vérifier Last errors immédiatement, en utilisant les mêmes variables et le même contexte, en conservant une logique d’erreur étroite et locale.
-
La nouvelle commande permet de lever des erreurs personnalisées : Utilisez la nouvelle commande throw pour signaler les problèmes au moment précis où ils apparaissent, les états non valides, les hypothèses non respectées ou les règles de gestion qui doivent interrompre l’exécution. Ces erreurs se comportent exactement comme les erreurs natives de 4D et peuvent être détectées à l’aide des commandes Try(), Try–Catch ou ON ERR CALL. Vous pouvez générer des messages simples ou réutiliser les définitions d’erreurs basées sur XLF avec des espaces réservés.
Ensemble, ces outils vous offrent un modèle d’erreur unifié et moderne, simple à écrire, facile à suivre et sûr pour chaque partie de votre logique d’application.
Synchronisation incrémentale avec les tampons globaux
4D 21 étend le système de timbres globaux, introduit à l’origine pour 4D for Mobile, à tout flux de travail nécessitant une synchronisation incrémentale. Au lieu de transférer des ensembles de données complets, vous pouvez désormais synchroniser uniquement les enregistrements qui ont été modifiés depuis la dernière mise à jour.
Une fois le suivi des changements de données activé, 4D attribue automatiquement un timbre à chaque enregistrement créé, modifié ou supprimé. Deux fonctions vous permettent d’exercer un contrôle total :
-
.getGlobalStamp(): Récupère l’estampille de modification actuelle du magasin de données afin que vous puissiez suivre ce qui a été modifié au fil du temps.
-
.setGlobalStamp(): Elle vous permet de mettre à jour manuellement les valeurs des timbres lorsque vous souhaitez modifier le comportement par défaut.
Parce que les tampons reflètent chaque modification de données, ils facilitent la recherche de ce qui a changé, la détection des enregistrements supprimés et l’exécution d’une synchronisation incrémentielle rapide et fiable par l’intermédiaire du serveur 4D REST, sans dépendre d’une réplication SQL complète.
SYNCHRONISER PLUSIEURS COLLECTIONS AVEC MULTISORT()
Travailler avec plusieurs collections liées, en particulier lorsque les données proviennent de l’extérieur de 4D, peut rendre le tri et le maintien de l’alignement de toutes les données difficiles. Dans 4D 21, la nouvelle fonction multiSort() résout ce problème en vous permettant de trier plusieurs collections en synchronisation avec un seul appel.
Vous pouvez
-
trier une collection et réorganiser automatiquement les autres collections en conséquence
-
Appliquer des formules de tri personnalisées
-
Définir des règles de tri à plusieurs niveaux
-
Travailler avec des valeurs simples et des objets
-
Maintenir un ordre stable lorsque les valeurs sont égales
Que vous aligniez des tableaux reçus de systèmes externes ou que vous coordonniez plusieurs collections dans votre application, multiSort() rend l’ensemble du processus plus rapide, plus propre et plus fiable.
Comparaison de référence SIMPLE pour les objets et les collections
4D 21 permet de vérifier plus facilement si deux objets ou collections pointent vers la même référence en mémoire. Vous pouvez désormais utiliser les opérateurs = et # pour comparer les références directement, au lieu de comparer le contenu.
Vous disposez ainsi d’un moyen rapide de vérifier si deux variables font référence au même objet ou à la même collection, ce qui est particulièrement utile lorsque vous travaillez avec des références partagées, des structures imbriquées ou des tableaux d’objets.
Vous pouvez également utiliser ces comparaisons dans les fonctions de tableau, les requêtes et d’autres opérations, ce qui rend la gestion des références plus cohérente dans tout le langage.
SIMPLIFIER LES OBJETS PARTAGÉS AVEC LES CLASSES PARTAGÉES
4D 21 introduit les classes partagées, un moyen simplifié de travailler avec des objets partagés sans avoir à gérer manuellement les blocs Use…End use.
En ajoutant le mot-clé shared au constructeur d’une classe, chaque appel à new() crée automatiquement un objet partagé. Vous pouvez également marquer les fonctions de classe comme « partagées » pour indiquer qu’elles modifient l’objet partagé sous-jacent. Dans ce cas, 4D gère automatiquement le flux de travail de verrouillage, ce qui rend le code d’objet partagé aussi naturel que le travail avec des objets ordinaires.
Les classes partagées facilitent l’exécution de tâches par des travailleurs, la coordination de l’état entre les processus ou le stockage de résultats partagés en toute sécurité. N ‘ oubliez pas que si les classes non partagées peuvent hériter des classes partagées, l’inverse n’est pas autorisé.
PRISE EN CHARGE DES SESSIONS CLIENT/SERVEUR DANS LA COMMANDE SESSION
4D 21 étend la commande Session afin de couvrir les connexions client/serveur et les procédures stockées, en plus des sessions Web et mobiles existantes dans les applications 4D. Vous disposez ainsi d’un moyen unifié d’accéder aux informations de niveau session dans tous les contextes d’exécution.
Une nouvelle classe ClientServerSession est disponible pour les sessions 4D Remote, ce qui vous permet d’accéder à des propriétés clés :
-
id: l’identifiant unique de la session
-
info: informations sur la machine, l’utilisateur et l’environnement
-
storage: un objet partagé disponible pour tous les processus de la même session
-
userName: l’utilisateur associé à la session.
Il est ainsi facile de partager des données entre processus, de suivre le contexte propre à l’utilisateur et d’écrire du code générique tenant compte des sessions qui se comporte de manière cohérente, qu’il soit exécuté dans un environnement web, mobile, client/serveur ou de procédure stockée.
ACCÉDER AU STOCKAGE DE SESSION DANS TOUS LES TYPES DE SESSION
La cohérence des données utilisateur entre les différentes parties de votre application (client/serveur, web, mobile) nécessitait auparavant un travail supplémentaire. Chaque session conservait son propre stockage, et il n’y avait pas de moyen simple d’accéder à une autre session pour récupérer des informations partagées.
4D 21 résout ce problème grâce à une nouvelle commande : Session storage by id. Elle vous permet d’accéder au stockage de n’importe quelle session de votre application, quelle que soit la manière dont elle a été créée. Une fois que vous avez l’identifiant de la session, vous pouvez lire ou mettre à jour son stockage partagé comme le vôtre.
Cela facilite le maintien de la continuité pour les utilisateurs travaillant dans plusieurs environnements. Par exemple, vous pouvez stocker un enregistrement client lorsqu’un utilisateur se connecte via l’application web et accéder à ce même enregistrement plus tard à partir d’une session client/serveur, afin de maintenir une expérience transparente et cohérente.
INSPECTER LES PRIVILÈGES DE SESSION POUR UN DÉBOGAGE SÛR ET FACILE
Contrôler ce à quoi les utilisateurs peuvent accéder est un élément clé de la sécurisation de votre application. Avec 4D 21, vous avez désormais une meilleure visibilité sur ces permissions grâce à une amélioration des privilèges de session.
Les privilèges, attribués par le biais des rôles lors de l’authentification, déterminent les actions qu’un utilisateur est autorisé à effectuer. Pour faciliter le débogage, vous pouvez désormais inspecter ces privilèges directement dans la session à l’aide de la nouvelle fonction getPrivileges(). Cela vous donne une vue claire des permissions qui sont actives à tout moment.
Il existe également un nouveau point d’accès REST(/$info/privileges) qui renvoie les mêmes informations, ce qui simplifie la vérification des droits d’accès dans différents environnements.
Ces ajouts vous aident à confirmer que vos règles de sécurité fonctionnent comme prévu et à vous assurer que les utilisateurs n’accèdent qu’aux données et aux fonctionnalités qui leur sont destinées.
GESTION AMÉLIORÉE DES PROCESSUS ET DES SESSIONS
4D 21 facilite l’inspection, le suivi et la gestion des processus et des sessions, ce qui vous donne plus de contrôle et une meilleure visibilité sur l’ensemble de votre application. Plusieurs commandes ont été améliorées ou ajoutées pour rationaliser la manière dont vous récupérez les informations et surveillez l’activité.
Voici les nouveautés :
-
Process info renvoie désormais un objet complet, ce qui facilite la lecture et l’utilisation des propriétés du processus. Il comprend également une nouvelle propriété creationDateTime qui vous permet de savoir quand chaque processus a été créé.
-
Session info vous permet de récupérer les détails d’une session directement à partir d’un ID de session, évitant ainsi des étapes supplémentaires ou des recherches additionnelles.
-
Lenuméro de processus a été mis à jour afin que vous puissiez récupérer le numéro d’un processus non seulement à partir de son nom, mais aussi à partir de son identifiant.
-
L’activité des processus prend désormais en charge le filtrage par ID de session, ce qui vous permet de lister rapidement les processus liés à une session spécifique, ce qui est utile lors du débogage ou de la surveillance des utilisateurs.
Gestion simplifiée des sessions pour le développement et les tests
Avec 4D 21, la gestion des sessions devient beaucoup plus simple pendant le développement. La commande Session renvoie désormais un objet valide, même dans les environnements autonomes et mono-utilisateur, ce qui élimine le besoin de vérifications supplémentaires ou d’une logique de repli.
Cette mise à jour facilite l’utilisation des données de session, le test des restrictions basées sur les rôles et la simulation du comportement Client/Serveur, le tout sans changer d’environnement ni ajouter de code de contournement.
En mode autonome, vous pouvez désormais utiliser :
-
Session
-
Session info
-
Session storage
Ces sessions simulées sont destinées au développement et aux tests, vous permettant de construire et de déboguer des fonctionnalités telles que l’authentification, le filtrage des données via l’événement Restrict, ou le stockage partagé des sessions, comme vous le feriez dans une configuration Client/Serveur.
Pour les applications autonomes de production, vous continuerez à vous fier à Storage pour les données spécifiques à l’utilisateur, mais pour le développement, ce changement rationalise votre flux de travail et améliore la cohérence entre les environnements.
EXÉCUTION PLUS SOUPLE DES FORMULES AVEC « FORMULA FROM STRING » (FORMULE À PARTIR D’UNE CHAÎNE)
4D 21 élargit le fonctionnement de Formula from string en vous permettant de choisir le contexte d’exécution. Cela facilite grandement le développement de composants, en particulier lorsque les formules doivent appeler des méthodes ou accéder à des variables définies dans la base de données hôte.
Auparavant, les formules s’exécutaient toujours dans le contexte où elles étaient créées, ce qui signifiait qu’un composant ne pouvait pas exécuter des formules faisant référence à des méthodes non partagées dans le projet hôte. Désormais, vous pouvez décider de l’endroit où la formule doit être exécutée :
-
Exécuter la formule dans la base de données hôte: Exécute la formule dans le projet hôte, ce qui permet d’accéder à ses méthodes et à ses variables.
-
sk execute in current database (exécuter dans la base de données actuelle) : Le comportement par défaut, qui maintient l’exécution à l’intérieur du composant.
Ce petit ajout permet une conception beaucoup plus flexible des composants et vous permet de construire des fonctionnalités (comme des interfaces 4D Write Pro personnalisées) qui font appel de manière transparente à la base de données hôte.
GESTION PLUS SOUPLE DES FICHIERS JOURNAUX
4D 21 vous donne plus de contrôle sur la façon dont votre application gère son fichier journal pendant le déploiement.
Vous pouvez désormais remplacer le paramètre Utiliser le fichier journal de la même manière que vous remplacez d’autres paramètres de sauvegarde. Lorsque cette option est activée, 4D vous invite à créer ou à sélectionner un journal lors de la création d’un nouveau fichier de données et stocke ce chemin dans le fichier de données. Si vous ouvrez ultérieurement un fichier de données qui n’a pas de journal alors que l’option est active, 4D vous demandera d’en créer ou d’en sélectionner un.
Auparavant, ce paramètre était toujours stocké dans le fichier de catalogue. Désormais, vous pouvez décider de l’endroit d’où il provient en utilisant un fichier de paramètres de sauvegarde, placé à côté de la structure, à côté des données ou à l’intérieur de la structure elle-même. Vous bénéficiez ainsi d’une plus grande souplesse lors du déploiement dans différents environnements, sans avoir à modifier les fichiers principaux de votre projet.
Dépréciation des commandes PHP et suppression de l’ interpréteur intégré
PHP a autrefois comblé des lacunes importantes dans le développement web de 4D, en gérant des tâches comme le ZIP, le hachage ou le LDAP avant que le langage n’offre des solutions natives. Comme ces capacités sont devenues partie intégrante de 4D, l’interpréteur PHP intégré a été supprimé dans 4D 20 R3, et le jeu de commandes PHP commence sa phase de dépréciation dans 4D 21.
PHP Execute continue de fonctionner, mais nécessite désormais un interpréteur PHP externe. Cela vous donne plus de flexibilité pour mettre à jour les versions de PHP, appliquer les correctifs de sécurité et charger des modules supplémentaires. Pour une utilisation à long terme, il est recommandé d’exécuter le code PHP par l’intermédiaire de travailleurs système, qui offrent un contrôle total sur la manière dont PHP est lancé et géré.
Les commandes restent disponibles pour des raisons de compatibilité, mais les nouveaux développements doivent être exécutés par des travailleurs de système afin de faciliter la maintenance et la stabilité future.
Formats de date et d’heure personnalisés
Lorsque vous avez besoin de dates et d’heures pour répondre aux exigences spécifiques d’une région ou d’un projet, les formats par défaut du système ne sont pas toujours suffisants. Avec 4D 21, vous pouvez désormais définir des formats personnalisés précis, que vous affichiez des valeurs dans des formulaires ou que vous les transformiez en chaînes de caractères.
Cette mise à jour introduit des options de formatage flexibles grâce à
-
La commande String , qui prend désormais en charge des chaînes de formatage entièrement personnalisées.
-
La commande OBJECT SET FORMAT , qui vous permet d’appliquer des formats personnalisés directement aux objets du formulaire.
-
L‘interface, qui comprend désormais une option « Personnalisé » permettant de définir visuellement des modèles.
Vous pouvez tout contrôler, des numéros de trimestre et de semaine aux noms de jours localisés et aux expressions temporelles détaillées, à l’aide d’une syntaxe de formatage unique et partagée. Vous avez ainsi un contrôle total sur la façon dont les dates et les heures apparaissent dans les documents, les interfaces et le texte généré.
Exportation de la définition de la structure en HTML
4D 21 simplifie le partage des définitions de structure en les exportant directement en HTML. Auparavant, l’exportation reposait sur une paire XML+XSL que les navigateurs rendaient sous forme de HTML, mais la sécurité des navigateurs modernes bloque le chargement de certaines ressources externes dans les fichiers locaux.
Avec l’exportation mise à jour, la sélection de Fichier → Exporter → Définition de structure en HTML… produit désormais un fichier HTML autonome qui s’ouvre proprement dans n’importe quel navigateur. Toutes les ressources nécessaires sont placées dans un dossier html_export_resources, que vous pouvez personnaliser si nécessaire.
Vous pouvez également exporter en HTML par programmation en utilisant EXPORT STRUCTURE avec son paramètre optionnel, ce qui vous permet de choisir entre les formats XML et HTML.
FORMULES DYNAMIQUES POUR LES OBJETS DE FORMULAIRE
Avec 4D 21, les objets formulaires deviennent beaucoup plus flexibles grâce aux sources de données basées sur des formules. Au lieu de lier un objet à un champ fixe ou à un pointeur, vous pouvez maintenant le connecter directement à une formule en utilisant OBJECT SET DATA SOURCE FORMULA.
Cela permet de mettre à jour automatiquement les valeurs en fonction des calculs, du contexte ou d’autres logiques dynamiques, ce qui est parfait pour créer des formulaires adaptables ou générer des éléments d’interface utilisateur à la volée.
Associez cela à des constantes de boîte de liste comme lk selected items expression et vous obtiendrez un comportement de formulaire qui s’adapte en temps réel, réduisant la duplication du code et améliorant la réactivité.
Conversion d’une chaîne hexadécimale en nombre 
La commande String vous permet désormais de convertir des chaînes hexadécimales directement en nombres. Plus besoin d’écrire des utilitaires d’analyse ou de gérer des chaînes binaires. Il suffit de passer la chaîne, et vous obtenez le résultat numérique.
Il s’agit d’un ajout subtil qui élimine les frictions lorsque vous travaillez avec des API externes, des formats de bas niveau ou des intégrations renvoyant de l’hexadécimal.
Nouvelles fonctions de découpage des chaînes de caractères 
Les nouvelles commandes trim, trimStart, et trimEnd, facilitent l’élimination des espaces blancs ou de caractères spécifiques dans les chaînes de caractères. Elles se comportent comme leurs équivalents JavaScript ou Python et fonctionnent avec n’importe quel jeu de caractères.
La logique de découpage manuel n’est plus nécessaire. Les données sont plus propres, les entrées de formulaire sont plus faciles à valider et le code s’aligne sur les attentes des langages modernes.
Amélioration de la gestion des catalogues dans les systèmes de contrôle des versions
Auparavant, tous les détails du projet, comme les couleurs et les positions des tables, des champs et des relations, étaient stockés dans catalog.4DCatalog. Désormais, ces informations sont réparties dans un fichier distinct appelé catalog_editor.json.
Cela facilite la gestion des modifications et la révision du travail, en particulier lorsque plusieurs développeurs sont impliqués. Avec ce changement, le fichier de catalogue reste intact lorsque quelqu’un modifie une table ou un champ.
Cela permet d’éviter les conflits et de simplifier l’examen des modifications. De plus, nous avons ajouté une option permettant de basculer vers cette nouvelle configuration pour les anciens projets. Si vous activez accidentellement cette fonctionnalité, ne vous inquiétez pas ! Vous pouvez facilement l’annuler en revenant à l’ancienne configuration.
Simplifier les déclarations de variables avec le typage direct
La nouvelle fonctionnalité de typage direct de 4D 21 simplifie les déclarations de variables en éliminant le besoin de méthodes « Compilateur ».
Ce changement permet aux développeurs de déclarer des variables de processus et inter-processus directement dans leur code, améliorant ainsi l’organisation et l’encapsulation. Au lieu de s’appuyer sur l’inférence de type, qui peut ralentir la compilation et entraîner des erreurs, le compilateur marque une pause lorsqu’il rencontre une variable non typée, ce qui garantit la sécurité du type sans sacrifier l’efficacité. Le typage direct est activé par défaut pour les nouveaux projets, et les projets existants peuvent facilement basculer la fonctionnalité dans les paramètres du compilateur pour une transition en douceur. Il s’agit d’une amélioration significative de la flexibilité et du contrôle pour les développeurs 4D.
Amélioration de l’expérience de débogage
4D 21 apporte des améliorations significatives au débogueur et au débogueur à distance.
Grâce aux expressions sauvegardées automatiquement, vous n’avez plus besoin de saisir à nouveau des expressions précédemment évaluées, ce qui garantit une meilleure expérience de débogage. La nouvelle fonction « pin » vous permet de garder les expressions essentielles toujours accessibles.
Vous disposez également d’un meilleur contrôle des variables locales, des expressions de ligne et des expressions personnalisées dans l’observateur d’expressions.
Enfin, l’ interface remaniée offre un environnement de débogage plus propre et plus intuitif.
Éditeur de code et de formulaires
L’environnement de développement 4D a fait un grand pas en avant. Dans les versions de fonctionnalités menant à 4D 21 LTS, l’éditeur de code et de formulaires bénéficie d’avertissements plus intelligents, d’une validation plus forte, d’outils d’édition plus propres et d’une meilleure visibilité sur les problèmes potentiels bien avant qu’ils n’atteignent le stade de l’exécution.
Que vous affiniez la logique métier, construisiez des interfaces dynamiques ou mainteniez de grandes bases de code, ces améliorations vous aident à vous concentrer sur l’essentiel, à savoir l’écriture d’un code clair et fiable. En réduisant le bruit, en détectant les erreurs plus tôt et en rationalisant la navigation dans les formulaires, l’éditeur prend désormais en charge un flux de développement plus rapide et plus prévisible.
Personnalisation de l’affichage global des avertissements
Au fur et à mesure que les projets se développent, le nombre d’avertissements dans votre code peut augmenter rapidement. Certains sont des garde-fous essentiels, tandis que d’autres peuvent ne pas s’appliquer à votre style de codage ou à votre architecture. Avec 4D 21, vous avez désormais un contrôle total sur les avertissements qui vous intéressent.
Vous pouvez définir, au niveau du projet, quels types d’avertissements doivent apparaître dans l’éditeur de code et la boîte de dialogue du compilateur. Cela vous permet de masquer les avertissements que vous considérez comme non pertinents et de garder l’attention sur ceux qui vous aident réellement à détecter les problèmes à un stade précoce.
Vous conservez également un contrôle local. Même si un avertissement est globalement affiché ou masqué, vous pouvez l’activer ou le désactiver dans des sections spécifiques du code à l’aide des boutons //%W+ et //%W-.
Cette flexibilité permet de rester concentré, de réduire le bruit et d’adapter le système d’avertissement à la façon dont vous construisez vos applications.
Avertissements pour les éléments de langage obsolètes
4D 21 vous aide à garder votre code moderne en vous alertant lorsque vous utilisez des éléments de langage obsolètes. Les commandes, constantes, paramètres et directives de typage qui ne sont plus recommandés déclenchent désormais des avertissements, par exemple :
-
C_LONGINT($1)
-
C_BOOLEAN($draw)
-
_O_USE INTERNAL DATABASE
Ces éléments fonctionnent toujours, mais ils n’apparaîtront plus dans la complétion de code, ce qui vous encouragera à adopter une syntaxe plus récente et prise en charge.
Si vous préférez, vous pouvez désactiver ces avertissements dans les paramètres de la structure.
Pour faciliter l’introspection, la commande Command name renvoie désormais les détails de la dépréciation en plus des informations sur la sécurité des threads, ce qui vous permet de vérifier rapidement si une commande doit être mise à jour.
VÉRIFICATION SYNTAXIQUE PLUS INTELLIGENTE ET EN TEMPS RÉEL POUR LES FORMULAIRES
4D 21 apporte un contrôle syntaxique plus approfondi et plus intelligent aux formulaires, vous aidant à repérer les problèmes plus tôt et à écrire un code plus propre avec moins d’essais et d’erreurs.
Vous pouvez désormais associer une classe à un formulaire, ce qui signifie que les expressions telles que Form.myProperty sont entièrement validées. L’éditeur vérifie ces expressions au fur et à mesure de la saisie, à la fois dans le code de la méthode et dans la liste des propriétés, de sorte que les erreurs apparaissent immédiatement plutôt qu’au cours de la compilation.
Lorsque vous ouvrez un formulaire avec DIALOG, 4D instancie automatiquement la classe associée si aucun objet n’est fourni. Cela rend l’objet Form prévisible et cohérent sans configuration supplémentaire.
Pour vous aider à progresser plus rapidement, l’éditeur de code propose désormais une fonction d’autocomplétion pour Form, qui répertorie les propriétés et les fonctions des classes, afin d’éviter les erreurs de saisie et de bénéficier d’un code plus clair et plus facile à comprendre.
Commande FORM EDIT améliorée
4D 21 rend l’édition de formulaire plus rapide et plus intuitive en étendant la commande FORM EDIT. Vous pouvez désormais ouvrir un formulaire et sélectionner automatiquement un objet spécifique à l’intérieur, ce qui vous permet d’accéder directement à l’élément que vous devez inspecter ou ajuster.
Ceci est particulièrement utile lorsque vous travaillez avec des outils d’analyse, des rapports d’erreur ou des utilitaires de remaniement. Au lieu de naviguer dans plusieurs pages de formulaire pour localiser un objet, une simple commande vous permet d’y accéder directement :
Extension de code Visual Studio
Le développement assisté par l’IA fait de plus en plus partie du codage quotidien. Qu’il s’agisse d’écrire du code et de repérer les erreurs ou de générer des formulaires 4D complets avec des CSS, des classes de formulaire et des méthodes de formulaire, l’IA change la vitesse à laquelle vous évoluez. Avec Copilot dans Visual Studio Code et le soutien complet des extensions 4D Analyzer et 4D Debugger, vous pouvez utiliser l’IA en toute confiance tout en gardant votre code propre, validé et facile à déboguer. Il ne s’agit pas seulement de codage assisté par l’IA. Il s’agit de vous offrir un flux de développement plus intelligent, plus rapide et mieux contrôlé.
Formatez votre code 4D dans Visual Studio Code
4D 21 apporte une amélioration bienvenue à l’extension VS Code: le formatage intégré du code.
Si vous modifiez souvent des méthodes ou des classes 4D dans VS Code, vous obtiendrez désormais un formatage correspondant au style utilisé dans 4D, ce qui rend les deux environnements cohérents et facilite le passage d’un environnement à l’autre.
Vous pouvez formater un fichier entier ou seulement une sélection, comme vous le feriez avec d’autres langages dans VS Code. Le formateur gère l’indentation, l’espacement et la casse des commandes, des mots-clés et des constantes, tout en respectant les paramètres d’indentation de VS Code.
Afficher la documentation 4D DIRECTEMENT DANS VS CODE
L’extension 4D-Analyzer ajoute un raccourci pratique pour consulter la documentation pendant que vous codez dans l’éditeur Visual Studio Code.
Lorsque vous survolez une commande, une classe ou une fonction de classe 4D, une infobulle apparaît désormais avec une brève description. En bas de l’écran, un lien« Show 4D Documentation » vous permet d’accéder directement à la page complète de la documentation officielle de 4D, qui s’ouvre automatiquement dans votre navigateur.
Vérification de la syntaxe de l’espace de travail
L’extension 4D-Analyzer apporte la vérification syntaxique de l’espace de travail à Visual Studio Code. Au lieu de ne valider que le fichier que vous êtes en train de modifier, VS Code peut désormais analyser l’ensemble de votre projet 4D et mettre en évidence les problèmes instantanément.
Les erreurs et les avertissements apparaissent dans le panneau Problèmes de VS Code, regroupés par méthode ou classe 4D. Un simple clic vous amène directement à la ligne exacte, ce qui rend le nettoyage rapide et prévisible. Les mises en évidence en ligne et les infobulles vous aident également à comprendre les problèmes à l’endroit même où ils se produisent.
Téléchargement automatique de Tool4D
Avec la version 0.2.0 de l’extension 4D-Analyzer, plutôt que d’installer manuellement une application 4D et d’entrer son chemin dans les paramètres de l’extension, l ‘extension télécharge automatiquement une version de tool4d, la stocke dans un emplacement sur le système et la lance en arrière-plan. Cette simplification vise à rationaliser le processus de démarrage et à améliorer le développement avec VS Code for 4D.
Codespaces de GitHub
Les Codespaces de GitHub simplifient le développement à distance en permettant l’édition de référentiels depuis n’importe où via Visual Studio Code ou l’application Codespaces.
Grâce à l’intégration des projets 4D, les développeurs peuvent améliorer leur expérience de codage avec des outils tels que 4D-Analyzer, qui offre des fonctionnalités telles que la mise en évidence du code et l’auto-complétion. Comme indiqué dans la section ci-dessus, 4D-Analyzer télécharge et met à jour automatiquement la version de l’application tool4d que vous avez définie. 4D a publié une version dédiée, tool4d, pour GitHub afin de permettre cela dans un environnement Codespace.
Débogage du code 4D directement dans Visual Studio Code
4D 21 présente la nouvelle extension 4D-Debugger pour Visual Studio Code, qui améliore le débogage grâce à de puissantes fonctionnalités telles que la définition de points d’arrêt, le passage à travers le code et l’inspection des variables, le tout directement dans VS Code. Cet outil s’appuie sur le 4D-Analyzer et s’intègre harmonieusement, rendant le débogage plus rapide et plus intuitif.
Installez l’extension 4D-Debugger à partir de la place de marché VS Code. Assurez-vous qu’un serveur 4D fonctionne sur votre machine et configurez la connexion dans le fichier .vscode/launch.json. Vous pouvez également vous connecter à un serveur existant en utilisant le port par défaut du débogueur.
Interface utilisateur
De la personnalisation des fenêtres à l’amélioration du défilement, en passant par le contrôle des icônes et des catalogues contrôlés par version, la couche d’interface utilisateur de 4D 21 est devenue plus flexible et plus conviviale pour les développeurs. Ces améliorations vous aident à créer des interfaces qui se sentent bien et modernes tout en simplifiant la collaboration, le débogage et la maintenance en coulisses.
Personnaliser l’apparence avec de nouveaux types de fenêtres
Deux nouveaux types de fenêtres vous permettent de concevoir vous-même la barre de titre de la fenêtre et d’ajouter vos propres éléments, tels que des boutons ou un champ de recherche. Vous avez ainsi toute latitude pour adapter l’apparence de votre application à vos spécifications.
Mais ce n’est pas tout ! Nous avons également introduit plusieurs nouvelles commandes conçues pour rationaliser votre processus de développement :
- Réduire une fenêtre dans la barre de titre sous Windows ou dans le dock sous macOS, REDUCE RESTORE WINDOW
- Savoir si la fenêtre est réduite dans la barre de titre sous Windows ou dans le dock sous macOS, Is Window Reduced
- Savoir si la fenêtre est maximisée, Is Window Maximized.
Des icônes personnalisées pour chaque type de fenêtre
La commande SET WINDOW DOCUMENT ICON vous permet de définir une icône personnalisée pour chaque type de fenêtre, ce qui améliore la navigation et l’expérience de l’utilisateur. En utilisant la syntaxe de la commande, vous pouvez définir une icône ou un document pour une fenêtre, rendant ainsi votre interface plus attrayante visuellement. L’icône sera visible dans la fenêtre et dans la barre des tâches de Windows, offrant ainsi des repères visuels clairs. Cette fonctionnalité permet également d’associer des icônes à des documents, ce qui offre des options de personnalisation supplémentaires.
Comportement de défilement amélioré dans les sous-formulaires
4D 21 rend le travail avec les sous-formulaires dans vos applications beaucoup plus fluide et intuitif pour les utilisateurs !
Vous est-il déjà arrivé d’être frustré en essayant de faire défiler une liste dans un sous-formulaire, et de voir l’ensemble du sous-formulaire se déplacer à la place ? Ou peut-être avez-vous essayé de faire défiler le sous-formulaire, mais la zone de liste ne bouge pas ?
4D 21 corrige ce problème grâce à un nouveau comportement amélioré de défilement des sous-formulaires.
Introduction de « blank if null » pour les colonnes de temps et les pieds de page
Avec 4D 21, la propriété « Blank if null » est maintenant disponible pour les colonnes et pieds de page de type « time » dans les listboxes, ce qui résout une limitation de longue date.
Vous pouvez facilement définir le comportement d’affichage par le biais du thème d’affichage ou par programmation. Cette amélioration permet d’obtenir des résultats plus clairs et plus intuitifs, que vous utilisiez une simple case à cocher ou une ligne de code.
Paramètres personnalisés pour l’initialisation de la zone Web intégrée
4D 21 facilite la personnalisation de la zone web intégrée dans vos applications ! Cette zone utilise Chromium pour la navigation, et les développeurs ont parfois besoin d’ajuster le fonctionnement de Chromium.
Auparavant, cela nécessitait des modifications de code complexes. Désormais, avec 4D 21, vous pouvez simplement créer un fichier nommé« 4DCEFParameters.json » et spécifier les personnalisations que vous souhaitez dans ce fichier. Cela facilite grandement la gestion et garantit que vos personnalisations sont appliquées correctement.
Par exemple, cette fonctionnalité permet de lire automatiquement les vidéos dans votre espace web, ce qui n’était pas possible auparavant.
Utiliser une classe dans les zones web intégrées avec $4d
Contrôlez l’accès aux méthodes 4D dans vos zones web en définissant exactement quelles fonctions sont exposées via $4d. Avec la nouvelle commande WA SET CONTEXT de 4D 21, vous pouvez encapsuler et restreindre les fonctions disponibles en utilisant des méthodes de classe ou des contextes basés sur des objets, ce qui renforce la sécurité, améliore l’organisation du code et simplifie la maintenance.
Amélioration de l’édition de formules et de la sécurité dans l’assistant d’étiquetage
4D 21 améliore le composant Label Wizard, rendant plus facile et plus sûr l’insertion et la modification de formules dans vos étiquettes. Désormais, vous pouvez rapidement ajouter des formules à l’aide d’un bouton ou d’un élément de menu dédié, et les valider directement dans l’éditeur de formules.
Cette mise à jour renforce la sécurité en filtrant les formules malveillantes et garantit la création de formules valides en bloquant les commandes non autorisées. L’édition est également simplifiée : il suffit de double-cliquer pour ouvrir la formule et y apporter des modifications.
Impression non bloquante
4D 21 introduit l’impression non bloquante, permettant l’exécution simultanée de plusieurs travaux d’impression pour une meilleure réactivité de l’application. L’activation par défaut dans les nouveaux projets garantit une expérience transparente, mais les applications plus anciennes doivent l’activer dans les options de compatibilité des paramètres de la structure.
