DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Nouveautés / Nouveautés de la version 27
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Consultez la brochure des 927 nouveautés (format PDF)

Nouveau champ Editeur de diagrammes
Parmi les nouveautés majeures de la version 27, le nouveau champ Editeur de Diagrammes vous ravira.
Ce champ vous permet de proposer une superbe fonctionnalité de création et d'édition de diagrammes dans vos applications et vos sites sans avoir à programmer quoi que ce soit : tout est automatique, c'est un champ.
Un diagramme c'est quoi ?
Un Diagramme est une "représentation vectorielle de parties d'un ensemble et de leur disposition les unes par rapport aux autres".
Un diagramme permet de représenter des structures, des architectures, une infrastructure matérielle, des plans, des processus, un fonctionnement de mécanisme, un organigramme non conventionnel, ...
Champ Editeur de diagrammes : les fonctionnalités principales
Le champ Editeur de Diagrammes propose les fonctionnalités riches que les utilisateurs attendent :
  • utilisation de formes prédéfinies
  • utilisation de ses propres formes et images
  • redimensionnement des formes
  • style des formes : trait, couleur, ...
  • liaisons sophistiquées entre les formes
  • saisie de texte
  • ...
Toutes ces fonctionnalités offertes aux utilisateurs finaux de vos applications et sites sont également disponibles par programmation.
Champ Editeur de diagrammes : un véritable logiciel à lui tout seul
Champ
Le champ Editeur de Diagrammes est un véritable logiciel : il permet de créer des diagrammes sans que vous n'ayez rien à programmer.
L'utilisateur final de votre application ou de votre site peut créer, modifier, sauver et imprimer ses propres diagrammes.
Le champ se charge de tout.
Tous les types de diagrammes sont possibles : diagramme logique, organigramme, workflow, plan, infra informatique, processus, dessin vectoriel, schéma électronique, mind map, ...

Programmation
Le champ Editeur de Diagrammes est également manipulable par programmation.
Votre application ou votre site peut créer des diagrammes, et peut modifier ou compléter un diagramme réalisé par un utilisateur.
Présentation générale du champ Editeur de diagrammes
Le champ Editeur de diagrammes dispose de 4 zones de fonctionnement.
Typiquement :
  • à gauche, la bibliothèque de formes prédéfinies.
  • en haut, la barre d'outils.
  • à droite le modifieur, pour éditer la forme sélectionnée.
  • au centre le diagramme lui-même.
L'utilisation du champ est très intuitive. Par programmation ou via les "7 onglets", il est possible de masquer une ou plusieurs zones, et de personnaliser la barre d'outils, de charger des zones prédéfinies, ...
Champ Editeur de diagrammes : les formes prédéfinies disponibles (vectoriel)
Les formes prédéfinies représentent la "base" d'un éditeur de diagrammes.
L'Editeur de Diagrammes est fourni avec un ensemble de formes prédéfinies :
  • carré,
  • rectangle,
  • triangle,
  • polygone,
  • losange,
  • parallélogramme,
  • cercle, ellipse,
  • flèche,
  • bidon,
  • personne,
  • étoile,
  • feuille,
  • fenêtre.
  • ...
Le clipart livré avec WINDEV et WEBDEV propose des milliers d'images au format SVG qui peuvent être utilisées comme "forme" par l'Editeur de Diagrammes.
L'éditeur de diagrammes permet également de créer ses propres formes.
Champ Editeur de diagrammes : les liaisons
Les liaisons entre les formes sont une fonctionnalité importante d'un éditeur de diagrammes : l'utilisateur doit pouvoir créer les liaisons de son choix, et les liaisons doivent s'adapter automatiquement à tout déplacement de forme.
Les liaisons du champ Editeur de Diagrammes de la version 27 proposent entre autres :
  • look 2D ou 3D,
  • style de trait : épaisseur, type, couleur,
  • forme de chaque extrémité,
  • liaison droite ou brisée,
  • liaison avec angle,
  • point d'ancrage,
  • ...
Champ Editeur de diagrammes : le texte
La saisie de texte dans un champ Editeur de diagrammes s'effectue directement à l'emplacement du curseur.
La mise en forme d'un texte bénéficie de toutes les fonctionnalités attendues : police, taille, couleur, alignements, opacité, edit in place, ...
Champ Editeur de diagrammes : l'utilisateur final peut ajouter ses formes vectorielles prédéfinies
Le champ Editeur de Diagrammes permet de créer ses propres formes prédéfinies, et d'importer des formes existantes.
Il est possible d'importer des formes au format SVG, des images et des photos au format PNG ou JPEG.
Il est facile de créer des bibliothèques de formes métier, ou des bibliothèques de meubles d'une marque donnée, d'articles disponibles dans un magasin, etc...
L'utilisateur final peut créer ses éléments, ou votre application peut les fournir.
Champ Editeur de diagrammes : un champ programmable
Le champ Editeur de diagrammes permet à l'utilisateur final de créer, d'éditer, d'exporter et d'imprimer ses propres diagrammes.
Le champ Editeur de diagrammes permet également de créer, modifier, utiliser et positionner des formes, des liaisons et des textes par programmation.
Le contenu d'un diagramme réalisé par un utilisateur final est également manipulable par programmation.
Cela permet toutes les libertés fonctionnelles.
Champ Editeur de diagrammes : export en SVG et PNG
Un diagramme existant peut être exporté à l'aide de la barre d'outils sous la forme d'une image vectorielle SVG ou d'une image PNG.
Champ Editeur de diagrammes : impression
De la même manière, un diagramme peut être imprimé depuis la barre d'outils ou par programmation.
Le format de papier sélectionné est matérialisé (pointillés) dans l'éditeur de diagramme, ce qui permet de positionner au mieux les formes en fonction de l'impression prévue.
Champ Editeur de diagrammes : divers
  • Le format du Diagramme est identique entre WEBDEV et WINDEV
  • Un Diagramme peut être sauvegardé dans une rubrique de type Mémo HFSQL; le binding avec un champ Diagramme est donc possible.
Champ Editeur de diagrammes : programmation avec un tableau de formes
En programmation, le diagramme est composé d'un Tableau de Formes.
Ce tableau de formes contient toutes les formes et images du diagramme.
Chaque forme inclut ses coordonnées et ses propriétés.
Il est ainsi facile de manipuler par programmation un diagramme, d'y ajouter ses formes et ses images.
Toutes les fonctionnalités du champ Editeur de diagrammes sont accessibles par programmation.
Pour ajouter une forme dans un diagramme par programmation, il suffit d'ajouter cette forme dans le tableau de formes : le champ se chargera automatiquement d'afficher les formes.
Il est bien sûr possible de modifier ou supprimer une forme.
Types natifs pour manipuler les formes
La version 27 propose les types WLangage nécessaires pour programmer facilement les traitements que vous désirez.
Le type natif Diagramme sert à manipuler tout le document.
Le Diagramme bénéficie de nombreuses propriétés :
  • dimension
  • couleur de fond
  • grille
  • mise en page
  • zoom
  • ...
Le type natif de base Forme permet lui de manipuler toutes les formes grâce à ses nombreuses propriétés : X, Y, largeur, hauteur, texte, couleur de fond, opacité, ombre, tableau de liens, ...
Depuis ce type Forme de base, de nombreux autres types natifs sont proposés :
  • Rectangle
  • Triangle
  • Cercle
  • Polygone
  • Image
  • Lien
  • Forme qui contient des formes
  • ...
