PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Nouveauté WINDEV, WEBDEV, WINDEV Mobile 25 !
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
101 Champs Métier "prêts à l'emploi" : le concept
La version 25 innove avec un nouveau concept de champ : le Champ Métier. Il s'agit d'un champ (ou d'un ensemble de champs regroupés) "prêt à l'emploi", incluant si nécessaire du code WLangage "métier".
Grâce au Champ Métier, vous ajoutez d'un clic des comportements sophistiqués dans vos applications.
101 champs métier sont disponibles en version 25 : Twitter, Instagram, Signature, Compte à rebours, Sélection de dates, Menu à tiroirs, Workflow, Avertissement Cookie, Suivi de process ...
Champ Métier : entièrement modifiable
Un Champ Métier est composé de :
  • 1 ou plusieurs champs.
  • du code WLangage.
  • dans certains cas, de fichiers de données (tables) nécessaires à leur traitement (base des codes postaux par exemple).
Tout est facilement modifiable et personnalisable : code, position, taille, ancrage, lien aux données ...
Les Champs Métier sont bien entendu librement utilisables et distribuables avec vos applications.
Le code livré est le plus générique et le plus simple possible afin que vous puissiez le modifier facilement.
Champ Métier : faciles à trouver
Les Champs Métier sont proposés comme les autres champs, mais ils sont visualisables dans une fenêtre dédiée de l'éditeur.
Cela permet de mieux comprendre leur intérêt et leur destination d'un seul coup d'œil.
Le choix de Champs Métier est facile depuis l'environnement
Le choix de Champs Métier est facile depuis l'environnement
Champ Métier : exemple de code
Le code inclus dans un Champ Métier est clair et facilement modifiable.
Selon la nature du traitement à effectuer, le code contient de quelques lignes à plusieurs centaines de lignes.
Voici un exemple de code tiré du Champ Métier "Bouton avec Jauge".
Rajoutez votre code dans TraitementLong et vous disposez d'une superbe jauge non bloquante dans votre application.
BTN_Traitement..Etat = Grisé
JAUGE_Progression..Visible = Vrai
 
TraitementLong()// traitement long effectué dans un thread
 
PROCÉDURE INTERNE TraitementLong () <thread>
// TODO code du traitement long ici
// xxx
 
// Mise à jour de l’UI dans le thread principal
FinTraitementLong()
FIN
 
// Mise à jour des champs de l’interface (UI)
PROCÉDURE INTERNE FinTraitementLong <thread principal>
JAUGE_Progression..Visible = Faux
BTN_Traitement..Etat = Actif
FIN
Champ Métier : il s'adapte automatiquement au gabarit de votre application
Lorsqu'un Champ Métier est déposé dans une fenêtre ou une page, il s'adapte immédiatement à son gabarit ou à son ambiance.
L'exemple ci-contre présente le Champ Métier Timeline déposé dans 3 applications différentes.
Une fois le Champ Métier inséré dans la fenêtre, il suffit de redimensionner le champ, puis d'adapter le code WLangage inclus dans le champ.
Ici l'adaptation consiste à fixer le nombre d'étapes et le texte affiché.
Pour cet exemple, le Champ Métier
Pour cet exemple, le Champ Métier "suivi de Process" TimeLine Vertical (et son code)
est déposé dans 3 applications différentes
101 Champs Métier
Retrouvez la liste des 101 Champs Métier disponibles pour chaque cible dans leur partie respective :
  • nouveauté 167 en pages 40 à 43 pour WINDEV 25.
  • nouveauté 670 en pages 56 & 57 pour WINDEV Mobile 25.
  • nouveauté 750 en pages 72 & 73 pour WEBDEV 25.
Profitez de ces nouveaux champs !
Présentation
Le champ Traitement de texte évolue agréablement en version 25.
Champ Traitement de texte (TT) : édition des styles
Les styles de texte peuvent maintenant se créer et s'éditer d'un simple clic droit.
L'édition de styles est visuelle
L'édition de styles est visuelle
Champ Traitement de texte : table des matières
En version 25, il devient possible de générer automatiquement une table des matières sur un document.
La génération automatique de la table des matières est basée sur les styles utilisés dans le document.
La génération de la table des matières peut être demandée par programmation.
Les tables des matières des documents ".DOCX" existants sont affichées.
Table des matières automatiques
Table des matières automatiques
Champ Traitement de texte : gestion des balises SDT
Les balises SDT (Standard Document Tag) sont prises en compte par le champ TT en version 25.
Le texte compris entre les balises SDT est traité.
Champ Traitement de texte : le numéro de page est affiché dans le ruban
En version 25, le numéro de la page en cours, ainsi que le nombre total de pages du document, sont affichés dans le ruban.
Le champ du numéro de page est en saisie. La saisie d'un numéro de page positionne directement sur cette page.
La bulle d'information de la cage de l'ascenseur de parcours du document indique également le numéro de la page en cours.
Le nombre de pages est affiché dans la barre
Le nombre de pages est affiché dans la barre
Champ Traitement de texte : divers
La couleur des caractères de contrôle peut être modifiée.
Champ Tableur : commentaires sur les cellules
En version 25, le champ Tableur permet de saisir et d'afficher les commentaires associés à une cellule.
Les commentaires présents dans les documents XLSX existants sont gérés.
Commentaire de cellule
Commentaire de cellule
Champ Tableur : déplacement de cellules à la souris
En version 25, l'utilisateur final peut déplacer les cellules et les groupes de cellules à la souris.
Il suffit de sélectionner le bord.
Champ Tableur : copier/coller de texte avec RC et TAB
En version 25, le copier/coller de texte prend en compte les RC (retours chariots) et les TAB (tabulations) des textes.
Chaque RC rencontré envoie le texte suivant à la ligne en dessous.
Chaque TAB rencontré envoie le texte suivant dans la cellule de droite.
Champ Lecteur PDF : sauvegarde par l'utilisateur final
Le champ Lecteur PDF permet maintenant la sauvegarde du fichier visualisé.
C'est par exemple utile lorsque l'utilisateur final a effectué une rotation de page.
Cette fonctionnalité peut être débranchée.
Champ Lecteur PDF : ascenseur
Nouveauté utile, la cage d'ascenseur du champ Lecteur PDF indique maintenant le numéro de la page en cours (et le nombre total de pages).
Nouveau Champ Graphe Histogramme comparatif (Pyramide des âges, ...)
Un nouveau type de graphe vient enrichir la famille en version 25 : le graphe Histogramme comparatif.
Ce type de graphe est surtout utilisé pour comparer 2 séries.
L'exemple le plus immédiat est une pyramide des âges.
Le nouveau graphe histogramme comparatif
Le nouveau graphe histogramme comparatif
Un graphe pyramide des âges
Un graphe pyramide des âges
Nouveau Champ Graphe Histogramme comparatif : fonctionnalités
Le nouveau champ graphe "Histogramme comparatif" propose des fonctionnalités riches :
  • positionnement des étiquettes : gauche, centré, droite.
  • texte de la barre centré : soit les 2 barres se touchent pour former une seule barre avec le texte dans la barre, soit les 2 barres sont espacées, avec le texte au milieu.
  • fixer les graduations de l'axe horizontal.
  • définition de la couleur de chaque série de barres : gauche, droite.
  • possibilité de définir la couleur d'une barre donnée.
  • quadrillage.
  • position et visibilité du titre.
  • position et visibilité des légendes.
  • ...
Nouveau Champ Graphe Histogramme comparatif : programmation
Le graphe Histogramme comparatif se remplit comme les autres graphes par programmation ou par binding.
En plus des fonctions WLangage habituelles de la famille gr, la nouvelle fonction grComparatifPositionSérie permet de gérer les spécificités du nouveau graphe Histogramme comparatif.
Magnétisme intelligent
En version 25, le magnétisme entre les champs est repensé.
Les fonctionnalités proposées font un bond en avant.
En effet, le magnétisme est maintenant basé sur l'ensemble des champs, et plus simplement sur les champs avoisinants.
Exemple de magnétisme sur le bord gauche du champ directement au dessus
Exemple d'espacement vertical normalisé, et de largeur de champ homogénéisée
Magnétisme intelligent : exemple de nouveautés
Voici quelques exemples de comportements du magnétisme intelligent :
  • Le champ de référence change automatiquement au fur et à mesure des déplacements et des magnétismes refusés.
  • Ajout d'un champ sous un groupe de champs : l'espacement vertical par défaut est celui des champs au-dessus.
  • Nouveau dessin des poignées et des cadres, plus ergonomique.
  • L'espacement entre les champs est indiqué.
  • En fonction du déplacement d'un champ, l'alignement du champ est proposé successivement en fonction de tous les autres champs présents dans la fenêtre.
  • La barre de l'alignement permet de déterminer sur quel champ l'alignement est proposé.
  • La barre d'alignement est beaucoup plus fine, ce qui permet un alignement plus agréable.
  • Les magnétismes proches sont différentiés : le déplacement de champs avec des magnétismes proches s'effectue pixel par pixel; de même la sortie d'un magnétisme n'effectue pas de saut brutal et s'arrête au magnétisme proche suivant, au pixel près.
  • ...
WINDEV, WEBDEV et WINDEV Mobile dans le même environnement : le cross-plateformes puissance 25
Vous le savez, il est possible d'utiliser WINDEV, WEBDEV et WINDEV Mobile dans le même environnement.
Les éléments des projets sont immédiatement communs aux 3 plateformes : analyses, requêtes, états, procédures, classes, code, ...
Fenêtres, pages, 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, ni de changer d'environnement.
Rappel : il est nécessaire de posséder une licence du logiciel concerné.
WEBDEV dans WINDEV
Nouveau en version 25 : lorsque les projets WEBDEV sont édités dans WINDEV, la mise à jour de l'ambiance du projet WEBDEV directement depuis l'environnement de WINDEV est possible.
WINDEV Mobile dans WINDEV
Les gains de productivité de l'environnement de WINDEV Mobile sont également accessibles depuis l'environnement de WINDEV.
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 et WEBDEV répondent à ce besoin de manière idéale.
L'assistant de migration des applications WINDEV en sites WEBDEV évolue en version 25.
Voir nouveauté 813.
Le module de facturation d'accès à votre site SaaS évolue également en WEBDEV 25.
Voir nouveauté 815.
Rappel
Rappel : WINDEV permet de saisir des "Règles Métier" (parfois appelées "Règles de Gestion").
Il s’agit d’explications sur la règle de traitement à apporter à une rubrique, un code, une fenêtre, un traitement, un calcul, ...
Ces Règles Métier peuvent servir automatiquement d’aide aux utilisateurs finaux à travers le picto AMI.
Partie publique, partie privée (non affichée) 
En version 25, une Règle Métier peut contenir une partie visible, et une partie confidentielle.
L'aide qui sera automatiquement affichée par le picto AMI sera la partie déclarée visible de la Règle Métier.
Règle Métier en plusieurs langues
En version 25, les Règles Métier peuvent être saisies dans plusieurs langues.
L'aide affichée par le picto AMI sera dans la langue d'exécution de l'application.
Architecture de projet : les composants internes contiennent leurs ressources : webservices, XML, JSON, assemblages...
En version 25, les composants internes contiennent maintenant toutes leurs dépendances : Analyse, Fenêtres, Pages, Etats, Collections de procédures, Requêtes, Images ...
En version 25, tous les autres éléments suivants sont également encapsulés :
  • Webservice.
  • XML.
  • JSON.
  • YAML.
  • Assemblages.
  • ...
Il n'est donc plus nécessaire d'intégrer ces éléments au projet hôte.
Les composants internes sont ainsi totalement autonomes pour un partage aisé.
Pour compatibilité l'ancienne méthode est toujours supportée.
Projet de taille importante : bouton droit "déplace dans un dossier"
Dans les projets de taille importante, l'explorateur de projets peut être très très chargé et très très long !
La manipulation de déplacement d'un élément (fenêtre, état, ...) vers un dossier peut être fastidieuse dans le parcours de l'explorateur d'un grand projet.
En version 25, un clic droit sur l'élément à déplacer propose la liste des dossiers de destination.
Modèle de fenêtres, pages : possibilité de sélectionner directement les champs
En version 25, il devient possible de sélectionner directement à la souris les champs qui proviennent d'un modèle.
Le champ n'a pas à être surchargé pour être sélectionnable.
Portefeuille de projets : recompilez ou créez les branches de plusieurs projets en 1 clic
En version 25, il devient possible de créer des "portefeuilles de projets".
Un portefeuille de projets est un ensemble de projets logiquement regroupés.
Ces projets ont souvent des liens fonctionnels : ils partagent des composants, des classes, des collections de procédures, ...
Un portefeuille permet d'effectuer des actions en bloc sur le portefeuille entier, comme par exemple :
  • recompilation en nouvelle version,
  • création de branches,
  • ...
Finies les manipulations à répétition lors d'un changement de version ou d'un Sprint !
Catalogue d'images : aéré
Le catalogue d'images de la version 25 est beaucoup plus agréable et intuitif à utiliser.
Vous trouverez plus facilement les images que vous cherchez !
Le catalogue d'images est encore plus intuitif
Le catalogue d'images est encore plus intuitif
Votre environnement en Français, en anglais et en espagnol (en standard)
La version française permet de choisir la langue de l'environnement :
  • français.
  • anglais.
  • espagnol.
Choisissez votre environnement
Choisissez votre environnement
Notez que les dates de disponibilité des différentes langues sont différentes.
La langue du WLangage est à choisir parmi français et anglais.
Le magnétisme fait son apparition dans l'éditeur d'analyses
En version 25, le magnétisme fait enfin son apparition dans l'éditeur d'analyses.
Et bonne nouvelle, il s'agit du super magnétisme de la version 25 avec ses pouvoirs magiques.
Il est enfin facile de présenter un graphe de l'analyse rigoureusement aligné.
Nouveau look pour une nouvelle vie
La représentation des fichiers de données (tables) a été rafraîchie !
Non seulement le graphe de l'analyse est maintenant aligné, mais en plus il est beau.
Look épuré et alignements assistés en version 25
Look épuré et alignements assistés en version 25
GDS : extraction à la première modification
En version 25, il n'est plus nécessaire d'extraire manuellement l'analyse lors d'une modification de rubrique.
A la première modification d'un élément de l'analyse, l'extraction est proposée automatiquement.
Finies les fenêtres grisées !
Création d'une vue matérialisée à partir d'une requête de projet
En version 25, inutile de dupliquer une requête pour créer une vue matérialisée !
Il suffit d'utiliser la requête existante.
Exigence : plateformes cibles
Il devient possible de spécifier sur quelles plateformes doit fonctionner l'exigence :
  • Windows 32 bits.
  • Windows 64 bits.
  • Linux.
  • Web.
  • iOS.
  • Android.
  • ...
Message automatique au changement d'état d'une tâche d'une exigence
Lorsqu'une tâche d'une exigence change d'état, par exemple lorsqu'elle passe en "Terminée", le responsable de l'exigence reçoit automatiquement un message d'information.
Les testeurs associés à l'exigence reçoivent également automatiquement un message quand tous les développeurs ont terminé leurs tâches sur l'exigence.
Le centre de suivi vous prévient !
Le centre de suivi vous prévient !
Création automatique d'exigences et de tâches depuis la messagerie intégrée
Depuis la messagerie intégrée, un message peut devenir une exigence !
Les destinataires du message sont proposés comme récipiendaires des tâches.
Audit statique : nom logique et nom physique différents signalés
En version 25, l'Audit Statique signale les éléments dont le nom logique et le nom physique sont différents.
Cela permet d'éliminer des cas de confusion.
Dossier de programmation : choix du vocabulaire
Le dossier de programmation propose maintenant d'utiliser au choix :
  • le vocabulaire de PC SOFT.
  • un vocabulaire plus générique.
Exemples : en vocabulaire générique, le terme "fichier de données" est remplacé par "table", "rubrique" par "colonne", "champ" par "contrôle", etc.
Cela peut être utile dans le cas d'une réponse à un appel d'offres par exemple.
A l'édition du dossier, il est possible de choisir le type de vocabulaire à utiliser, selon le destinataire.
Nouvelle action : création de branches
En version 25, une nouvelle action de la Fabrique Logicielle permet d'automatiser la création de branches.
Nouvelle action : récupérer la couverture de code
Une nouvelle action de la Fabrique Logicielle permet de récupérer la couverture de code des tests automatiques.
Le compte rendu d'exécution du plan d'action contient l'information.
Nouvelle action : générer un patch
Une nouvelle action de la Fabrique Logicielle permet d'automatiser la création de patch.
Nouvelle action : publication sur dockerhub
En version 25, une nouvelle action de la Fabrique Logicielle permet d'automatiser la publication de la recette d'un site.
Nouvelle action : commentaire
En version 25, une nouvelle action de la Fabrique Logicielle permet de positionner des séparations dans un plan d'action.
La ligne est bien visible, de couleur bleue.
Cette action permet également d'insérer des commentaires dans le compte rendu du plan d'action.
En bleu, une ligne de commentaires
En bleu, une ligne de commentaires
Nouvelle action : publier un composant dans le GDS
En version 25, une nouvelle action de la Fabrique Logicielle permet de publier un composant dans le GDS.
Il est également possible de modifier le répertoire de publication d'un composant.
Nouveautés diverses
Les plans d'action peuvent être lancés manuellement (immédiatement) ou en décalé (planification).
Les planifications sont maintenant modifiables.
Lancement d'application au démarrage du PC
L'install permet de spécifier une application à lancer automatiquement lors du démarrage du PC (voir nouveauté 227).
Un toast apparaît de temps en temps pour rappeler l'existence des FAA à vos utilisateurs finaux
En version 25, un toast apparaît de temps en temps (pas trop souvent pour ne pas gêner, genre une fois par mois) pour rappeler la présence des FAA aux utilisateurs finaux.
L'apparition de ce toast peut être supprimée par l'appel de la fonction FAADésactive(Toast).
L'apparition de ce toast est également automatiquement désactivée lorsque le code fait appel à la fonction FAADésactive(Tout).
Un toast discret mais utile
Un toast discret mais utile
Partage de la base des comptes et des autorisations
La base de données des comptes et des autorisations peut être nativement partagée entre les Groupware Utilisateur de WINDEV, WEBDEV et WINDEV Mobile.
Cela permet par exemple de créer confortablement un compte dans un site WEBDEV, pour ensuite l'utiliser sur mobile.
Voir nouveauté 700.
Magnétisme intelligent
L'éditeur d'images intégré à l'environnement bénéficie du magnétisme intelligent.
Notez que les nouveautés présentes dans l'éditeur d'Images sont également disponibles dans le champ Editeur d'images que vous pouvez inclure dans vos applications.
En rouge les guides éphémères de positionnement
En rouge les guides éphémères de positionnement
Effectuez par programmation les mêmes opérations que l'éditeur d'images permet de réaliser
Le WLangage en version 25 propose le type WDPic.
Toutes les fonctions de la famille WLangage d (fonctions de dessin) peuvent être appelées sur les calques de l'image.
Le type WDPic contient un tableau de calques.
La gestion des calques permet par exemple de conserver une image originale et de lui appliquer un filigrane, donc sans modifier l'original.
La fonction PicFusionneCalque permet de regrouper les calques pour diminuer la taille de l'image ou générer une image au format Jpeg ...
Mode "affichage seulement"
Pour vos applications, un nouveau mode d'affichage des images est proposé par le champ Editeur d'images.
Ce mode permet l'affichage d'une image pour visualisation uniquement.
L'utilisateur final peut zoomer, dézoomer, imprimer, ... mais ne peut pas modifier l'image, ni bien sûr la sauvegarder.
Sélection de couleur
La sélection des couleurs se simplifie, et permet une sélection directe.
Divers
Affichage de la taille et position de la sélection en cours.
Langue de substitution
Lorsqu'une chaîne n'est pas encore traduite dans la langue de destination, il est possible de spécifier quelle langue de remplacement utiliser.
Il n'y a pas de "trou" dans l'UI !
"Ne pas traduire"
En version 25, il devient possible d'indiquer que certaines ressources d'un projet ne doivent pas être traduites :
  • fenêtres.
  • pages.
  • configuration de projet.
  • ...
Il peut s'agir par exemple d'une fenêtre de test, ou d'une configuration qui contient un plan d'action pour l'Intégration Continue.
Cela évite de traduire inutilement des chaînes, et optimise le délai de traduction.
Extraction intelligente multi-produits
En version 25, il devient possible d'extraire et de réintégrer l'ensemble des ressources de projets WINDEV, WEBDEV et WINDEV Mobile en une seule opération.
L'opération doit se lancer depuis WINDEV, dans une configuration avec WEBDEV et WINDEV Mobile intégrés à WINDEV.
WDTRAD : évolutions
WDTRAD est l'outil qui permet de traduire les messages standards (WDTRAD est fourni avec WDMSG).
WDTRAD bénéficie des nouveautés suivantes :
  • système de bookmarks : libellé et couleurs.
  • l'enroulé/déroulé des branches est mémorisé à la fermeture.
  • la loupe du dictionnaire est disponible sur chaque colonne.
GDS
GDS : un seul clic pour la création des branches de tous les projets d'un sous-répertoire
En version 25, il devient possible de créer en une seule opération un ensemble de branches.
Voici une nouveauté qui va faire gagner un temps important aux équipes qui manipulent de nombreux projets.
Notez que cette création en masse est également une nouvelle action de l'Intégration Continue (voir nouveauté 043).
Les partages sont conservés.
GDS : création automatique des branches de tous les projets d'un portefeuille de projets
En version 25, il devient également possible de créer en une seule manipulation les branches des tous les projets d'un portefeuille de projets (voir nouveauté 031).
GDS : extraction d'analyse à la première modification
Lors de la première modification effectuée sur une analyse (un schéma des données), celle-ci est extraite automatiquement (voir nouveauté 036).
GDS : extraction pour tests alors que ce n'était pas un test
Une extraction "pour test" permet de modifier l'élément localement, sans possibilité de report des modifications dans la base GDS.
Les modifications effectuées sur un élément extrait pour test ne sont pas sauvées ni gérées par le GDS (puisque c'est juste pour test).
En version 25, lors de la création d'un EXE qui contient des extractions "pour test" (donc dont le code n'est pas géré par le GDS), un message d'avertissement est affiché.
GDS : vitesse de création de branches supersonique : 20 fois + rapide
En version 25, la vitesse de création des branches a été améliorée. La création de branches est bien plus rapide.
En local, la vitesse a doublé.
En accès distant, cette vitesse a été optimisée par un facteur 20.
GDS : le merge s'offre un lifting
Le Merge permet de reporter automatiquement les modifications et de détecter les conflits.
En version 25, l'interface se simplifie et met en évidence les modifications et les conflits.
Par exemple, les modifications similaires apportées dans les 2 branches à fusionner ne sont plus signalées.
Autre exemple, les modifications que vous avez apportées ne sont plus mises en surbrillance si elles n'entrent pas en conflit.
Les conflits non résolus apparaissent de manière plus visible.
Une interface de parcours des conflits fait (enfin) son apparition : conflit suivant, conflit précédent, ...
Dans l'interface, chaque version est présentée dans un tiers d'écran.
L'affichage de certaines lignes de code peut donc être tronqué.
En version 25, les 3 versions de la ligne sélectionnée sont reprises en toute largeur en bas de la fenêtre : le développeur voit donc les lignes de code en entier.
Lorsqu'un conflit ne peut pas être résolu automatiquement, le choix de la version à conserver est facilité.
GDS : réintégration silencieuse
En version 25, la réintégration peut être silencieuse sur demande : une validation économisée !
GDS : annulation facile d'extractions
En version 25, il devient possible d'annuler des extractions effectuées sur d'autres postes de développement.
L'administrateur de la base GDS peut autoriser des développeurs à annuler des extractions effectuées par d'autres développeurs.
Présentation
Git est un gestionnaire de sources.
Git peut être utilisé au sein d’une entreprise sur ses propres serveurs, sans que quiconque à l’extérieur n’y ait accès.
GitHub est un hébergeur qui propose l’hébergement de bases Git (c’est l’hébergeur le plus connu, maintenant propriété de Microsoft).
Pour plus de détails, consultez Partagez vos projets via Git.
Possibilité de gérer ses projets avec git (et donc dans github)
En version 25, l'environnement permet de sauver les projets, les fenêtres, les pages, les états, les classes, les collections de procédures et le code dans une base Git.
Cette nouveauté permet par exemple de partager des éléments sources à travers GitHub.
Pour plus de détails, consultez Partagez vos projets via Git.
Projet, fenêtres, page, code, état
Le code source est géré au format texte (option).
Les fenêtres, les pages et les états peuvent être sauvés dans un format YAML (format texte hybride arborescent).
Les objets contiennent en clair le nom des champs et le code de chaque champ.
En version 25, la sauvegarde des éléments du projet s'effectue soit en format natif, soit en format "Git" (texte hybride).
Pour plus de détails, consultez Partagez vos projets via Git.
Comment utiliser git
Git s'utilise de la manière habituelle.
Les commandes Git sont utilisables : push, pull, commit, merge, ...
Selon le type de conflit, la résolution des conflits s'effectue soit dans Git soit dans l'environnement.
Pour plus de détails, consultez Partagez vos projets via Git.
Un environnement devops intégré
WINDEV, WEBDEV et WINDEV Mobile en version 25 forment un environnement DevOps toujours plus intégré.
A l'opposé des outils hétérogènes éparpillés, vous disposez de l'ensemble des fonctionnalités nécessaires à la mise en œuvre de la démarche DevOps.
Vous disposez de tous les outils intégrés pour gérer la méthodologie DevOps : gestion du cycle de vie, tests, intégration continue, déploiement, livraison continue, exploitation, retours clients ...
L'ouverture à Docker accélère les processus.
Fluidité de l'éditeur de code
En version 25, la fluidité des manipulations de l'éditeur de code est améliorée.
La vitesse d'affichage, les déplacements, ... sont beaucoup plus rapides.
Ces améliorations rendent l'expérience utilisateur beaucoup plus agréable.
Editeur de code : sauvegarde de votre code au format texte
En version 25, le code de vos projets peut être sauvé au choix selon 2 formats :
  • format natif.
  • format texte.
Le format natif est le format historique, optimisé.
Le format texte permet de manipuler le code par des traitements externes, et le dépôt dans GIT.
Création automatique de procédure (ou de procédure interne)
Pour toutes les fonctions qui prennent une callback en paramètre, la saisie assistée propose :
  • soit les procédures existantes du projet.
  • soit de créer une nouvelle procédure.
  • soit de créer une procédure interne.
Lorsqu'une nouvelle procédure est créée par ce moyen, cette procédure dispose automatiquement des paramètres adéquats.
Inutile de consulter l'aide pour retrouver les paramètres à définir !
Créez une procédure ou une procédure interne d'un clic
Créez une procédure ou une procédure interne d'un clic
Nouveau Kouglof (volet code) : bien plus pratique
Le kouglof (le volet code) permet d'accéder à tous les éléments de code du projet.
En version 25, le kouglof a été réaménagé pour permettre un accès encore plus rapide à ces éléments.
Parmi les nouvelles fonctionnalités du Kouglof on trouve :
  • filtrage, recherche.
  • perso dossiers.
  • menus contextuels.
  • affichage des éléments hérités.
  • propriétés.
  • synchronisation automatique sur la procédure.
  • fonctionnement en 4K.
  • filtre pour assemblage .Net.
En partie gauche :
  • Liste à plat de tous les éléments du projet et des composants.
  • L'entrée spéciale "élément courant" est synchronisée avec la vue active (affiche les procédures locales de la fenêtre en cours d'édition ...).
  • Boutons on/off de filtre pour afficher ou non :
    • les collections de procédures.
    • les classes.
    • les collections de procédures navigateur.
    • les collections de procédures serveur.
    • les éléments du projet.
    • les éléments des composants externes.
    • les éléments des composants internes.
    • les éléments des perso-dossiers de code.
  • Bouton popup pour les options de tri (comme dans l'explorateur).
En partie droite :
  • La liste est condensée.
  • Boutons de filtres pour afficher ou non :
    • les membres.
    • les procédures/méthodes.
    • les constantes.
    • les membres/procédures hérités.
  • Bouton popup de tri :
    • tri alphabétique.
    • tri par date de modification.
    • tri par visibilité (privé/protégé/public).
    • tri par couleur.
  • Le filtre s'active simplement en commençant à taper comme pour l'ancien kouglof, sauf que ça filtre au lieu de rechercher).
  • Filtre avec espace non significatif.
  • MAJ+Clic sur bouton de filtre pour activation exclusive.
Alignement sur le signe " = " et sur le mot "EST"
En version 25, la combinaison de touches Ctrl + Alt + = aligne tous les signes = présents dans la zone sélectionnée, et donc aligne tous les textes et codes présents à droite de ces signes =.
Le raccourci est également actif sur le mot-clé "est" dans les déclarations de variables.
// ----- code SANS alignement
 
n est un entier
IndiceTraitementMaxParcours est un entier
DateDébutTraitement est une Date
bEstOk est un booléen
DateFinTraitement est une Date
 
// Début du traitement
bEstOk = Vrai
DateFinTraitement = DateDébutTraitement
DateFinTraitement..Mois= 1
n = 1
IndiceTraitementMaxParcours = 5

// ----- code AVEC alignement
 
n est un entier
IndiceTraitementMaxParcours est un entier
DateDébutTraitement est une Date
bEstOk est un booléen
DateFinTraitement est une Date
 
// Début du traitement
bEstOk = Vrai
DateFinTraitement = DateDébutTraitement
DateFinTraitement..Mois = 1
n = 1
IndiceTraitementMaxParcours = 5
Revenir à la dernière modification de code : Ctrl + Alt + Flèche gauche
Il arrive souvent qu'après avoir tapé un code, on navigue dans le code pour vérifier certains éléments.
Et ensuite, il faut revenir au code initial pour continuer ses tâches.
En version 25, revenir au code initial s'effectue via la combinaison de touches Ctrl + Alt + Flèche gauche.
Import multiple de classes
Petite nouveauté utile, le sélecteur de fichiers de l'import de classes au format Texte est maintenant en sélection multiple.
Code en anglais ou en français
Le code WLangage peut être saisi en français ou en anglais.
A l'intention des nouveaux développeurs en WINDEV, un message de rappel de cette possibilité s'affiche de temps en temps ...
Pour que l'information circule !
Copier/coller de code avec chaînes multilingues : c'est clair et net
Le "coller" de chaînes multilingues évolue en version 25.
Lorsqu'une chaîne multilingue est copiée/collée, 2 options sont proposées en version 25 :
  • la chaîne est collée, point barre. Aucun lien n'est conservé avec la chaîne d'origine.
  • la chaîne est collée, et cette chaîne reste liée à la chaîne d'origine. Si la chaîne d'origine est modifiée, la chaîne collée sera automatiquement modifiée.
Par défaut, la chaîne collée n'a pas de lien avec la chaîne d'origine.
L'option de menu "Collage Spécial" permet de conserver le lien avec la chaîne d'origine.
Code-cible conditionnel : normalisation de la présentation du code
La présentation du code-cible conditionnel se normalise.
Le code est maintenant présenté en une seule colonne.
La cible du code est indiquée par une directive du compilateur.
Développement sur pc portable
Cette nouveauté de la version 25 va ravir les développeurs qui développent sur un PC portable dépourvu de pavé numérique : la mise en commentaire de lignes de code peut également s'effectuer par les combinaisons de touches : Ctrl + ':' et Ctrl + Maj + ':'.
Editeur d'états : générer des PDF en masse (threads)
Pour accélérer la génération de masse de PDF, il suffit de lancer cette génération dans des threads.
WINDEV utilisera la puissance des processeurs à cœurs multiples pour générer plus rapidement des lots de PDF : factures, propositions commerciales personnalisées, courriers ...
Editeur d'états : génération du prototype pour le passage de paramètres
En version 25, l'éditeur d'états génère automatiquement le prototype pour le passage éventuel de paramètres à l'état.
C'est plus intuitif.
Editeur d'états : passage de paramètres aux états internes
En version 25, il devient possible de passer explicitement des paramètres aux états internes.
Cela permet de s'affranchir de variables globales.
Editeur d'états : évolution du champ html
Dans un document HTML, une image peut être définie par un lien et encodée directement dans le HTML.
L'éditeur d'états en version 25 gère les images encodées en base 64 dans les contenus HTML.
Editeur d'états composite : export XLS
En version 25, l'export XLS est également disponible sur les états composites, et les enchaînements d'états.
Une feuille XLS est créée par sous-état.
Nouvelle syntaxe préfixée sur toutes les fonctions HFSQL
La syntaxe préfixée est maintenant disponible sur les fonctions de manipulation des bases de données HFSQL.
L'intérêt de cette syntaxe est que lorsque vous tapez un nom de fichier de données (table) dans l'éditeur de code, après la saisie du point une combo apparaît et propose la liste des fonctions qui s'appliquent à ce fichier de données (table).
En version 25, ce type de saisie est donc disponible pour l'intégralité de votre code ...
Par exemple :
// Recherche le client
Client.LitRecherchePremier(IDClient, gnIDClient)
SI Client.Trouve() = Faux ALORS
// Nouveau client
Client.RAZ()
FIN
 
// Reporte les données saisies
FEN_Edition.VersFichier(Client)
 
// Enregistre les informations
Client.Enregistre()
L'éditeur de code apporte la complétion automatique.
Pratique : la complétion automatique
Pratique : la complétion automatique
Modification de PDF en WLangage (le document n'a pas besoin d'être affiché)
En version 25, il devient possible de manipuler des documents PDF en WLangage.
Le document n'a pas besoin d'être ouvert à l'écran pour être manipulé.
Plusieurs types natifs font leur apparition :
Ces types natifs permettent de manipuler les documents PDF par programmation.
Parmi les fonctionnalités proposées on trouve :
  • supprimer une/des pages.
  • insérer une/des pages.
  • ajouter/supprimer un mot de passe.
  • pivoter le document.
  • recadrer.
  • redimensionner.
  • ajouter/extraire les pièces jointes.
  • récupérer la signature.
  • ...
Cette nouveauté ouvre des possibilités de personnalisation des fichiers PDF très puissantes (y compris en Web).
PDF : signature électronique PADES
PADES est une norme de signature de document PDF.
En version 25, cette norme PADES est supportée par les fonctions de signature de PDF.
YAML : le format d'échange géré nativement dans le WLangage
YAML est un format structuré d'échange de données.
YAML est un format de sérialisation, comme XML ou JSON, mais YAML est plus lisible par les humains, et plus concis que XML.
En version 25, YAML est géré par le WLangage.
YAML devient un type natif du WLangage.
Ce type natif permet de bénéficier de l'assistance de l'éditeur de code (complétion, ...).
YAML propose des concepts spécifiques de tags, commentaires, ancres. Ces concepts sont gérés par le type natif du WLangage.
JSON : évolutions
En version 25, il devient possible de supprimer des membres d'une variable de type JSON.
Il suffit d'affecter la valeur faux à la propriété ..Existe.
JSONVersChaîne et ChaîneVersJSON
Les documents JSON sont des chaînes avec un formatage déterminé.
Pour manipuler plus facilement les documents JSON, il existe le type JSON dans le WLangage.
La nouvelle fonction WLangage JSONVerschaîne permet de convertir une variable de type JSON en type chaîne.
La fonction WLangage JSONVerschaîne propose des options de formatage :
  • avec ou sans RC.
  • avec ou sans TAB.
La nouvelle fonction ChaîneVersJSON permet de remplir une variable JSON à partir d'une chaîne.
Si la fonction ChaîneVersJSON échoue, cela signifie que la chaîne qui contient le JSON est invalide.
Propriétés : Le double point vous énerve ? Tapez un seul point !
Historiquement, l'accès aux propriétés est accessible en tapant deux points successifs ".." dans la syntaxe.
En version 25, il devient possible de ne taper qu'un seul point : "." au lieu de "..".
Les 2 syntaxes sont reconnues de la même manière.
Rien ne change pour votre existant et pour vos habitudes.
Mot-clé en minuscules, ou en majuscules, au choix
Majuscules ?
Minuscules ?
En version 25, vous choisissez comment apparaissent les mots-clés dans votre code source.
Ci-dessous un exemple de code avec les mots-clés en minuscules.
PROCÉDURE CalculEnCours () : monétaire
 
// Variables locales
moEnCours est un monétaire
dDateDebut est une Date
dDateDebut..Jour -= 7
 
// Parcours des commandes des 7 derniers jours
POUR TOUTE Commande AVEC DateCommande >= dDateDebut
// On recherche les commandes non réglées
SI Commande.Etat = CommandeNonReglee ALORS
moEnCours += Commande.TotalTTC
FIN
FIN
 
// On renvoie l'encours
RENVOYER moEnCours
Une belle accolade
Encore une possibilité de personnalisation du code source : les accolades.
L'accolade ouvrante représente un début de bloc de code, et l'accolade fermante une fin de bloc de code (!).
Les accolades s'appliquent à tous les blocs :
  • si alors sinon,
  • pour i=1,
  • quand exception,
  • etc.
Certains développeurs ont l'habitude de cette syntaxe, la version 25 leur propose donc !
PROCÉDURE CalculEnCours () : monétaire
 
// Variables locales
moEnCours est un monétaire
dDateDebut est une Date
dDateDebut..Jour -= 7
 
// Parcours des commandes des 7 derniers jours
POUR TOUTE Commande AVEC DateCommande >= dDateDebut
{
// On recherche les commandes non réglées
SI Commande.Etat = CommandeNonReglee
{
moEnCours += Commande.TotalTTC
}
}
// On renvoie l'encours
RENVOYER moEnCours
Créez vos propres propriétés
En version 25, il devient possible de créer ses propres propriétés sur les :
  • modèles de champs.
  • modèles de fenêtres.
  • fenêtres.
  • fenêtres internes.
  • pages.
  • pages internes.
  • ...
Cette nouveauté permet une écriture du code plus concise et plus compréhensible.
Cette syntaxe encapsule les accès.
Par exemple :
..EnvoieColisUrgent
..EnvoieColisEco
Il devient possible de surcharger les propriétés standard du WLangage en définissant des propriétés personnelles de même nom.
Lambda
Une lambda ("lambda fonction") est une écriture plus concise des procédures internes.
Les lambdas sont utiles pour toutes les fonctions qui prennent des callbacks en paramètre : elles permettent de saisir directement le code de la fonction à la place du paramètre.
Exemple :
Documents est un tableau de chaînes
fListeFichier ("*.docx", (Chemin, Nom)=> Documents.Ajoute(Nom))
Filter / Map / Reduce : concision totale
Le concept de "Filter / Map / Reduce" permet d'écrire de manière concise des boucles de transformation de tableaux de données.
Exemple : calculer la moyenne d'âge d'un tableau d'individus en ne sélectionnant que les individus qui ont plus de 18 ans en 1 seule ligne de code.
Cela permet la programmation fonctionnelle.
Il est possible de chaîner les appels de Filter (Filtre), de Map (Transforme) et de Reduce (Agrège), et de les chaîner avec les fonctions Somme, Moyenne, Min et Max.
Exemple de code "Filter Map"
MesClients est un tableau d'Enregistrements de Client
 
// Récupère les clients du 34
ClientsDu34 est un tableau d'Enregistrements de Client
ClientsDu34 = MesClients.Filtre(x => (x.CodePostal [[ 1 À 2 ]]
= "34"))
 
// Récupère la liste des pays des clients
ListePays est un tableau de chaînes
ListePays = MesClients.Transforme(x => x.Pays)
 
// Somme des encours
SommeEncours est un monétaire
SommeEncours = MesClients.Agrège((x, total) => {total += x.EncoursAutorisé}, 0)
Compilation dynamique : procédure interne
Il devient possible d'utiliser des Procédures Internes dans la compilation dynamique.
Procédure interne : " cas erreur : " et " fin : "
"CAS ERREUR :" et "FIN :" sont des labels.
Ces labels sont supportés dans les Procédures Internes.
Nouveau type Thread : pour simplifier la programmation des threads
Le nouveau type Thread du WLangage permet de créer des threads de manière plus conviviale et plus assistée.
Threads et Tâches Parallèles se programment maintenant de la même manière.
Générer un couple clé publique/ privée : nouvelle fonction WLangage
De nombreux algorithmes de cyptage ou de signature nécessitent une clé publique et une clé privée.
WINDEV proposent toutes les fonctionnalités nécessaires.
La nouvelle fonction WLangage CrypteGénèreCléRSA génère automatiquement un couple clé publique/ clé privée.
Fonctions continent / pays
Les nouvelles fonctions WLangage ContinentListe, ContinentRécupère, PaysListe, PaysRécupère font leur apparition en version 25.
Gérer les pays n'a jamais été aussi facile !
Requêtes HTTP : brider le débit
Il devient possible de brider (limiter) le débit montant et/ou descendant utilisé lors de l'exécution d'une requête.
Cela permet par exemple de ne pas saturer la bande passante, ou de simuler une vitesse de réseau lente.
Requêtes http : nouveaux verbes
Les requêtes HTTP acceptent les nouveaux verbes PROPFIND et BPROPFIND.
Inutile de les coder !
OAuth : support du mode token (implicit grant)
Le mode "implicit grant" permet de limiter le nombre de requêtes avec un serveur pour effectuer une authentification.
En version 25, le mode "implicit grant" est supporté.
ExtraitChaîneEntre
Voici une fonction qui va faire plaisir au plus grand nombre !
La fonction ExtraitChaîneEntre permet d'extraire une chaîne entre 2 sous-chaînes (en général des balises).
Extraire une chaîne entre 2 balises s'effectue maintenant d'une ligne de WLangage !
Une chaîne extraite en 1 ligne de code !
Une chaîne extraite en 1 ligne de code !
ChaîneVersDate et DateVersChaîne
Les fonctions ChaîneVersDate et DateVersChaîne gèrent le format "ISO 8601 / RFC 3339".
Ce format inclut le fuseau horaire.
Exemple :2021-05-20T00:00:00+02:00
fLitLigne : optimisée, jusqu'à 10 fois plus rapide
La fonction WLangage fLitLigne, qui rend de grands services, a été optimisée.
Sa vitesse a été sensiblement améliorée : elle est jusqu'à 10 fois plus rapide.
Nouveautés diverses
  • L’encodage 64 peut encoder avec RC ou non.
  • 2 nouveaux algorithmes de Hash sont proposés : Hash MD4 et double SHA-256.
  • La nouvelle fonction TableEnrouleDéroule change l’état de la rupture (enroule si la rupture était déroulée, et déroule si la rupture était enroulée).
  • RéseauConnecte : une option de persistance permet de conserver la lettre du lecteur après la fermeture de la session.
  • RendezVousModifie et RendezVousSupprime : les fonctions peuvent prendre l’identifiant du rendez-vous en paramètre (utile pour Outlook).
  • L’affectation des durées en clair est possible sur les propriétés :
    MaRequete..DuréeNonRéponse = 5s
  • EmailParamètre : nouvelle constante pour ne plus convertir les mails reçus en "latin1" dans les projets Ansi.
  • fCrée : support de la constante foSuppressionAutomatique ; le fichier est automatiquement supprimé lorsqu’il est fermé.
Webservice SOAP : Support de la balise "import"
Les fichiers de description WSDL comportant une balise "Import" sont automatiquement supportés.
Webservice SOAP : Vérification du nombre de paramètres
En version 25, le nombre de paramètres attendus par les procédures du Webservice est vérifié par le compilateur.
XML
Signature
Il est possible de signer les fichiers XML grâce à la fonction XMLSigne.
POO
Attributs de copie profonde : copie de tableaux (deep copy)
L'attribut de copie profonde permet d'indiquer si l'on souhaite, pour chaque attribut de l'objet, effectuer une prise de référence ou une duplication des objets membres.
Cela permet par exemple d'utiliser l'opérateur de copie <= pour copier correctement les tableaux d'objets dynamiques.
Attribut pour empêcher la copie d'un membre
Le nouvel attribut <Copie=faux> permet d’empêcher la copie de la valeur du membre lors de la copie d'un objet dans un autre.
Cela est par exemple utile pour les informations confidentielles : mots de passe, GUID, ...
Nouvelle fonction clone : clonage des objets
La nouvelle fonction Clone permet d'allouer et de copier l'objet qui est passé en paramètre. Dans le cas du polymorphisme, il n'est plus nécessaire d'écrire le code nécessaire à ce clonage. Il est également inutile d'écrire les méthodes virtuelles dans toutes les classes dérivées ainsi que les constructeurs par copie.
Objet dynamique en paramètre : dérivé accepté !
Cette nouveauté ravira les adeptes de la POO.
Il était impossible d'appeler simplement une procédure qui prend un objet dynamique en paramètre en lui passant un objet de classe dérivée de l'objet attendu en paramètre. Il fallait rajouter le mot-clé local dans la déclaration du paramètre, ce qui était méconnu (et pas très naturel il faut l'avouer).
En version 25, cette bizarrerie a été corrigée : l'appel de la procédure avec une classe dérivée en paramètre est possible.
Option pour éviter la copie lors de proc(this) ou de proc(Exemple())
En version 25, l'appel de fonction Proc qui se passe soi-même en paramètre ou de fonction Proc qui prend en paramètre une fonction qui renvoie un objet, ne copie plus cet objet.
Une option de compilation dans les "7 onglets" de description du projet permet d'empêcher la copie.
Serveur spare
Un ser veur "spare" est un serveur vers lequel une réplication mono-directionnelle automatique est effectuée.
C'est une forme de sauvegarde "quasi-temps réel".
Ce serveur n'est accessible qu'en lecture seule (sauf pour l'opération de sauvegarde automatique elle-même, bien sûr).
L'avantage d'un serveur Spare est la mise en oeuvre simplissime de l'infrastructure. Par rapport à une réplication, il n'est pas nécessaire que le fichier de données (la table) dispose de rubrique ID auto sur 8 octets.
En cas de nécessité, le serveur Spare peut passer en mode "non Spare" pour ainsi prendre le relais par exemple lors d'un crash disque du serveur principal.
C'est un moyen supplémentaire et très simple, offert en plus de la mise en place d'une réplication et d'un cluster, pour bénéficier d'un serveur de backup.
Syntaxe préfixée
En version 25, la syntaxe d'appel aux fonctions WLangage concernant HFSQL peut être préfixée.
Voir nouveauté 090.
Optimisation des requêtes grâce à un parcours séquentiel, sans index
Le moteur de HFSQL peut décider de parcourir séquentiellement un fichier de données (une table) si ce type de parcours est plus rapide que l'utilisation des index.
Le parcours séquentiel supprime les lectures d'index.
Sur les disques mécaniques (HDD), les déplacements de tête de lecture sont ainsi minimisés, tout comme le nombre de lectures.
De plus, le système d'exploitation optimise également la lecture séquentielle ("Read ahead").
Certaines requêtes deviennent donc beaucoup plus rapides en passant le serveur HFSQL en version 25.
Nouvelle fonction WLangage : HMiseAJourLiaison
En version 25, la nouvelle fonction WLangage HMiseAJourLiaison permet de mettre à jour par programmation les liaisons du serveur pour qu'elles correspondent aux liaisons de l'analyse (de la description des données).
Sauvegarde à chaud : appel d'une webhook
Une webhook est une callback sur un serveur Web.
Une webhook permet de déclencher un traitement automatiquement.
Dans le cas de sauvegardes sur vos bases HFSQL, une webhook peut être définie. Cette webhook sera automatiquement appelée à la fin de la sauvegarde.
Cela permet par exemple d'automatiser la récupération du fichier de la sauvegarde depuis une autre machine.
Les procédures stockées permettent l'utilisation de chaînes multilingues
En version 25, il est possible d'utiliser des chaînes multilingues dans les procédures stockées.
Réplication universelle qui propage la modification de structure (modif auto, SDD)
En version 25, la réplication universelle prend en charge automatiquement la modification de structure de base de données : si une "modif auto" est nécessaire, elle sera propagée.
Réplication universelle assistée : accès sécurisé en HTTPS
En version 25, la réplication universelle permet d'utiliser le mode de connexion sécurisé HTTPS.
Il suffit d'installer un certificat adéquat sur le serveur Web du serveur de réplication.
Réindexation automatique si nécessaire lors de l'exécution de requête
En version 25, la réindexation d'un fichier de données (d'une table) est proposée lorsqu'une requête détermine qu'un index est corrompu : problème de disque, coupure courant, ...
HFSQL Classic : les triggers sont également appelés par les requêtes
En version 25, en utilisation de HFSQL Classic (version embarquée sur le matériel) les triggers sur les tables (les fichiers de données) sont également déclenchés par l'utilisation des requêtes SQL d'ajout ou de modification : INSERT, UPDATE, DELETE.
Divers
Le nombre de connexions simultanées à un serveur HFSQL peut être limité.
Il suffit de fixer la constante hNombreMaxConnexions de la fonction HGèreServeur.
Optimisation sur "left"
En version 25, des optimisations pour les expressions de la forme suivante (comparaison avec une valeur "en dur") ont été implémentées :
left(rubrique, N) > valeur
left(rubrique, N) >= valeur
left(rubrique, N) < valeur
left(rubrique, N) <= valeur
8 nouvelles fonctions SQL
8 nouvelles fonctions SQL de manipulation des dates font leur apparition en version 25.
  • DATEADD (élément, nombre, date) :
    Renvoie la date correspondant à l’ajout d’un élément (minute, heure, jour, mois, année, ...) à la date spécifiée (par exemple permet d’obtenir la date correspondant à la date en cours + 2 mois).
  • DATEDIFF (élément, date de début, date de fin) :
    Renvoie le nombre d’éléments (minute, heure, jour, mois, année,...) entre la date de départ et la date de fin (par exemple, permet d’obtenir le nombre de mois entre deux dates).
  • DATEDIFF_BIG (élément, date de début, date de fin) :
    Renvoie le nombre d’éléments (minute, heure, jour, mois, année, ...) entre la date de départ et la date de fin (par exemple, permet d’obtenir le nombre de mois entre deux dates).
  • DATETIMEFROMPARTS (year, month, day, hour, minute, second, millisecond) :
    Renvoie la dateheure correspondant aux éléments (minute, heure, jour, mois, année, ...) spécifiés.
  • DATEFROMPARTS (year , month , day) :
    Renvoie la date correspondant aux éléments spécifiés.
  • DATEPART (élément, date) :
    Renvoie la valeur de l’élément (minute, heure, jour, mois, année, trimestre, ...) dans la date spécifiée.
  • EOMONTH(date) :
    Permet d’obtenir la date à la fin du mois.
  • EOMONTH(date, x) :
    Permet d’obtenir la date à la fin du mois en ajoutant X mois.
  • ISDATE(expression) :
    Permet de savoir si une date est valide.
De l'ordre ! (range ta chambre !)
Dans l'éditeur de requêtes, les rubriques étaient affichées uniquement dans l'ordre logique (l'ordre de la description des données).
En version 25, il devient également possible d'afficher les rubriques dans l'ordre alphabétique.
Ordre logique ou ordre alphabétique, maintenant vous avez le choix
Ordre logique ou ordre alphabétique, maintenant vous avez le choix
Rappel
Vous le savez, HFSQL existe en version Cluster.
Cette version de HFSQL permet de créer une ferme de serveurs.
Limiter le nombre de connexions à un noeud
Afin de pouvoir affiner la charge du serveur en cluster, il devient possible de limiter le nombre maximum de connexions à un noeud du cluster.
Rappel
HFSQLDrive vous permet d’héberger facilement et immédiatement vos fichiers de données (tables) dans le cloud.
En version 25, HFSQLDrive s’enrichit.
HFSQLDrive : réinitialisation du mot de passe admin
Le portail de HFSQLDrive permet de réinitialiser le mot de passe de l'administrateur du serveur.
Réplication de serveurs
Lors de la configuration d'une Réplication de Serveurs dans le Centre de Contrôle HFSQL, les mots de passe des fichiers de données concernés par la réplication sont directement demandés.
Rappel
Vous le savez, de nombreux Connecteurs Natifs sont disponibles pour des bases de données tierces : Oracle, SQL Server, AS/400, DB2, MySQL, ostgreSQL, SQLite, xBase, MariaDB, Informix, Progress, Sybase, ...
Nombre de lignes impactées par une requête
La variable H.NbEnregRequêteModification est renseignée lors des actions d'Insert, Update et Delete.
Connecteur natif MS SQL Server
Les informations étendues de connexion supportent les fonctionnalités Encrypt et TrustServerCertificate.
Rappel
L'union européenne a choisi de généraliser la facturation électronique.
Chorus pro : pour facturer l'État Français
La France rend obligatoire la facturation électronique pour facturer les services de l'état.
Pour le dépôt et le suivi des factures, la France 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 français.
En 2020, toutes les sociétés devront utiliser Chorus Pro.
La version 25 facilite l'automatisation du dépôt des factures sur Chorus Pro.
Signature de PDF norme "PADES"
La norme PADES est reconnue pour les signatures de fichiers PDF (voir nouveauté 092).
Fonction de hash native bitcoin
La constante HA_SHA_256_DOUBLE permet de hasher des données à l'aide de la fonction native de hash HashChaîne.
(voir nouveauté 113).
IOT
iOT : accès à amazon webservice iot
La version 25 permet d'accéder facilement aux API de AWS IoT.
Rappel
Le concept de Télémétrie, présent en standard dans WINDEV, vous permet de collecter et d’agréger des informations, nominatives ou anonymes, sur l’usage qui est fait de vos applications : choix de menu sélectionnés, fonctionnalités utilisées, traitements longs, bugs éventuels, horaires d’utilisation, ...
La télémétrie vous permet également de connaître la configuration matérielle des utilisateurs finaux, les versions d’OS, ce qui est très utile en particulier pour les éditeurs de logiciels.
En version 25, la Télémétrie évolue.
Statistiques par pays
Une nouvelle statistique permet d'afficher sur un planisphère les pays où l'application est utilisée.
La couleur appliquée sur le pays indique la densité d'utilisation.
Informations visuelles par pays
Informations visuelles par pays
Nouveau Widget : statistiques sur le serveur de télémétrie
En version 25, un nouveau Widget fait son apparition : le Widget "Etat du Serveur".
Ce Widget affiche des informations sur les données récupérées sur un serveur :
  • nombre d'actions dans la période.
  • date des dernières informations reçues.
  • nombre d'informations reçues dans la période.
  • date de dernière agrégation du serveur.
  • erreurs éventuelles.
  • ...
Ces informations permettent de s'assurer que tout fonctionne correctement !
Widget "détail" d'un élément : évolutions
Les informations affichées par élément (fenêtre, page, champ, requête, ...) sont plus détaillées et plus compréhensibles.
Par exemple :
  • nombre d'ouvertures de l'élément.
  • nombre d'utilisateurs ayant ouvert au moins une fois l'élément,
  • nombre moyen d'ouvertures par utilisateur ayant utilisé l'élément au moins une fois.
  • ...
Il devient ainsi plus facile de comprendre l'utilisation des éléments.
Mode hors connexion
Lors du lancement d'une application qui est suivie par la télémétrie, si la connexion avec le serveur de télémétrie ne peut pas s'effectuer, les données de télémétrie n'étaient pas collectées jusqu'au démarrage suivant de l'application.
En version 25, en cas d'impossibilité de connexion, les informations sont collectées localement pendant une durée maximum de 48 heures, et seront envoyées automatiquement dès que la connexion avec le serveur sera rétablie.
Pour gérer des cas particuliers, la nouvelle fonction WLangage TélémétrieEnvoieDonnées permet de forcer l'envoi de ces données collectées en local.
PiloteSouris sans x, y
La fonction PiloteSouris permet de simuler des clics lors d'un test. Les coordonnées de clic deviennent optionnelles : le clic aura lieu au milieu de l'objet, ce qui permet de résister au redimensionnement de champs.
Suspension temporaire de test
En version 25, il est possible de suspendre temporairement un test d'un simple clic droit.
Utile par exemple lors d'une phase de maintenance matérielle.
MongoDB
La nouvelle fonction WLangage MongoPipelineAgrégation fait son apparition pour les bases MongoDB.
Cette fonction permet d'envoyer des pipelines d'agrégation à la base.
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire