Jump to content

David Julot

Membres
  • Posts

    1103
  • Joined

  • Last visited

  • Days Won

    67

David Julot last won the day on September 30

David Julot had the most liked content!

About David Julot

  • Birthday 07/16/1971

Contact Methods

  • Website URL
    https://www.lesterius.com/fr
  • AIM
    djulot@mac.com

Profile Information

  • Gender
    Homme
  • Location
    Paris
  • Interests
    FileMaker, XML et API

FileMaker Profile

  • FM
    FM19
  • OS
    macOS 11, Windows 10
  • Certif.
    FileMaker 18
  • Claris Partner
    Platinum

Recent Profile Visitors

18509 profile views
  1. Il faut aussi vérifier que le serveur est autorisé à communiquer vers l'extérieur sur le(s) port(s) IP concerné(s). Voir le Firewall.
  2. Bonjour, Et suite à l'exécution de l'action de script en cause, quelle est le code erreur retournée ?
  3. Bonjour David, Pour cela j'utiliserai un plug-in, tel que BaseElementsPlugin (https://docs.baseelementsplugin.com) et sa fonction BE_FileListFolder qui permet de lister le contenu d'un répertoire.
  4. Bonjour, Dans ce cas, je crée un fichier .bat que je stocke dans une rubrique de type conteneur que j'exporte sur le disque en demandant à l'ouvrir une fois exporté, le système prend donc le relais et exécute les commandes contenues dans ce fichier.
  5. Bonjour, Rien de plus simple, pour récupérer le contenu d'attributs d'une balise XML en XSL-T on utilise la commande @. Voici donc une feuille de transformation XLS-T pour lire l'XML : <?xml version='1.0' encoding='UTF-8'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <METADATA> <FIELD NAME="Name" TYPE="TEXT"/> <FIELD NAME="ImpositionName" TYPE="TEXT"/> <FIELD NAME="SignatureName" TYPE="TEXT"/> <FIELD NAME="Side" TYPE="TEXT"/> <FIELD NAME="Separation" TYPE="TEXT"/> <FIELD NAME="ProcessName" TYPE="TEXT"/> <FIELD NAME="Date" TYPE="TEXT"/> <FIELD NAME="ProcessStatus" TYPE="TEXT"/> <FIELD NAME="User" TYPE="TEXT"/> </METADATA> <RESULTSET > <xsl:for-each select="XMLOutput/Job"> <ROW> <COL> <DATA> <xsl:value-of select="@Name"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@ImpositionName"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@SignatureName"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@Side"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@Separation"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@ProcessName"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@Date"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@ProcessStatus"/> </DATA> </COL> <COL> <DATA> <xsl:value-of select="@User"/> </DATA> </COL> </ROW> </xsl:for-each> </RESULTSET> </FMPXMLRESULT> </xsl:template> </xsl:stylesheet> Et en fichier joint : source_vers_FMP.xsl
  6. C'est exact, avec les versions les plus récentes c'est le cas, mais mes souvenirs sont ce qu'ils sont, je ne me souviens plus du comportement de FileMaker Pro en version 10 😁
  7. Bonjour, Je vous propose deux exemples de scripts et la base d'exemple jointe. Premier script : Gestion erreurs [ Oui ] # Définir variable [ $jsonContacts ; Valeur: "" ] Définir variable [ $nbContacts ; Valeur: Decompte ( Contacts::uuid ) ] Si [ $nbContacts > 0 ] Activer enregistrements liés [ Afficher uniquement les enregistrements liés ; De la table : “Contacts” ; Utilisation du modèle : “Contacts” (Contacts) ] Boucle Fin de boucle si [ Definir ( $i = $i + 1 ; $i > $nbContacts ) ] Afficher enreg/requête/page [ Avec boîte de dialogue: Non ; $i ] Définir variable [ $jsonContacts ; Valeur: JSONSetElement ( $jsonContacts ; [ "[" & $i - 1 & "].civilite" ; Contacts::Civilite ; JSONString ] ; [ "[" & $i - 1 & "].nom" ; Contacts::Nom ; JSONString ] ; [ "[" & $i - 1 & "].prenom" ; Contacts::Prenom ; JSONString ] ) ] Fin de boucle Activer modèle [ modèle d'origine ; Animation: Aucune ] Fin de si Définir variable [ $jsonSociete ; Valeur: JSONSetElement ( "" ; [ "societe" ; Societes::Societe ; JSONString ] ; [ "adresse" ; Societes::Adresse ; JSONString ] ; [ "code_postal" ; Societes::CodePostal ; JSONString ] ; [ "ville" ; Societes::Ville ; JSONString ] ; [ "contacts" ; $jsonCon… ] Définir rubrique [ Societes::résultat_JSON ; $jsonSociete ] Fin de script [ Résultat de texte: ] Deuxième script : Gestion erreurs [ Oui ] # Définir variable [ $jsonContacts ; Valeur: "" ] Définir variable [ $contacts.liste ; Valeur: ExecuterSQL ( "SELECT Civilite, Nom, Prenom " & "FROM Contacts " & "WHERE uuidSociete =? " ; "" ; "" ; Societes::uuid ) ] Définir variable [ $contacts.nb ; Valeur: DecompteValeurs ( $contacts.liste ) ] Boucle Fin de boucle si [ Definir ( $i = $i + 1 ; $i > $contacts.nb ) ] Définir variable [ $contacts.donnees ; Valeur: ObtenirValeur ( $contacts.liste ; $i ) ] Définir variable [ $contacts.donnees ; Valeur: Substituer ( $contacts.donnees ; "," ; ¶ ) ] Définir variable [ $jsonContacts ; Valeur: JSONSetElement ( $jsonContacts ; [ "[" & $i - 1 & "].civilite" ; ObtenirValeur ( $contacts.donnees ; 1 ) ; JSONString ] ; [ "[" & $i - 1 & "].nom" ; ObtenirValeur ( $contacts.donnees ; 2 ) ; JSONString ] ; [ "[" & $i - 1 & "].prenom" ; ObtenirValeu… ] Fin de boucle Définir variable [ $jsonSociete ; Valeur: JSONSetElement ( "" ; [ "societe" ; Societes::Societe ; JSONString ] ; [ "adresse" ; Societes::Adresse ; JSONString ] ; [ "code_postal" ; Societes::CodePostal ; JSONString ] ; [ "ville" ; Societes::Ville ; JSONString ] ; [ "contacts" ; $jsonCon… ] Définir rubrique [ Societes::résultat_JSON ; $jsonSociete ] Fin de script [ Résultat de texte: ] Et la base exemple : Exemple tableau JSON.fmp12
  8. Bonjour, Je vous propose le script suivant : # On récupère le nom de la rubrique active au moment de l'exécution du script Définir variable [ $rubrique ; Valeur: Obtenir ( NomRubriqueActive ) ] # # On active l'enregistrement suivant Afficher enreg/requête/page [ Suivant(e) ; Sortie après dernière: Non ] # # On récupère la liste des rubriques du modèle Définir variable [ $liste ; Valeur: NomsRubriques ( Obtenir ( NomFichier ) ; Obtenir ( NomModèle ) ) ] # On récupère le nombre de rubriques du modèle Définir variable [ $nb ; Valeur: DecompteValeurs ( $liste ) ] # On boucle jusqu'à arriver sur la rubrique active Boucle Fin de boucle si [ Definir ( $i = $i + 1 ; $i > $nb Or Obtenir ( NomRubriqueActive ) = $rubrique ) ] Rubrique suivante Fin de boucle Fin de script [ Résultat de texte: ] Évidemment, cela fonctionne uniquement si la rubrique active fait partie des rubriques de l'ordre de fabulation du modèle.
  9. Bonjour, Je vois deux méthodes pour répondre à cette demande : La première consiste à journaliser les connexions à l'ouverture et à la fermeture de la base, via des scripts, pour alimenter une table avec les comptes qui ouvrent et ferment la base avec la fonction Obtenir ( NomCompte ). Un inconvénient à cette méthode : lorsqu'un utilisateur plante ou arrête brutalement FileMaker Pro, on ne sait plus facilement s'il est connecté ou non… La deuxième méthode consiste à utiliser l'Admin API de FileMaker Server. Plus fiable. https://help.claris.com/fr/admin-api-guide/ https://VOTRE_SERVEUR/fmi/admin/apidoc/#operation/clients
  10. Bonjour, Il va falloir passer par une boucle…
  11. Bonjour, Pour supprimer la clef de cryptage du fichier, vous devez utiliser l'utilitaire Developer disponible via le menu Outils > Utilitaires Developer… Si vous n'avez pas le menu Outils, vous devez au préalable l'activer via les préférences de FileMaker Pro : macOS : FileMaker Pro > Préférences… , puis onglet Général et cocher l'option Utiliser les outils avancés. Windows : Edition > Préférences… , puis onglet Général et cocher l'option Utiliser les outils avancés. Pour plus d'informations sur la clef de cryptage d'un fichier et sa suppression, je vous invite à lire cette page de l'aide de FileMaker : https://help.claris.com/fr/pro-help/content/encrypting-database-files.html?Highlight=cryptage Concernant le fait qu'à l'ouverture du fichier FileMaker Pro vous demande si vous souhaitez ouvrir le fichier local ou en ligne, vous avez, si je m'abuse, une case à cocher dans cette boîte de dialogue vous permettant d'indiquer votre choix définitif.
  12. David Julot

    Sécurité

    Bonjour tout le monde, À la demande générale… La faille fait appel au visualiseur de données qui pouvait être accessible sans aucun compte Full Access… Depuis, Claris a corrigé cette faille en appliquant la même règle que pour le Script Debugger. Autre point et c'est le plus important : tout le monde néglige les options de fichier, et plus grave encore l'option sur la version minimale autorisée. Conclusion : Toujours utiliser les versions les plus récentes d'une application (pour les failles corrigées). Toujours bien vérifier les options de fichier. N'essayez pas de recréer la roue, en recréant par exemple un système d'authentification (compte/mot de passe) en lieu et place de celui de l'application. J'ai oublié de préciser que cette faille fonctionne aussi sur les fichiers dont on a supprimer le jeu de privilèges Full Access…
  13. David Julot

    Sécurité

    J'oublie de préciser que je ne peux expliquer ma méthode car c'est une faille de sécurité et que je ne souhaite pas la divulguer en publique. Mais je peux au moins vous conseiller de définir la version minimale autorisée à ouvrir vos solutions dans les préférences de fichier à 19.
  14. David Julot

    Sécurité

    Haïe, j'ai mal en voyant ça ! Désolé, mais je ne peux pas laisser dire ça : Désolé @tcolles mais le fait d'avoir un compte / mot de passe associé à un jeu de privilèges (même le plus restreint) utiliser en compte par défaut à l'ouverture n'est pas une protection. J'ai déjà pu le démontrer et sortir toutes les données de toutes les tables (y compris celles dont je n'avais aucun droit en lecture) et sans utiliser d'applications externes ! Donc NON ! Ce qu'il faut : c'est utiliser la gestion de l'authentification de FileMaker, en cela on définit des comptes/mot de passe dans la sécurité de FileMaker, puis lorsque l'utilisateur aura été authentifier par FileMaker, avec le nom de compte (Obtenir ( NomCompte) ) rechercher les droits spécifiques dans sa table. Mais en aucun cas on laisse la base s'ouvrir avec un compte par défaut. Désolé, c'est mon coup d'humeur du matin 😉 je vais aller prendre mon café.
  15. Bonjour, Vous pouvez utiliser l'action Sauvegarder en PDF avec FileMaker Go 19. Mais vous avez accès (tout comme avec FileMaker Server) à deux répertoires seulement : Document et Temporaire. Je vous invite à voir l'exemple donné dans la documentation de Claris FileMaker Go : https://help.claris.com/fr/go-development-guide/index.html#difference-filemaker-go-pro_behavior-differences_saved-files L'action a aussi d'autres limitations : pas de création de sous-répertoire D'autres informations sur l'aide de Claris FileMaker Pro : https://help.claris.com/fr/pro-help/content/save-records-as-pdf.html?Highlight=pdf
×
×
  • Create New...