Tous ces types héritent des propriétés du type Forme et proposent des propriétés spécifiques : rayon, ....
Champ Editeur de diagrammes : nouvelles fonctions WLangage
De nouvelles fonctions WLangage font leur apparition pour créer et manipuler des diagrammes par programmation :
DiagrammeCharge, DiagrammeSauve, DiagrammeVersImage, DiagrammeVersSVG, iImprimeDiagramme...
Champ Editeur de diagrammes : nouvelles propriétés
De nouvelles propriétés WLangage font également leur apparition pour définir et paramétrer des diagrammes par programmation :
Zoom, Grille, Affichage/Masquage de la bibliothèque, du modifieur et du ruban, format du papier...
Champ Editeur de diagrammes : nouveaux événements
Pour programmer un diagramme, de nouveaux événements de programmation font leur apparition.
Ils s'ajoutent aux événements existants.
  • Clic dans le diagramme
    Cet événement permet par exemple de créer une forme à l'endroit du clic.
  • Création d'une forme
    Cet événement permet d'être prévenu quand l'utilisateur crée une forme.
  • Sélection d'une forme
    Cet événement permet d'être prévenu quand l'utilisateur sélectionne une forme.
  • Modification de forme
    Cet événement permet d'être prévenu quand l'utilisateur modifie une forme.
  • Bouton Droit
    Cet événement permet d'être prévenu quand l'utilisateur clique sur le bouton droit de la souris. Cela permet par exemple d'afficher un menu contextuel personnalisé.
  • Déplacement d'une forme (Glisser Déplacer)
    Cet événement permet d'être prévenu quand l'utilisateur déplace une forme.
Ajouter des formes vectorielles prédéfinies : par programmation
Le concepteur d'une application peut ajouter par programmation ses propres formes prédéfinies et images à la bibliothèque de formes prédéfinies proposée par le champ : formes métier, formes d'une marque donnée, ...
Mode affichage seul, interactif
Un diagramme peut être affiché "seul", sans volet et sans barre d'outils.
Les formes ne peuvent plus être déplacées ni redimensionnées.
Par contre les traitements de clics sur les formes sont toujours actifs, ce qui permet de programmer des traitements selon les clics de l'utilisateur.
Champ Lecteur PDF : remplissage de formulaire, sauvegarde, impression
Nouveauté très attendue de la version 27 pour le champ Lecteur PDF : la possibilité de remplir un formulaire de saisie.
Le formulaire renseigné peut ensuite être imprimé et/ou sauvegardé.
Le remplissage peut être effectué directement par l'utilisateur final.
Champ Lecteur PDF : ajout de filigrane par l'utilisateur final
Il était déjà possible d'insérer par programmation ou depuis l'aperçu avant impression un filigrane à une ou des pages d'un document PDF existant.
En version 27, dans le champ Lecteur PDF, l'utilisateur final peut insérer lui-même un filigrane, peut choisir le texte, la position, l'angle, la police, la taille, la couleur, l'opacité du texte.


L'ajout de filigrane est également possible par programmation.
Champ Lecteur PDF : signature électronique par l'utilisateur final
La fonction WLangage PDFSigne permet déjà de signer un document par programmation.
En version 27, un utilisateur final peut signer un document PDF depuis le champ Lecteur PDF.
L'option de signature est proposée dans le ruban, l'utilisateur final doit simplement sélectionner son certificat.
Champ Lecteur PDF : signatures électroniques multiples avec certificats multiples
En version 27, un utilisateur final peut également ajouter sa signature électronique à un document PDF qui a été préalablement signé.
La signature multiple de documents PDF est également possible par programmation.
Champ Lecteur PDF : ce pdf est-il signé ? avec quel certificat ?
En version 27, l'affichage d'un PDF signé affiche un bandeau indiquant que le PDF est signé, et indique le nombre de signatures.
En cliquant sur ce bandeau, l'utilisateur final peut consulter les signatures.
Informations faciles à lire

Savoir si un document PDF est signé et avec quel certificat est également possible par programmation.
Champ Lecteur PDF : signature manuscrite, paraphe manuscrit
Le champ Lecteur PDF de la version 27 offre à l'utilisateur final de nombreuses options de signature manuscrite :
  • signature à la souris,
  • saisie au clavier avec une police cursive,
  • utilisation de l'image du presse-papiers,
  • utilisation d'une image sur disque.
  • ...
Le dimensionnement et le positionnement s'effectuent à la souris.
Concernant le paraphe des pages, l'image et la position de l'image sont proposées de page en page.
Le document signé peut être sauvegardé, imprimé, envoyé par email...

Une signature manuscrite insérée dans le document PDF
Une signature manuscrite insérée dans le document PDF
Génération de PDF noir et blanc
Indépendamment du champ Lecteur PDF, les nouvelles options NiveauDeGris et NoirEtBlanc de la fonction iParamètrePDF permettent la génération d'un document PDF en noir et blanc ou en nuances de gris.

Format PDF/A 1.7
En version 27, il est possible de générer les fichiers PDF au format d'archivage PDF/A 1.7 (norme ISO 32000).
Champs métiers proposés
La version 27 offre 13 nouveaux Champs Métier :
  • Saisie assistée d'email avec jetons,
  • Formulaire avec saisie obligatoire non bloquante,
  • Drag & Drop de lignes dans une Zone Répétée,
  • Lecteur PDF WEBDEV,
  • Timeline WEBDEV,
  • Combo avec possibilité de saisie,
  • Panneau latéral de type Popup,
  • Utilisation de jetons comme filtre, avec scrolling horizontal,
  • ...
Champ Traitement de Texte : Lien vers les images externes, pour réduire la taille des documents
Le champ Traitement de Texte permet maintenant d'insérer des liens vers des images externes.
Cela évite d'inclure l'image elle-même dans le document, et permet donc de limiter la taille du document.
L'image stockée à l'adresse du lien est visualisée dans le document Traitement de Texte, avec une définition de visualisation, et imprimée en définition réelle.
Champ Traitement de Texte : Détection automatique des liens HTTP pour les rendre cliquables
En version 27, les URL présentes dans un texte sont automatiquement converties en liens cliquables.
Champ Tableur : ouverture des fichiers de type XLTS et XLTM
Les fichiers XLTS et XLTM sont des modèles de classeurs.
Lorsqu'un utilisateur final ouvre un fichier de ce type, un nouveau classeur est automatiquement créé.
Champ Tableur : conservation automatique de la protection des feuilles
Dans un fichier XLSX il est possible de protéger des feuilles contre la modification. Ces feuilles s'affichent, mais il n'est pas possible de les modifier.
La modification de ces feuilles protégées demande un mot de passe. La version 27 gère cette protection.
Champ Tableur : divers
  • La fonction Excel Index est disponible
Nouveauté Champ Graphe : graphe circulaire de progrès
Un nouveau type de graphe fait son apparition en version 27 : le graphe circulaire de progrès, ou graphe à secteurs de progrès.
Ce type de graphe est principalement utilisé pour comparer des objectifs ou des parts de marché, ou illustrer une progression, en sachant que le cercle complet représente 100%.
Un graphe circulaire de progrès
Un graphe circulaire de progrès
Nouveau champ Graphe : graphe circulaire de progrès, la programmation
La programmation du champ Graphe circulaire de progrès est la programmation habituelle de remplissage des graphes.
La famille de fonctions WLangage grCPxxx permet de manipuler ce type de graphes.
Rappel
Le champ Editeur d'images vous permet de proposer un véritable éditeur d'images dans vos applications. Les utilisateurs finaux peuvent ainsi modifier les images et photos directement depuis vos applications, sans avoir à installer et utiliser d'outil tiers.
Champ Editeur d'images : flouter une zone
Une nouvelle fonctionnalité du champ Editeur d'images permet à l'utilisateur final de flouter facilement une zone de l'image.
OCR sur une zone de l'image : rien à programmer
En version 27, l'éditeur d'images permet à l'utilisateur final de définir une zone sur une image, et de déclencher l'OCR pour récupérer les textes de cette zone.
Cela permet par exemple de récupérer automatiquement une adresse de livraison ou de facturation, le contenu d'une commande, ...
En version 27, il n'y a rien à coder pour lancer cet OCR.
L'utilisateur sélectionne la zone, et hop, l'OCR est effectué !
Programmation du flou
L'application d'un flou sur une partie de l'image ou sur une partie d'un champ Image peut être effectuée par programmation.
Pour flouter un champ il suffit d'utiliser la nouvelle fonction WLangage dFlou, en passant le nom du champ et le taux de floutage en paramètres.
Pour flouter une zone, il suffit de passer en paramètres les coordonnées de la zone.
Paramétrage de l'éditeur d'images à l'ouverture
L'outil sélectionné à l'ouverture de l'image peut être défini par programmation.
La taille par défaut d'une image créée sous l'éditeur d'images peut être définie par programmation.
Rappel : tout ce qui est disponible dans le champ Editeur d'images est disponible dans l'éditeur d'images lui-même
Le développeur dispose d'un éditeur d'images dans l'environnement; vous connaissez certainement cet outil livré en standard.
Le champ Editeur d'Images reprend toutes les fonctionnalités de cet éditeur d'images.
Les développeurs bénéficient de toutes ces fonctionnalités.
Ne dupliquez plus vos projets inutilement : un environnement unique
Vous le savez, il est possible d'utiliser WINDEV, WEBDEV et WINDEV Mobile dans le même environnement.
Les éléments des projets sont ainsi immédiatement communs aux 3 plateformes : analyses, requêtes, états, procédures, classes, code, ... Fenêtres, pages et fenêtres mobiles se trouvent dans le même projet.
Ces éléments s'ouvrent directement dans l'environnement de WINDEV.
Cela permet le portage et la maintenance facile d'une application WINDEV vers le mobile et vers le Web, sans avoir besoin d'importer ou de dupliquer des éléments du projet.
Rappel : il est bien entendu nécessaire de posséder une licence du logiciel concerné.
Composants multiplateformes
En version 27, il devient possible de créer des composants multiplateformes Windows, Linux, Web, iOS, Android.
Le partage de code est ainsi encore plus facile.
Evolution des directives <bloc> et <compile si>
En version 27, il devient possible d'utiliser les directives <Bloc> et <Compile Si> à l'intérieur de déclarations de constantes.
Votre existant WINDEV devient un site web ou une application SaaS
Un besoin répandu est de transformer une application Windows (ou des parties d'applications) en un site Web dynamique ou en une application SaaS.
WINDEV 27 et WEBDEV 27 répondent à ce besoin de manière idéale.
Import de fichiers de données '.FIC'
Le drag & drop dans l'analyse d'un fichier de données ".FIC" classic importe automatiquement sa description sans passer par l'assistant.
Edition de la connexion d'un fichier de données
Le menu contextuel propose maintenant l'édition de la connexion d'un ou plusieurs fichiers de données : bien pratique.
Un environnement plus rapide
L'environnement de la version 27 apporte des performances accrues dans de nombreux domaines, comme par exemple :
  • La mise à jour des modèles.
  • La compilation multicoeur qui optimise le nombre de coeurs à utiliser.
  • La compilation après mise à jour du GDS.
  • La génération de pages WEBDEV.
  • ...
Stockage des projets dans un répertoire unique
Historiquement, les projets WINDEV sont stockés dans le répertoire Mes Projets, les projets WINDEV Mobile dans le répertoire Mes Projets Mobile et les projets WEBDEV dans le répertoire Mes Sites.
Pour favoriser l'interopérabilité, en version 27, les projets sont stockés par défaut dans le répertoire unique Mes Projets.
A l'installation de la version 27, une question est posée pour savoir si vous désirez regrouper vos anciens projets dans cet unique répertoire.
Le cas des éventuels noms de projet en doublon est géré.
UI de choix de styles plus efficace
La nouvelle fenêtre de choix des styles est bien plus ergonomique et agréable à utiliser.


La nouvelle présentation des styles permet par exemple une recherche de style plus facile.
La taille de visualisation du style est adaptée au type de champ manipulé.
De même, la couleur de fond de visualisation s'adapte à la fenêtre en cours (thème sombre ou thème clair).
Un menu contextuel permet des actions rapides sur les styles.
L'ensemble des feuilles de styles est présenté dans une unique fenêtre, ce qui facilite le choix.
Lorsqu'un style est surchargé, un picto l'indique.
Ne cherchez plus où est le code : arbre de code dans les fenêtres, les pages et les états
La version 27 propose un nouveau volet qui permet de visualiser tous les éléments d'une fenêtre, d'une page ou d'un état qui possèdent du code.
Cela permet de voir d'un coup d'oeil où se situe le code dans un élément que l'on récupère.
Un nouveau volet fait son apparition dans l'environnement pour visualiser cet arbre.
Aide intégrée : un nouveau volet affiche l'aide de la fonction en cours



En version 27, l'environnement propose un nouveau volet d'assistance très pratique : ce volet affiche un résumé de la fonction, la valeur de retour, les paramètres, leur type et leur utilité, ainsi qu'un lien vers la page d'aide complète et le forum professionnel.
Il n'est plus nécessaire de sortir de l'environnement pour connaître ces informations primordiales !
Alignements : des champs supplémentaires pris en compte
L'alignement des éléments présents dans une fenêtre évolue encore en version 27 :
  • L'alignement avec les champs provenant d'un modèle est possible.
  • L'alignement peut être effectué avec une colonne de table.
  • Un champ non déplaçable est ignoré.
Eléments en cours d'édition : ils peuvent être dédockés (sortis de l'environnement)
Les éléments en cours d'édition peuvent être dédockés et positionnés en dehors de l'environnement.
Lorsque l'élément est ramené dans l'environnement, l'environnement propose la zone dans laquelle il va redocker cet élément.
En version 27, la touche Ctrl permet d'indiquer de ne pas docker l'élément.
C'est vraiment pratique à l'usage !
Catalogue d'images : la couleur en prime !
Votre environnement préféré est livré avec un catalogue d'images et d'icônes très riche : des dizaines de milliers d'éléments fournis gratuitement !
De nombreuses images et icônes sont fournies en noir & blanc.
En version 27, une option permet d'appliquer automatiquement une couleur à ces éléments.
Ruban de l'éditeur : ouvrir le bon répertoire d'un clic
Très souvent, on a besoin d'ouvrir un explorateur positionné sur le répertoire du projet ou le répertoire EXE (ou de génération) de la configuration en cours.
Le bouton "Dossier" du ruban répond à ce besoin d'un clic !
Déplacement de champ par incrément en saisie clavier
La barre de message de l'environnement permet de déplacer un champ d'un nombre défini de pixels : il est maintenant possible de taper "+10" ou "-5" pour déplacer le champ, dans l'axe des X ou des Y.
Divers
  • Simplification de l'édition des styles du champ Calendrier
  • Zoom (CTRL+roulette) beaucoup plus rapide
  • Le catalogue d'images s'enrichit d'icônes au look Windows 11
Champ table : étendue de la recherche
Un champ Table propose une FAA de recherche dans les colonnes.
Depuis la version 26, les champs Table sont créés avec une recherche de type "contient" par défaut.
Les tables plus anciennes proposaient une recherche de type "Commence par", bien moins pratique.
L'audit statique de la version 27 signale les anciens modes de recherche.
Pour utiliser le nouveau mode de recherche, 2 clics suffisent.
Multithread
Dans un traitement multithread, l'accès aux variables doit être protégé par des sections critiques.
L'audit dynamique signale les accès aux variables non protégées et évite ainsi bogues et comportements inattendus.
Texte qui déborde de son conteneur : colonne de table, libellé de champ de saisie, option de sélecteur...
A l'exécution, un contenu de champ peut dépasser de la zone de visualisation.
Il peut s'agir d'une donnée affichée ou d'un libellé de champ modifié par programmation
L'audit dynamique de la version 27 signale tous les débordements constatés à l'exécution.
Gestion des sprints
Un Sprint est un cycle de développement, ou une itération.
En développement agile, un projet est découpé en un ensemble de sprints.
Le Centre de Gestion de Projets intègre maintenant la terminologie de sprint.
Un Sprint est délimité par 2 dates, et peut contenir des exigences, des tâches et des incidents.
Le découpage est formalisé.
L'édition de planning Gantt affiche les sprints sélectionnés.
Suivi des corrections : fiches corrigées par un développeur entre 2 dates
Une nouvelle statistique est disponible : le nombre de fiches corrigées par un développeur entre 2 dates.
Un graphe de tendance de création et correction d'incidents fait son apparition.
Il est bien sûr possible de consulter directement les fiches depuis cette liste.
Lien entre exigence/incident et message
Une exigence peut être créée depuis un message de la messagerie intégrée.
Depuis un incident, il est possible de suivre le fil de discussion et de le poursuivre.
Evolution des tags
Un Tag permet de qualifier un incident.
Un Tag ou plusieurs Tags peuvent être associés à une fiche : tag "bug mineur", tag "régression", tag "UI", ...
Les fiches d'incident qui ne possèdent aucun tag sont maintenant qualifiées comme "Aucun tag" et apparaissent ainsi dans les recherches et les classements.
Divers
  • La gestion des incidents a été enrichie (saisie de solution ou de contournement, copies d'écran multiples, nouveaux états d'incident...)
  • L'UI de la fenêtre est plus intuitive.
Documentation des webservices
La documentation technique éditée automatiquement propose maintenant l'édition des informations concernant les Webservices REST générés.
Optimisations potentielles
En version 27, lorsque l'audit automatique de l'environnement détecte un champ ou un paramètre qu'il faudrait changer, une icône apparaît à côté de l'élément. En cliquant sur l'icône, le détail de la modification à effectuer apparaît.
L'audit temps réel détecte les anciennes technos utilisées dans vos projets
Les projets ont souvent plusieurs années : c'est une situation courante
Il arrive donc souvent que des projets utilisent des technologies datant de l'époque de la création du projet (technologies qui sont aujourd'hui dépassées ou remplacées par des technologies plus sécurisées), des options devenues inutiles, peu performantes. Il arrive également que des options récentes doivent être activées.
La version 27 signale ces usages obsolètes ou les nouveautés apparues et propose la techno à utiliser.
Il peut s'agir par exemple de :
  • un champ HTML resté en mode IE6 (donc qui affiche mal les contenus récents)
  • un champ Graphe ou un champ Forme pour lequel l'anti-aliasing n'a pas été activé (et donc crénelage possible)
  • un champ Caméra en ancienne version
  • tout champ dans lequel une nouvelle option intéressante non activée est disponible
  • un champ Combo à passer en taille automatique ou en redimensionnable
  • activer l'aide à la saisie des masques fichiers
  • ...
La version 27 signale également des problèmes détectés plus généraux :
  • une image de fond avec transparence mais sans détourage (donc qui consomme des ressources inutilement)
  • un champ Fenêtre Interne qui pointe sur une Fenêtre Interne non trouvée dans le projet
  • Binding vers une rubrique ou une variable non trouvée
  • Champ incompatible avec la configuration en cours
  • Taille de champ trop petite pour une utilisation tactile
  • Conflit d'ancrage
  • Plusieurs champs portent le même nom logique.
  • 2 boutons Validation ou Annulation dans une fenêtre
  • ...
Meilleures performances de l'éditeur
L'usage de champs d'ancienne technologie peut avoir un impact sur les performances de vos éditeurs, et ralentir leur exécution, les générations, la mise à jour des modèles, ...
Il est donc intéressant de changer ces anciennes technos par les technos à jour.
Meilleures performances à l'exécution
Les anciennes technos sont souvent plus lentes à l'exécution.
Un moyen simple d'augmenter la vitesse de vos applications est de remplacer les technologies devenues obsolètes.
Diminuer le poids des pages et la consommation mémoire
En WEBDEV particulièrement, l'utilisation de champs d'ancienne technologie, ou de paramètres de champs d'ancienne technologie peut augmenter le poids des pages et la consommation mémoire des pages.
Une intervention de votre part sur ces sujets sera toujours bénéfique !
Variables d'environnement : pour partager des paramètres
Le concept de Variable d'environnement fait son apparition dans la Fabrique Logicielle.
Une Variable d'environnement est une valeur qui peut être utilisée dans le paramétrage des plans d'action : par exemple un numéro de version majeur.
Cela évite d'avoir à modifier l'ensemble des plans d'action qui utilisent la valeur.
Programmer un redémarrage automatique d'une machine
Il peut être nécessaire de rebooter une machine à intervalle régulier, par exemple tous les 2 jours : réinitialisation de la mémoire de Windows, ...
La version 27 permet de planifier cette action dans l'administrateur de la Fabrique Logicielle.
L'automate terminera le plan d'action en cours avant d'exécuter ce redémarrage.
Sélection des notifications à recevoir selon le mode d'exécution
En Intégration Continue, la réception des notifications de réussite peut vite encombrer votre messagerie...
En version 27, il devient possible de sélectionner le type de message à recevoir, par exemple uniquement les messages d'échec.
Déploiement sur pcScloud.NET
En version 27, une action de déploiement automatique sur le serveur PCSCloud.net fait son apparition dans l'éditeur de plan d'actions.
Plusieurs profils de déploiement PCSCloud sont définissables.
Paramétrage en mode sécurisé : tout est interdit par défaut
En version 27, le Groupware Utilisateur permet de créer des profils où tout est interdit par défaut.
L'administrateur devra autoriser les actions autorisées...
Plus de risque d'oublier d'interdire une fonctionnalité non autorisée.
Possibilité de récupérer les informations de l'utilisateur connecté
La fonction WLangage gpwRécupèreInfoUtilisateur permet maintenant de récupérer en une seule ligne de code l'ensemble des informations accessibles sur l'utilisateur courant.
Git : commande git clone depuis l'environnement
L'ouverture d'un projet GIT peut maintenant s'effectuer directement depuis l'environnement.
Inutile de changer d'outil !
Git : afficher l'historique depuis l'environnement
L'historique GIT d'un élément peut être affiché directement dans l'environnement.
Inutile de changer d'outil !
Git : champs : limitation des conflits par réorganisation de l'objet source
L'objet "Champ" de WINDEV est d'une puissance et d'une étendue fonctionnelle remarquable.
En version 27, le format interne du champ évolue pour segmenter les propriétés du champ, et donc limiter les conflits dus à une modification simultanée de différents éléments par plusieurs développeurs : il y a moins de chance que plusieurs développeurs impactent le même segment.
Git : diff d'un élément de l'historique
Le diff d'un historique stocké dans GIT peut s'effectuer directement dans l'environnement.
Inutile de changer d'outil !
éditeur d'images de l'environnement : il bénéficie de toutes les nouveautés du champ Editeur d'images
L'éditeur d'images intégré à l'environnement bénéficie de toutes les nouveautés du champ Image apparues en version 27.
recherche dans les fichiers à extraire
WDMSG propose maintenant la recherche dans les fichiers à extraire.
WDTRAD : nouveautés diverses d'utilisabilité
WDTRAD propose une nouvelle UI et de nouvelles fonctionnalités pratiques :
  • Rechercher/remplacer dans le dictionnaire avec expression régulière
  • Recherche de traduction améliorée : recherche par expression régulière avant le full-text
  • Fenêtre de dictionnaire : volets détachables
  • Nouvelle option de report de traduction : sur la totalité du document ou sur les éléments filtrés
  • Filtres sur les résultats de recherche conservés,
  • Multisélection dans les résultats de recherche : utile pour le mass editing, ...
GDS : volet dans l'environnement : qui a extrait quoi ?
En version 27, le GDS propose un nouveau volet qui permet de visualiser en temps réel l'ensemble des éléments extraits par l'équipe, et quel développeur a extrait quel élément.
Cela permet à un instant T une vision d'ensemble des travaux en cours...
Ce volet permet également d'envoyer un message au développeur ayant effectué l'extraction.
GDS : historique d'un élément affichage des révisions
La fenêtre d'historique d'un élément affiche les révisions.
En version 27 cette même fenêtre affiche également le détail de cette révision : tous les éléments concernés par la révision.
3 actions sont possibles d'un clic sur un élément :
  • consulter son historique
  • consulter les modifications de cette révision
  • sauver l'élément sur disque.
GDS : envoyer une notification de demande de réintégration dans l'environnement du destinataire


En version 27, les demandes de réintégration envoyées à un développeur apparaissent directement dans son environnement !
Si l'environnement est fermé, le message est conservé en attente et s'affichera à l'ouverture.
GDS : panneau "extrait par" dès l'ouverture sous l'éditeur


En version 27, l'ouverture d'un élément informe immédiatement si un autre développeur a déjà extrait cet élément.
Vous ne le découvrirez pas à la première tentative de modification...
GDS : affichage de l'historique non bloquant
L'affichage de l'historique d'un élément ne bloque plus l'environnement.
GDS : branches : améliorations du merge
La gestion du renommage des éléments du projet et la gestion des parentés entre les champs lors d'une opération de Merge ont été revues et améliorées.
Dans les anciennes versions, le report de branches nécessitait de réaliser le report manuel de certaines modifications. La version 27 automatise également le report des modifications des éléments suivants :
  • options de sélecteurs et interrupteurs
  • colonnes de champ Table
  • attributs de Zone Répétée
  • volets d'onglets
  • changements d'ordre
  • gestion de la parenté (champs contenus dans des champs)
  • ...
    Lorsqu'un report manuel est nécessaire, celui-ci est signalé.
GDS : divers
  • Accès successif à plusieurs bases GDS facilité
  • Création de branche : le compte-rendu d'erreur (éventuel) est affiché en fin de création de branche; l'opération de création n'est pas interrompue par les erreurs mineures
  • Création de branche : partage entre projets géré dans tous les cas
Gestion des messages multilingues : nouvelle tecHnologie
La technologie actuelle de gestion des chaînes multilingues est conservée pour compatibilité.
Une nouvelle technologie est mise en place en version 27 afin de simplifier les modes opératoires.
Cette nouvelle technologie s'affranchit de la numérotation des chaînes multilingues et de ses contraintes.
L'IA fait son apparition pour une assistance prédictive à la saisie
L'assistance à la saisie évolue en version 27.
L'assistance à la saisie affiche les 3 propositions les plus pertinentes en début de liste.
Ces propositions sont issues d'un processus d'apprentissage par IA alimenté par un grand nombre de projets.
L'historique des saisies est également utilisé pour le choix de ces propositions.
Par exemple, à la suite de la déclaration d'une variable de type entier, l'appel de fonction suivant utilisant un entier propose cette variable.
Autre exemple : après avoir saisi une ligne contenant une fonction hLitPremier, dès la saisie de la lettre "h", l'assistance propose hLitSuivant...
Cette nouvelle assistance prédictive est très agréable à utiliser.
Assistance sur type avancé
L'assistance à la saisie dans l'éditeur de code propose une assistance sur tous les tableaux dans les types avancés.

3 Nouveaux assistants de code
Rappelons qu'un assistant de code pose des questions pour générer le code ou positionner les paramètres adéquats.
3 nouveaux assistants de code font leur apparition en version 27 :
Vous adoptez la syntaxe préfixée : passez le code existant en syntaxe préfixée d'un clic
Une nouvelle option en version 27 permet de modifier le code d'un projet existant pour le passer en syntaxe préfixée.
Editeur de code : divers
  • L'aide à la saisie de documentation des procédures devient plus ergonomique
  • L'assistance à la saisie concerne maintenant également les mots-clés du langage.
Status-bar de l'environnement colorée lors d'une session de débug (pour se rappeler qu'on est en débug !)
En version 27, vous n'oublierez jamais que vous êtes en mode débug !
La status-bar de l'environnement change de couleur et passe en orange lors d'une phase de débug.
Pratique !

Un environnement devops intégré
WINDEV, WEBDEV et WINDEV Mobile en version 27 forment un environnement DevOps toujours plus intégré.
Vous disposez de l'ensemble des fonctionnalités nécessaires à la mise en Å“uvre de la démarche DevOps : c'est la fin de l'éparpillement dû aux outils hétérogènes.
Vous disposez de tous les outils intégrés pour gérer la méthodologie DevOps : gestion du cycle de vie, sprints, tests, intégration continue, déploiement, livraison continue, exploitation, retours clients, ...
Ne cherchez plus où est le code : arbre de code dans les états
La nouveauté permettant d'identifier les champs qui contiennent du code est indispensable dans l'éditeur d'états!
En effet, dans l'éditeur d'états le code peut être placé dans différents traitements de l'état.
La reprise d'un état réalisé il y a plusieurs années ou par un autre développeur est ainsi facilitée en version 27.
Etat gantt : encore plus de détails
L'impression d'un état Gantt est une fonctionnalité appréciée.
La version 27 apporte des possibilités de paramétrage supplémentaires :
  • il devient possible d'afficher le numéro de semaine
  • le jour courant peut être matérialisé.
Editeur d'états : flouter ou biffer une zone en aperçu
Dans un aperçu avant impression d'état (visualisateur de rapport), une fonctionnalité de floutage fait son apparition.
L'utilisateur final peut flouter ou recouvrir une ou plusieurs zones, en général des zones confidentielles, avant de diffuser ou d'imprimer l'état.


Editeur d'états : flouter ou biffer une zone par programmation
La nouvelle propriété WLangage Occulté et les nouvelles constantes Flou et Biffure permettent d'indiquer le nom de la zone ou des champs à flouter (ou à recouvrir) lors de l'impression d'un état.
Le niveau de flou est paramétrable.
L'intelligence artificielle analyse photos et images
La version 27 propose un moteur d'intelligence artificielle qui permet la détection d'objets sur des images.
La famille de fonctions IA IADétecte et IAModèleDétecte, et les nouveaux types WLangage IARésultatImage, et IAModèleRéseauDeNeurones, permettent une programmation facile.
82 objets par défaut + vos propres objets
Note : nous ne sommes pas des objets, mais le concept d'objet inclut également les êtres vivants!
82 objets sont proposés en standard : visage, être humain, chien, chat, table, voiture, plaque d'immatriculation, ...
Il est possible de définir soi-même des objets à détecter. Il faudra dans ce cas fournir le modèle de reconnaissance de l'objet.
La programmation
Il y a 3 usages habituels utilisant la liste des objets standard :
  • détecter tous les objets de l'image
  • détecter un objet donné dans l'image : tous les chiens, toutes les voitures, toutes les plaques d'immatriculation...
  • détecter une liste d'objets donnée.
La fonction WLangage IADétecte renvoie un tableau de IARésultatImage contenant le type de l'objet, les coordonnées du polygone qui contient l'objet et l'indice de confiance.
La programmation utilisant des modèles personnalisés renvoie une matrice qui dépend du modèle fourni.
Exemples d'utilisation
Les exemples d'utilisation de la détection automatique d'objets sont nombreux :
  • Floutage automatique d'objet : visage, plaque d'immatriculation...
  • Détecter la présence d'un visage dans une photo de profil
  • Recadrer un visage
  • Décompte automatique de légumes
  • Classification d'images
  • Comptage
  • ...
Compilation en mode multithread : encore plus rapide
Le mode de compilation multithread apparu en version précédente permet une compilation accélérée.
La version 27 est encore plus rapide car elle utilise par défaut la totalité des coeurs disponibles.
J'ai du coeur ! compilation et génération, choix du nombre de coeurs à utiliser
On vient de le voir, en version 27 la compilation multithread utilise par défaut tous les coeurs du processeur.
Il est possible d'indiquer le nombre de coeurs à utiliser, ce qui permet des affinages de performances pour gérer des cas particuliers, et permettre à d'autres processus en cours sur la machine de continuer à s'exécuter à vitesse raisonnable.
Fonctions de la famille "ouvre" : paramètres optionnels (nommés)
La fonction WLangage Ouvre utilise un nombre de paramètres variable.
Pour éviter la saisie de tous les paramètres, il devient possible de nommer les paramètres, et ainsi de ne saisir que ceux qui sont utilisés.
Nouveaux opérateurs /= et *=
Les opérateurs /= et *= font leur apparition.
Tout comme les opérateurs += et -=, ils simplifient le code source.
Commentaires au milieu d'unE ligne de code : entre /* et */
La saisie de commentaires offre un nouveau mode.
/* indique le début du commentaire, et */ indique la fin du commentaire, qui peut être multiligne.
Cette syntaxe permet également de passer en commentaire une partie de code en milieu de ligne!
Exemple :
SI Client. Email <> "" /* _et_ client.VIP = Vrai */ ALORS
Chaines multilignes définies par des guillemets " "
Pour faciliter la saisie des chaînes de caractères multilignes, la syntaxe par guillemet " est maintenant offerte par la version 27.
Appel des lambdas, Getter et setter : optimisations
En version 27, les appels de lambdas, les getter et les setter de propriétés sont plus rapides.
N++ et ++N, N-- et --N
Vous connaissez la différence entre les opérateurs ++ placés avant ou après la variable.
N++ effectue l'incrémentation après l'évaluation de l'expression, alors que ++N effectue ces incrémentations avant l'évaluation de l'expression.
Et ça change tout !
En version 27, les 2 syntaxes sont proposées, pour ++ et --
Expressions régulières : recherche et remplace
Les expressions régulières sont un concept très puissant, et permettent un code très concis.
En version 27, les expressions régulières deviennent encore plus puissantes.
Il est maintenant possible de rechercher une chaine dans une autre chaîne à partir d'une expression régulière, et même de remplacer cette chaîne !
Le tout en une seule ligne de code.
Les nouvelles fonctions WLangage RegExRecherche et RegExRemplace font ainsi leur apparition.
Algorithme de Luhn : vérifier ou calculer le crc
L'algorithme de Luhn permet de calculer le CRC d'un numéro de carte bancaire, et de détecter une saisie ouvertement fausse.
Deux fonctions WLangage font leur apparition en version 27 pour calculer ce CRC et pour vérifier ce CRC : LuhnCalcule et LuhnVérifie.
Sécurité des mots de passe : hachage PBKDF2
Le hachage PBKDF2 est un mode de hachage très puissant.
Son premier usage est de hacher avec encore plus de sécurité des données, et en particulier des mots de passe.
Ce type de hachage permet également d'obtenir une série de clés dérivées (des mots de passe) à partir d'un mot de passe.
Les fonctions hashChaîne et hashFichier acceptent une nouvelle constante PBKDF2 qui attend le sel, le nombre d'itérations et la taille de la clé en sortie.
Manipulation des documents html par programmation : évolutions utiles
Les fonctions WLangage de manipulation de document HTML sont déjà très puissantes.
La version 27 propose de nouvelles propriétés qui simplifient encore le code :
  • La propriété Indice permet de connaître l'indice du noeud HTML.
  • La propriété Parent permet de retrouver le parent d'un noeud
Les nouvelles fonctions WLangage qui font leur apparition pour HTML sont également très utiles :
HTMLInsèreAvantHTMLInsèreAprès
HTMLEncadreHTMLEncadreTousLesFils
HTMLDésencadreTousLesFilsHTMLSupprime
HTMLInsèrePremierFilsHTMLInsèreDernierFils
HTMLSupprimeFilsHTMLModifieAttribut
HTMLModifieAttributHTMLSupprimeAttribut

La fonction IniEcrit se sépare de NumériqueVersChaîne
La fonction historique IniEcrit n'acceptait à ce jour qu'une chaine comme paramètre.
Depuis la version 27, la fonction IniEcrit accepte un paramètre de type Entier, Réel, Booléen...
Non-utilisation de syntaxe préfixée : possibilité d'afficher une erreur de norme de programmation
Lorsque la norme de programmation d'un projet prévoit l'usage obligatoire de la syntaxe préfixée (champ.fonction), une erreur de norme de programmation peut être générée à la compilation.
Nouvelle directive de compilation
Une nouvelle directive de compilation permet de spécifier le mode 32 bits ou 64 bits en compilation.
Cela est utile en particulier lors de l'usage d'API externes qui ne fonctionnent que dans un mode, soit 32 bits, soit 64 bits.
Flouter une zone d'une image
La nouvelle fonction WLangage dFlou permet de flouter le rectangle dont les coordonnées sont passées en paramètre.
Un flou de type gaussien est appliqué.
Le rayon du flou est à passer en paramètre.
Famille de fonctions de compression Zip : messages d'erreur plus précis
Les messages d'erreur sur les fonctions de la famille Zip deviennent plus précis et permettent ainsi de comprendre plus rapidement les éventuels problèmes qui peuvent se produire.
Fonction CrypteStandard : passer le vecteur d'initialisation en paramètre
La fonction WLangage CrypteStandard gère l'ensemble des paramètres de cryptage (de chiffrement) de manière automatique.
Dans certains cas, le vecteur d'initialisation du cryptage est imposé par le matériel avec lequel l'application communique.
Ce vecteur d'initialisation peut maintenant être passé en paramètre de la fonction.
Divers
  • Le type Description d'API supporte maintenant les entiers sur 1 ou 2 octets, signés ou non signés.
  • Il devient possible de modifier les informations Exif des images
  • Les applications compilées en 32 bits peuvent également accéder à la Registry 64 bits, et les applications compilées en 64 bits peuvent également accéder à la Registry 32 bits.
Webservice : forcer la norme http2
Il existe 2 normes HTTP : http1 et http2.
Lors de l'appel à un serveur, le client et le serveur "négocient" pour se mettre d'accord sur la version du protocole à utiliser.
Mais certains serveurs n'acceptent pas la négociation : ils ne communiquent qu'en http2.
La version 27 permet de forcer l'utilisation de http2.
En-tête soap : ajout de noeud xml
Ajouter un noeud dans un en-tête de webservice SOAP s'effectue avec la nouvelle fonction SoapAjouteEntête.
Requête HTTP de type delete
Dans certains cas, les requêtes HTTP de type Delete peuvent nécessiter le passage d'un contenu.
En version 27, il est possible de passer ce contenu.
XML
Nouvelles fonctions JSONVERSXML et XMLVERSJSON
En version 27, les nouvelles fonctions WLangage JSONVersXML et XMLVersJSON permettent d'effectuer automatiquement une conversion d'un format à l'autre.
DocJSON est un JSON = fChargeTexte(FichierJSON)
DocXML est un xmlDocument
DocXML = JSONVersXML(DocJSON)
Un nouveau type WLangage JSONXMLConvertisseur propose un ensemble d'options pour paramétrer la conversion et permettre une conversion personnalisée : conversion des attributs XML, des Namespaces, balises vides...
POO
Amélioration de la vitesse d'accès aux membres structurés et membres de type tableau : gain 30%
Lors d'agrégation (membres de type objet), les accès en cascade sont accélérés en version 27; le gain généralement constaté est de 30%.
Il en est de même pour les membres constitués de tableaux d'objets.
Le gain est intéressant dans le cas d'utilisation massive de la POO.
Amélioration de la vitesse d'accès aux propriétés
En version 27, la vitesse d'accès aux propriétés a été augmentée. Le gain est supérieur à 20%.
"Pour tout" polymorphe
Pour un tableau d'objets qui contient des classes dérivées, il devient possible de parcourir ce tableau d'objets uniquement sur les objets d'une classe donnée : c'est le POUR TOUT polymorphe.
tabVéhicules est un tableau de CVéhicule
//Calcul du nombre total de colis expédiés
NbreTotalColisExpédiés est un entier
POUR TOUT clCamion DE TYPE Camion DE tabVéhicules
NbreTotalColisExpédiés += clCamion.NbreColisExpédiés
FIN
Coder l'opérateur d'égalité et de comparaison devient plus simple
Le codage des 2 opérateurs de comparaison < et > est plus simple en version 27.
De nouvelles directives de compilation permettent de définir les membres à comparer de manière déclarative ainsi que l'ordre de comparaison.
PROCÉDURE GLOBALE CompareVéhicule(Voiture1, Voiture2)
<comparaison>
Compare(Motorisation)
CompareOrdreDécroissant(Consommation)
CompareOrdreCroissant(Autonomie)
POO : divers
  • L'opérateur de comparaison par défaut peut être défini.
  • Les attributs <Utile> et <ForceDestructeur> sont maintenant disponibles pour les classes.
IOT
IOT : support des fonctions Bluetooth low Energy (le)
Le Bluetooth Low Energy permet de réduire la consommation électrique du dispositif.
Le protocole BlueTooth Low Energy est maintenant supporté par WINDEV, en plus de WINDEV Mobile.
Python : appel natif python en WLangage
L'appel de code Python est maintenant natif depuis le WLangage, comme les assemblages .Net, les Webservices SOAP, ...
L'import du.py dans l'environnement permet la reconnaissance automatique de toutes les fonctions de ce script.py par l'éditeur de code.
Chaque fonction du script est alors considérée comme une fonction native du WLangage.
L'initialisation du moteur Python s'effectue à l'aide de la fonction PythonInitialise.
// == Le code WL ==
sResultat est une chaîne
sResultat = solveur("3x**2-2x+5")
// == Le code Python ==
from sympy.solvers import solve
from sympy import sympify
def solveur(equation):
return str(solve(sympify(equation)))[2:-1]
Pour plus de détails, consultez :
Optimisation de la vitesse et de la consommation mémoire des requêtes
La version 27 de HFSQL offre des améliorations de performances sur plusieurs types de requêtes.
Les requêtes "full scan" contenant des dates sont 30% plus rapides.
Les requêtes utilisant des ordres SQL "TOP" ou "BOTTOM" ou "TOP/BOTTOM" utilisent beaucoup moins de mémoire.
Transactions par étapes : "save point", pour des transactions avec étapes
Besoin d'imbriquer des transactions ?
L'utilisation de points de sauvegarde (SavePoint) permet de revenir à un état intermédiaire de la transaction.
Une transaction sera donc découpée en plusieurs étapes.
Au cours de la transaction, la fonction WLangage HTransactionPointDeSauvegarde permet de définir et nommer un point de retour possible.
Pour annuler la partie de transaction qui a eu lieu après ce point, il suffit d'utiliser la fonction HTransactionRetourneAuPointDeSauvegarde.
Il est possible de définir plusieurs SavePoint dans une même transaction.
Nouveau type "alias de fichier" pour simplifier la programmation
HFSQL propose depuis toujours le concept d'alias.
Un alias permet d'effectuer un ou plusieurs autres parcours sur un fichier déjà utilisé sans impacter le ou les parcours en cours.
L'utilisation des alias se simplifie en version 27.
Il suffit maintenant d'écrire la ligne :
Clients2 est un Alias de Clients

et le tour est joué !
HExporteJSON
En version 27 la fonction HExporteJSON permet également d'exporter le fichier de données ou la requête vers un type JSON du WLangage, et plus obligatoirement vers un fichier sur disque.
Procédures stockées : renvoi d'enregistrements ou de tableaux d'enregistrements
Une procédure stockée peut renvoyer des enregistrements ou un tableau d'enregistrements.
La programmation devient bien plus... structurée.
Réplication de serveur : limitation des notifications répétitives
Lors d'une impossibilité de connexion au serveur, un message est envoyé.
Le nombre de notifications d'impossibilité de connexion au serveur s'auto-limite pour ne pas remplir votre boîte mail du même message.
Réplication universelle assistée installable sur mon propre serveur d'application, en windows et en linux
La Réplication Universelle Assistée est maintenant également installable sur un Serveur d'Application WEBDEV. Ce serveur peut être sous Windows ou sous Linux.
Cryptage (chiffrement) AES 192 et AES 256
La NSA demande un cryptage (chiffrement) AES 192 minimum pour des données classées "Top Secret".
La version 27 de HFSQL propose les modes 192 et 256 du cryptage AES.
Divers
  • Dans le cadre de la Réplication Serveur, il devient possible de renommer un ou des serveurs.
Sécurité : rubrique de type "mot de passe" sans mot de passe stocké (mot de passe hashé/salé)

En version 27, un nouveau type de rubrique évolué HFSQL fait son apparition : le type évolué MotDePasse.
Ce nouveau type de rubrique ne mémorise pas le mot de passe lui-même.
Le mot de passe saisi par l'utilisateur final n'est pas sauvé dans la rubrique.
Il n'y a donc aucun risque que ce mot de passe soit un jour piraté dans la base de données.
Comment est-ce possible ?
Avant son stockage, le mot de passe sera à la fois salé et hashé.
Le salage est une opération qui ajoute une chaîne aléatoire au mot de passe. Lorsque 2 utilisateurs saisissent le même mot de passe, leur mot de passe salé est donc différent.
Ce mot de passe salé sera ensuite hashé, ce qui le rend introuvable.
C'est le résultat de ces opérations irréversibles qui est conservé dans la base de données, et non pas le mot de passe original.
A partir du résultat de ces opérations, il est impossible de reconstituer le mot de passe, mais il est toujours possible de vérifier si un mot de passe correspond au mot de passe original. Le mot de passe ne peut pas être lu, mais il peut être comparé.
Le type de hash, la taille du résultat et le nombre d'itérations sont paramétrables.
Grâce à ce nouveau type de rubrique, il n'y a plus aucune possibilité pour un pirate de voler des mots de passe en ayant accès au fichier de données.
Comment savoir si un mot de passe saisi est correct
Pour savoir si un mot de passe saisi est correct, il suffit de comparer (avec l'opérateur = ) la chaine saisie et le contenu de la rubrique Mot de Passe.
Le WLangage étant un L5G, il connaît les types des opérateurs comparés et effectue automatiquement les opérations nécessaires. Il n'y a rien de spécial à programmer !
L'ensemble des fonctions WLangage s'adapte automatiquement à ce type de rubrique particulier.
Détails pratiques, la rubrique est nullable et n'est pas indexée.
La propriété DateDernièreVérification renvoie la date de dernière écriture du mot de passe dans le fichier de données.
2 nouvelles fonctions SQL
2 nouvelles fonctions SQL concernant les reprises de transactions font leur apparition en version 27.
ROLLBACK TO SAVEPOINTAnnule les opérations effectuées durant la transaction jusqu'à un point de sauvegarde.
SAVEPOINTDéfinit et nomme un nouveau point de sauvegarde à l'intérieur de la transaction en cours.
Syntaxe sql : [% %] pour remplacer une variable par sa valeur
Les requêtes SQL saisies dans le code acceptent une nouvelle syntaxe très utile : [% nom_de_variable %].
A l'exécution, le nom de variable compris entre les "%" sera remplacé par la valeur de cette variable.
Cela évite d'avoir à déclarer un paramètre et à l'affecter.
HFSQLDrive : support des procédures stockées
En version 27, HFSQLDrive supporte les procédures stockées.
Cette fonctionnalité optionnelle sera disponible en début d'année.
Amélioration de la modification automatique des fichiers de données (sDD)
En version 27, HFSQL Cluster améliore le support des modifs auto :
  • Gestion des liaisons
  • Gestion des fichiers sécurisés
  • ...
Améliorations diverses
  • Install améliorée
  • Nouvelle fonction WLangage hClusterNoeudMaître pour connaître le maître du cluster
Renommer un serveur
HFSQL Spare est une forme de sauvegarde quasi-temps réel d'un serveur.
La version 27 supporte le renommage du serveur spare.
Il suffit d'indiquer le nouveau nom dans le Centre de Contrôle HFSQL.
Réindexation des fichiers de données non bloquante
Le Centre de Contrôle HFSQL bénéficie de nombreuses améliorations pratiques.
En particulier, le Centre de Contrôle HFSQL n'est plus bloqué par une demande de réindexation d'un fichier de données.
C'est bien plus pratique.
Save point de transaction
Les Connecteurs Natifs pour Oracle et MySQL proposent le concept de "SavePoint" pour les transactions.
Boucles pourtout avec condition sur rubrique : vitesse accélérée
Les boucles de parcours de fichiers de données de type PourTout qui utilisent une condition sont plus rapides avec les Connecteurs Natifs en version 27.
Sélection des rubriques : loupe de recherche
Dans la fenêtre principale de l'éditeur graphique de requêtes, le mode treeview propose maintenant une loupe de recherche.
La sélection des rubriques est ainsi plus rapide.
Une loupe de recherche fait également son apparition dans le choix des rubriques de sortie.
Chorus pro, pour facturer l'État Français : nouvelles API
La France a rendu obligatoire la facturation électronique pour facturer les services de l'état.
Pour le dépôt et le suivi des factures, l'état français a mis en place le système Chorus Pro. C'est l'outil de gestion des dépenses et des recettes non fiscales des services de l'État.
Toutes les sociétés doivent utiliser Chorus Pro pour transmettre leurs factures aux services de l'état français.
La version 27 prend en compte les dernières modifications des API et protocoles Chorus Pro, et facilite l'automatisation du dépôt des factures.
DMP : le dossier médical (France) : suivi des évolutions de norme
Dans le domaine médical, la France propose le Dossier Médical Partagé (DMP) qui est un carnet de santé numérique qui conserve et sécurise les informations de santé d'un individu : traitements, résultats d'examens, allergies...
Il permet de partager ces informations avec les professionnels de santé.
Les normes et les interfaces du DMP évoluent sans cesse. La version 27 permet de se maintenir à jour !
Carte vitale (France) : API de lecture des données

En version 27, un projet WLangage de lecture des informations d'identification du ou des bénéficiaires contenus dans une carte Vitale est fourni.
Les informations accessibles sont le nom, le nom de naissance, le prénom, le numéro de sécurité sociale, le rang de naissance...
Le code source fourni peut être personnalisé et intégré dans votre projet.
Carte CPS (France) : API de lecture des données
Une carte CPS est une carte à puce d'identification utilisée par les professionnels de santé.
La version 27 fournit un code source WLangage effectuant la lecture d'une carte CPS.
Masque de saisie bitcoin
En version 27, un nouveau masque de saisie fait son apparition : le masque de saisie Bitcoin.
Le masque permet la saisie dans l'unité de son choix : BTC, mBTC, Satoshi.
Rappel
Le concept de Télémétrie vous permet de collecter et d'agréger des informations, nominatives ou anonymes, sur l'usage réel qui est fait de vos applications: choix de menu sélectionnés, fonctionnalités utilisées, durée des traitements et des requêtes, bugs éventuels, horaires d'utilisation...
La télémétrie vous permet également de connaître la configuration matérielle des utilisateurs finaux et les versions d'OS, ce qui est très utile en particulier pour les éditeurs de logiciels.
En version 27, la Télémétrie évolue.
Copier/coller de widgets personnalisés
Un Widget permet d'afficher une valeur prise par un capteur personnel.
En version 27, il devient facile de créer de nouveaux Widgets à partir d'un Widget existant.
Accès aux tests unitaires facile depuis le bandeau de code

La création de tests unitaires est maintenant plus facile : elle peut s'effectuer directement depuis le bandeau de code.
De plus, lorsque des tests unitaires existent pour une fenêtre, ils apparaissent maintenant dans le bandeau et peuvent être lancés directement depuis l'éditeur de code.
Cela incite à créer et rejouer des tests, donc à améliorer la qualité de son code et de ses applications.
Stop sur TestVérifie, pour se positionner automatiquement sur l'itération qui bogue
Un test donné peut être exécuté avec des centaines ou des milliers de données différentes (les itérations).
La fonction WLangage TestVérifie permet de s'assurer que le résultat d'un test unitaire est correct.
En version 27, lors d'un échec de la fonction TestVérifie, le test s'arrête automatiquement dans le débogueur sur l'itération en cours : vous savez quel est le jeu de données qui était utilisé pour le test (itération en cours), le débogage est plus simple.
Test automatique de composant interne
En version 27, il devient possible de positionner des tests automatiques dans les composants internes.
Surveillance de l'état "smart" des disques durs
En version 27, le Robot de surveillance surveille également l'état physique des disques durs.
Si le disque présente des risques de défaillance, une alerte est générée.
Surveillance des clusters WEBDEV
En version 27, le Robot de surveillance surveille également les clusters WEBDEV.
Une alerte est générée dès qu'un souci est détecté.
GDSDrive : connexion aux centres de contrôle
GDSDrive propose de gérer les Centres de Contrôle.
En version 27, le Robot peut adresser des messages d'alerte aux utilisateurs enregistrés dans GDSDrive.
Gestion des serveurs SMTP sécurisés
En version 27, il devient possible d'utiliser des serveurs SMTP sécurisés (ports 465 et 587) pour envoyer les alertes.
REDIS
2 nouvelles fonctions font leur apparition pour les bases Redis.
RedisAffecteModifie la valeur d'une clé sur un serveur Redis.
RedisRécupèreRécupère la valeur d'une clé sur un serveur Redis sous forme de chaîne.
Et de nombreuses autres nouveautés
Cette version 27 propose également de nombreuses autres nouveautés, que nous vous laissons découvrir lorsque vous aurez commandé et reçu votre package...
Version minimum requise
  • Version 27
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 08/02/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale