Jump to content
  • 0

Correction de Script


Albatros75
 Share

Question

Bonjour à tous,

J'essaie de trouver (sans doutes) des erreurs dans des scripts, et je suis interpellé par le Script suivant :  

Nom "Affaire - OnLayoutEnter - Save Last Visited View"

et il y a, à un moment, la ligne suivante :

getLayoutID ( Obtenir ( NomModèle ) ) = 185

Comme ce Script existe pour une dizaine de Modules (Sociétés, Contacts, Devis, etc), le nombre (ici) 185 change à chaque fois (c'est 181 pour Sociétés, 45 pour Contacts, etc, etc). Est-ce une attribution aléatoire par FM PRO 18 ?

Comment trouver ou définir ce nombre pour mon nouveau Module que j'ai créé "Affaire". Actuellement, en remettant 185, je pense que c'est peut-être ça qui est à l'origine d'un bug.

Avez-vous la réponse ou une idée ?

Merci de me dire.

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

  • 0

getLayoutID est une fonction personnalisée. Pour trouver le layout ID, rien de mieux que d'aller sur le modèle et de copier la formule getLayoutID ( Obtenir ( NomModèle ) ) dans le data viewer (visualiseur de données)

Link to comment
Share on other sites

  • 0

Bonjour Fabrice,

Merci bien pour ce tuyau, car je ne connaissais pas ce Visualiseur de données.

Je l'ai trouvé, et voilà ce que j'ai pour ce Modèle "Affaire" (en PJ). Mais où donc "coller getLayoutID ( Obtenir ( NomModèle ) )" ? Dans "surveiller" ? Ailleurs ?

Sinon, je remarque que la commande $$affaire.LastVisitedView n'est pas du tout présente dans la liste, alors que je l'avais écrite dans le script... (mis en PJ). C'est bizarre, non ? Il y a par contre beaucoup d'autres modules équivalents : $$contacts.LastVisitedView etc,

Merci de ton aide.

 

Capture d’écran 2021-03-16 à 13.53.14.png

Affaire - OnLayoutEnter - Save Last Visited View.pdf

Link to comment
Share on other sites

  • 0

Bonjour Lucie,

Merci pour cette précision. J'ai trouvé. En fait, il faut être positionné sur la bonne Table (pop-up à gauche) pour que ça retourne la bonne valeur. Au fait, y a-t-il un moyen pratique de savoir si cette valeur se retrouve dans d'autres Scripts ? Pour la corriger aussi.

Sinon, pour l'absence de mon : $$affaire.LastVisitedView (pour la Table AFFAIRE que j'ai créée) dans la liste du Visualiseur, évoquée auparavant, comprenez-vous pourquoi ? Et aurais-je dû le créer en amont quelque part ailleurs ? Car jusqu'à présent, je me suis contenté de le saisir dans des formules de divers Scripts.

Techniquement, j'ai fait une duplication d'un module existant, puis ai remplacé les données "intuitivement" en observant bien et en décortiquant les parallélismes et similitudes... Ce n'est pas simple.

Link to comment
Share on other sites

  • 0

Bonsoir à tous,

Je reviens sur mon interrogation à ne pas voir dans le Visualiseur de données la Variable globale : $$affaire.LastVisitedView (pour ma Table AFFAIRE que j'ai créée), alors que je l'ai déjà saisie dans des Scripts... Cela n'a peut-être pas de rapport ?

Comprenez-vous pourquoi ? La dizaine de Variables globales (voir PJ) qu'il y a présentes sont arrivées comment ?? Il a fallu les saisir en amont à un endroit spécifique ? Si oui, où donc ? Cela me permettra peut-être de corriger un bug...

Merci.

Link to comment
Share on other sites

  • 0

la variable manquante a-t-elle été déclarée ? il ne suffit pas qu'elle existe dans le script, il faut que le script ait été exécuté et que la variable contienne une valeur non vide

Link to comment
Share on other sites

  • 0

Ah, d'accord... Alors, je crains que non, car malheureusement j'ai un blocage en amont (qui empêche l'exécution consécutive).

C'est un peu idiot : il y a une rubrique CompanyName qui est saisissable avec une liste déroulante ("QuickPick"), et dès que je clique sur un nom (de la liste totale des sociétés) j'ai un message d'erreur : "Could not update the current record". J'ai analysé que cela provenait avec certitude du Script (en PJ), sur lequel je ne trouve pas d'anomalie (mais je suis novice).

Tu vois où cela cloche ? Je peux mettre d'autres copies d'écran si cela peut t'aider à mieux percevoir le problème.

Merci bien de ton aide.

 

Generic - Picker - Set ID.pdf

Link to comment
Share on other sites

  • 0

Bonsoir Magalie,

La valeur du $$PickerJSON est : {"layoutID":192,"SetID":"LOCATION::_kftCompanyID","withID":"COMPANY::__kptID"}

Cela me fait penser que j'ai tout à l'heure trouvé que le layoutID du Modèle Data Entry de "Affaire" était 263 (grâce à la Visionneuse de données). Faut-il le remplacer ? Mais comment procéder ?

Merci

Link to comment
Share on other sites

  • 0

Bonjour,

Je viens d'affiner un peu les choses, avec le Visualiseur de données. En fait, les variables sont présentes quand elles sont sollicitées en temps réel ou bien déjà déclenchées.

Ainsi, sur la copie vierge de l'Application (sans mon Module Affaire rajouté), et bien que l'utilisant sur les autres Modules à la structuration identique (également des champs Company et Contact en "QuickPick", surplombés par un Label bouton bleu également fonctionnel (Go To...) dès lors qu'il y a une valeur déjà saisie, pour aller au Formulaire dudit Module), $$PickerJSON n'apparaît jamais. A croire que c'est le déclenchement du message d'erreur "ERROR: Could not update the current record" qui le fait s'afficher dans le DataViewer.

Mais pour une meilleure compréhension, voici, pas à pas, le comportement du DataViewer que j'ai analysé :

1) Au lancement, peu de variables affichées (6 ou 7).

2) Puis, je clique sur l'icône bleue d'un bouton de Module (qui lui marche bien), comme "Company". Là OK, la variable $$company.LastVisitedView en Valeur "Data Entry" s'affiche.

3) Puis, je clique sur le bouton Affaire (mon Module défaillant) issu "par copie" du Module LOCATION (localisation, en français = les adresses), et là je vois apparaître $$location.LastVisitedView en Valeur "List". Le problème est donc je pense à ce stade (double erreur).

4) Puis, je clique sur le "vrai" bouton du Module Location. Et là, c'est la même syntaxe $$location.LastVisitedView, avec cette fois en valeur "Data Entry" (tous les Modules sont ainsi, par défaut). Mais, contrairement au clic sur un autre Module lambda, cette fois aucune ligne de syntaxe supplémentaire n'est venue se rajouter. C'est la même ligne qui sert. On voit juste s'opérer le changement de "List" en "Data Entry" (pour la valeur).

5) A force de naviguer partout, j'ai au final une quinzaine de variables affichées), car il y a beaucoup de Modules différents.

 

A quel niveau corriger cela ??

Merci bien.

 

NB : Je constate que mes scripts sont écrits en Anglais et en Français (par exemple "Obtenir..." et parfois "Get..."). Est-ce que ce pourrait être une source de bug ou bien l'exécution se fait indépendamment de cela.

Et sinon, pour l'indexation des rubriques, la langue est Anglais (liste déroulante). Existe-t-il un moyen de tout changer en Unicode ou bien Français ? (si cela est susceptible de créer un dysfonctionnement ?

Link to comment
Share on other sites

  • 0

Bonjour,

Il y a sur ce forum pléthore de personnes de bonne volonté prête à vouloir t'aider, mais je défie quiconque de comprendre le cheminement de ta démarche ni ce que tu cherches à réaliser à la chose prêt que tu as (je schématise) ajouté à une solution existante une table 'Affaires',  dupliqué un modèle 'Locations', inséré un bouton 'Affaires' dans tout les modèles et que tu essayes d'en comprendre le principe de navigation, comment les variables globales se déclarent à la volée etc… S'en suivront ensuite les questions relatives à la liaison de la table 'Affaires' avec l'ensemble des autres tables,  le  scripting nécessaire à la navigation et autres tâches relatives à ce modèle et aux autres 'modules' etc…etc … et la liste risque d'être fort longue!

Afin que ces personnes de bonne volonté puissent t'apporter leur aide et quittent définitivement le monde de l'abstrait, pour qu'enfin la base de discussion soit commune, ne serait-il pas plus judicieux de leur demander de télécharger la solution:

https://fmquickstart.com/

Pour répondre à ton Nota Bene, rassures-toi, des 722 occurrences  GET trouvées dans se document 96% d'entre elles concernent des fonctions personnalisées (l'auteur les a donc nommé comme bon lui semblait… en Anglais) et n'altèrent en rien le bon fonctionnement du fichier. Pour les quelques pourcents restants ce sont des fonctions GET effectivement en anglais mais inscrites en commentaires /**/

Pour que ton fichier prenne le 'français' comme langue d'indexation il faut que tu fasses un clône sans fiches de la solution 'FMQuickstart'. Les rubriques rubriques textes seront alors indées en français (attention, l'Unicode apporte un certain embonpoint à la base), les rubriques nombres utiliseront de manière native le séparateur décimal comme paramétré dans les Préférences Système et il en va de même pour les rubriques dates.

Link to comment
Share on other sites

  • 0

Je souscris totalement aux remarques de @Clem ci-dessus ! Sans un minimum de compréhension de la dynamique d’une solution FileMaker simple, il est malheureusement fort probable que vous passiez à côté de chose essentielle.

Ici, par exemple, votre problème vient de la définition des variables globales qui se fait antérieurement à votre déplacement sur le module et, au plus tard, au moment du clic sur le bouton de navigation.

La modification de la définition de la variable globale $$pickerJSON est la solution, comme je vous l’ai déjà indiqué : on voit bien en lisant le script fournie que le message d’erreur provient directement de l’impossibilité pour le système d’écrire dans la rubrique prévue. Le contenu de la variable globale est totalement inadapté à votre contexte. Il faut donc trouver où elle est définie et modifier cette définition.

Link to comment
Share on other sites

  • 0

Bonjour Clem,

Merci pour ces précisions. En effet, je n'ai pas pensé à préconiser de télécharger le fichier fmquickstart, ne sachant pas si les gens le feraient.

J'ai bien conscience que ce n'est pas simple.

Toutefois, malgré mon incompétence, je pense avoir bien progressé. J'ai corrigé le Modèle de mon MODULE en faisant MODIFIER puis en changeant avec le bon script.

Et j'ai identifié le peut-être dernier problème :

Je dois changer la valeur du $$PickerJSON (qui apparaît bien à chaque fois finalement, mais part aussitôt, sauf dans ma rubrique companyName à problèmes, où il demeure en permanence dans le DataViewer). Je crois voir quelles valeurs remplacer.

Pouvez-vous, je vous prie, me dire où donc je peux modifier manuellement sa valeur ? J'ai beau cherché partout, je ne trouve pas. A moins que ce soit la conséquence directe de l'exécution d'un Script (donc à trouver quelque part) ?

Merci.

NB : et comment faire pour copier la valeur du $$PickerJSON ? Car la fonction COPIER ne marche pas...

Link to comment
Share on other sites

  • 0

Bonjour Magalie,

En effet, c'est bien ce que j'ai fini par découvrir ce matin. Je vois désormais quoi changer comme valeurs, mais comment accède-t-on à l'endroit où ces données ont été initialement saisies ? C'est "forcément" en provenance d'un Script ? Où avec une autre méthode ?

Merci.

 

Link to comment
Share on other sites

  • 0

OK. Autrement dit la syntaxe de commande du $$Picker se trouve "à l'identique" dans un (j'espère qu'un seul) Script ?

Le bouton "rechercher" à droite de l'Espace de Scrips ne fonctionne pas pour ce type de recherche dans TOUS les scripts ? J'ai saisi au hasard "Halt If" et même ça, pourtant très présent dans les scripts, ne retourne rien avec ENTER... Curieux.

 

 

Link to comment
Share on other sites

  • 0

La syntaxe  de la définition de la variable $$Picker est la même quant à la méthode. Elle envoie au script un paramètre au format JSON. Mais cette donnée JSON n'est pas structurée à l'identique selon le contexte ( ne contient pas les mêmes clés  selon la rubrique dans laquelle tu entres ton curseur.)

Ces rubriques utilisent toutes le même mécanisme. Au moment où tu entres dans la rubrique un déclencheur 'SurEntréeObjet' envoie au script 'Generic - Picker - Open Picker' le paramètre de script

ex: Entrer dans la rub Company du modèle Location envoie ce  paramètre:

JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( LOCATION::_kftCompanyID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( COMPANY::__kptID ) ; JSONString ] ;
	[ "layoutID" ; 192 ; JSONNumber ]
)

… dans la rub. Company du modèle Quote:

JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( QUOTE::_kftCompanyID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( COMPANY::__kptID ) ; JSONString ] ;
	[ "layoutID" ; 192 ; JSONNumber ];
	[ "dump[0].field" ; ObtenirNomRubrique ( QUOTE::_kftLocationID ) ; JSONString ];
	[ "dump[1].field" ; ObtenirNomRubrique ( QUOTE::_kftBillingLocationID ) ; JSONString ];
	[ "dump[2].field" ; ObtenirNomRubrique ( QUOTE::_kftContactID ) ; JSONString ]
)

… dans la rub. Contact du modèle Quote:

JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( QUOTE::_kftContactID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( CONTACT::__kptID ) ; JSONString ] ;
	[ "companyID" ; QUOTE::_kftCompanyID ; JSONString ] ;
	[ "layoutID" ; 190 ; JSONNumber ] ; 
	[ "filter[0].field" ; ObtenirNomRubrique ( CONTACT::_kftCompanyID ) ; JSONString ] ;
	[ "filter[0].value" ; QUOTE::_kftCompanyID ; JSONString ] ; 
	[ "creator[0].field" ; ObtenirNomRubrique ( CONTACT::_kftCompanyID ) ; JSONString ];
	[ "creator[0].value" ; QUOTE::_kftCompanyID ; JSONString ];
	[ "creator[1].field" ; ObtenirNomRubrique ( CONTACT::_kftLocationID ) ; JSONString ];
	[ "creator[1].value" ; QUOTE::_kftLocationID ; JSONString ] 
)

et tous vont s'ouvrir sur une fenêtre modale faisant appel à un modèle spécifique contenant chacun eux aussi d'autres déclencheurs de scripts ou de boutons performants des actions de sélection/recherche/création/annulation.

Après l'ajout de ta table 'Affaires', afin de parvenir à tes fins, je te suggère humblement d'établir avec papier et crayon à l'appui, d'établir le nouveau diagramme des liaisons pour définir au mieux tes besoins en terme de rubriques/globales/modèles/scripts/variables etc …

Link to comment
Share on other sites

  • 0

Merci beaucoup, Clem, de tes recherches !

Par contre, comment ces 3 exemples sont-ils exploitables pour moi ?

Suis-je censé les copier-coller quelque part (et où) ?

Ou c'est juste pour me dire et montrer ce que le script "Generic - Picker - Open Picker" engendre ? Mais alors, que faire à partir de là ?

Faut-il que je me mette en mode Modèle, puis entre par exemple dans la rubrique companyName ? Ou bien je dois le coller dans un Script existant ?

(navré de te demander cette précision...)

 

En fait, je suis sur ce programme depuis pas mal de temps, et j'ai déjà créé la Table AFFAIRE, placée (en onglet du haut) entre Contacts et Quotes. Et tout a priori fonctionne (New, Create, Go To, etc), notamment avec tous les onglets en bas, car j'ai refait tous les scripts pour que ça marche. Bien que ultra novice, en observant bien j'ai pu "deviner" certaines choses assez similaires. Mais tout n'est peut-être pas parfait, je retesterai le tout plus tard.

 

De mon côté, j'ai les précisions suivantes : c'est le Script QuickPick / Generic - Picker - Set ID qui génère le message d'erreur "ERROR: could not update the current record" (et bloque tout) qui arrive quand je clique sur un des noms de la liste (de company ou contacts), sans générer l'enregistrement. Je ne sais pas si c'est une information utile ?

 

Par ailleurs, j'ai actuellement sur ma Table AFFAIRE, les valeurs de $$PickerJSON suivants :

 

rubrique Company dans Modèle AFFAIRE (Data Entry) :

{"layoutID":192,"setID":"LOCATION::_kftCompanyID","withID":"COMPANY::__kptID"}

Là, il faudrait je suppose remplacer LOCATION par AFFAIRE (la "base structurelle" était ici LOCATION)

 

rubrique Contact dans Modèle AFFAIRE (Data Entry) :

{"companyID":"","creator":[{"field":"CONTACT::_kftCompanyID","value":""},{"field":"CONTACT::_kftLocationID","value":""}],"filter":[{"field":"CONTACT::_kftCompanyID","value":""}],"layoutID":190,"setID":"QUOTE::_kftContactID","withID":"CONTACT::__kptID"}

Là, il faudrait je suppose remplacer QUOTE par AFFAIRE (la base était ici QUOTE, car j'avais imaginé que la notion de devis était plus proche d'une affaire, mais à l'époque je ne connaissais pas le DataViewer découvert hier et bien pratique pour approfondir les choses)

 

Par contre, y a-t-il un moyen de trouver cette longue syntaxe et la corriger ? Ou bien c'est ce que tu m'as montré ci-avant qui peut conduire à ça ?

Merci de me préciser tout cela, car malheureusement c'est un peu flou pour moi.

 

NB : comme tu as téléchargé le programme, peux-tu je te prie vérifier si le bouton Email fonctionne dans Quote ou Order ? Car moi, j'ai un message d'erreur "Files are damaged or missing, reinstall" (avec la version de base, pas ma version modifiée). Merci.

Link to comment
Share on other sites

  • 0

Bonjour Clem,

Suite à ta réponse, je t'avais demandé quelques précisions pour pouvoir corriger ma Base sur ce point.

J'ai bien vu l'analogie globale et les différences selon les contextes, mais je voudrais surtout savoir comment exploiter tes informations. Faut-il les copier dans un script (spécifique pour chaque module), en adaptant selon mon nom de module ?

Dans Open Picker, je retrouve bien ce que tu écris (hormis les noms de modules explicités). Ce que je ne comprends pas, c'est qu'avec le script "Generic - Open Picker" tout fonctionne parfaitement avec les autres modules (donc hormis avec le mien). Les lignes de commandes seraient à ajouter uniquement pour mon module, je suppose.

Merci de bien vouloir avoir l'amabilité de me répondre. Cela me permettra d'avancer là-dessus ce week-end.

 

Link to comment
Share on other sites

  • 0

En fait, l'entraide sur le forum n'est pas de la prestation bénévole non plus.

Chapeau à @Clem de s'être déjà autant impliqué.

Link to comment
Share on other sites

  • 0

Bonjour Clem,

Finalement, j'ai fini par comprendre où se situaient ces fameux paramètres. Comme il y a le mot "facultatif" présent, je l'avais déjà vu précédemment (ailleurs) mais n'avaient pas perçu le côté déclenchant et finalement lourd de conséquence sur les données (et le bon fonctionnement du programme).

COMPANY et CONTACTS fonctionnent parfaitement désormais dans AFFAIRE. Super !

 

Il ne me reste plus qu'une seule chose à faire, désormais, pour parachever ma Base.

Comme tu l'avais très pertinemment évoqué, j'ai repensé ce que je souhaite obtenir in fine. Je me permets de joindre une copie du Graphe (seulement la partie où il y a Affaire, ainsi que 2 Tables toutes simples que je souhaite lier (pour générer un historique d'utilisation). Je vais sans doute supprimer certaines Tables d'Occurences qui me semblent pas pertinentes (car inspirées de LOCATION et pas de QUOTE qui est plus dans l'esprit d'AFFAIRE, selon moi). 

En effet, l'idée est de créer une Table de Salles, une Table de Lieux (comprenant 1 à plusieurs de ces Salles, donc une relation N Salles > 1 Lieu), et une Table Externe (en onglet du bas dans AFFAIRE) symbolisant l'Historique d'utilisation (des Lieux/Salles dans le temps).

Pour cette dernière, il y a je pense 2 approches, et j'ignore quelle est la plus pertinente (N > 1 ou N > N ?) :

Toute la subtilité réside dans le fait qu'on est sur un caractère récurrent (par exemple une Fête de fin d'année se tient chaque année vers Novembre-Décembre, parfois depuis 20 ou 30 ans). Dans mon esprit, une Affaire a un "numéro unique" (une date, lieu et contenu uniques) qui est visuellement le résultat de l'agrégation de l'Edition (ou l'Année) à la fin de la "Dénomination". Cela donne sur le Formulaire (Data Entry) :

 

• Rubrique 1 (créée) appelée "Dénomination Evénement" : Soirée du Personnel Société BIDULE (DRH), = le Service commanditaire

(c'est je suppose grace à cette rubrique que l'on peut historiser l'événement pour afficher toutes les Editions de CET événement, et afficher les Lieux correspondants)

 

• Rubrique 2 (créée) appelée "Intitulé Evénement" : Soirée du Personnel Société BIDULE (DRH) 2021 (donc rajout de l'année)

(par contre, cette rubrique sert essentiellement si on a besoin de considérer cet événement comme unique)

 

Mon raisonnement est-il bon (ou pas) ? Et mes liens entre Tables sont-ils valables et capables de permettre ce résultat ?

(bien sûr, j'ai conscience que c'est la clé primaire qui est fondamentale pour l'unicité d'une valeur, mais j'ai trouvé cette astuce supplémentaire pour contourner la difficulté de la récurrence d'un événement en particulier). Il y a peut-être mieux ou plus malin ?

 

NB : ce principe pourra aussi permettre d'afficher dans, par exemple, LOCATION ou COMPANY l'historique, cette fois, de TOUS les événements organisés par les divers Services/commanditaires de l'entreprise (pour avoir une vue globale de tout ce qui a été réalisé dans le passé, avec par exemple un tri du plus récent au plus ancien).

 

Quel est ton sentiment ou analyse concernant les données telles que présentées ? Y a-t-il beaucoup d'âneries (très probable) ?

Merci beaucoup !!!

Il est bien agréable, en ces temps particuliers et difficiles, de rencontrer des personnes aimables comme toi qui ont le sens de l'entraide...

 

Pièces Jointes :

• Table Affaire (peut-être manque-t-il quelques rubriques utiles ou indispensables, même si j'en ai copié pas mal, m'inspirant d'autres Tables similaires),

• Graphe (qui montre les liens notamment des Tables que j'ai créées vers le bas, qui sont en mode "développé", tandis que les Occurrences "pas développées" sont copiées des autres Occurrences, de Quote ou Location).

 

Graphe.jpg

Table Affaire.jpg

Link to comment
Share on other sites

  • 0

Bonjour,

Parmi mes objectifs, un est partiellement atteint : insérer un nouvel onglet AFFAIRE dans les modules COMPANY, LOCATION et CONTACT.

L'architecture du programme permet de rajouter un onglet du bas pour afficher les données de mon module créé (avec compteur). Cela fonctionne très bien pour le module CONTACT, mais en revanche hélas pas pour COMPANY et LOCATION (où cela devrait également marcher puisque j'ai copié la même méthode en changeant évidemment tous les paramètres des formules ou scripts). 

Le souci vient du fait qu'en redéfinissant la formule adaptée (que l'on retrouve à l'identique pour chaque module), celle-ci ne peut pas être enregistrée !!! J'ai beau remplacer QUOTE par AFFAIRE, valider et enregistrer tout dans "Configuration du Panneau à onglets", "définir" avec la fenêtre de "Calcul" qui s'ouvre sur :

 

"Affaires " & Definir ([ vCount = Decompte ( company__QUOTE__companyID::__kptID ) ; vDisplay = Si ( vCount ≠ 0 ; "(" & vCount & ")" ; "" ) ]; vDisplay )

 

quand je réouvre, c'est toujours le mot QUOTE (pourtant remplacé maintes fois par le mot AFFAIRE !!!!) qui est systématiquement présent ?? D'où l'info fausse dans la Table Externe...

Pourquoi donc ? Est-ce parce qu'il y a absence de lien (alors que l'Occurrence company__AFFAIRE__companyID existe bel et bien dans le Graphe et est, sauf erreur, "reliée") ? Je ne comprends pas bien.

Une idée à mon problème ?

Merci.

 

 

 

Link to comment
Share on other sites

  • 0

Bonjour à tous,

Ayant pu créer une Table en ajoutant les scripts nécessaires, je souhaite ajouter cette fois à l'intérieur d'un Formulaire existant une rubrique qui aurait une Carte-fenêtre listant l'ensemble des personnes de la Database (en pop-up). C'est fait et ça marche "physiquement".

C'est sur le formulaire de saisie de CONTACT, que je veux ajouter le prénom/nom d'une personne. Le premier nom est donc saisissable (puisque dans une rubrique à remplir), mais le second devrait s'enregistrer une fois la liste déroulante affichée (depuis cette deuxième rubrique), puis le clic fait sur un des noms proposés. Eh bien non, rien ne se passe !! Le nom "cliqué" ne reste pas inscrit dans la rubrique dédiée, il disparaît instantanément.

Ai-je mal choisi la TE ? D'où cela peut-il venir ?

Ma structure est la suivante :

Une Table CONTACT, une OT de CONTACT par duplication (renommée "contact__CONTACT__contactID") avec un lien clé primaire / clé primaire pour afficher la totalité des gens (lien X), une Table de Relations, et une OT de CONTACT liée à une OT de RELATION (lien N > N)

 

Comme le programme passe beaucoup par scripts voire sous-scripts, c'est justement un script qui déclenche l'affichage des gens en Carte-fenêtre, mais c'est complété par le Paramètre de script facultatif (mais là impératif, sinon message d'erreur !) suivant (que j'ai écrit...) :

 

JSONSetElement ( "{}" ;

    [ "setID" ; ObtenirNomRubrique ( contact__CONTACT__contactID::_kftContactID ) ; JSONString ];

    [ "withID" ; ObtenirNomRubrique ( CONTACT::__kptID ) ; JSONString ] ;

    [ "companyID" ; contact__CONTACT__contactID::_kftCompanyID ; JSONString ] ;

    [ "layoutID" ; 190 ; JSONNumber ] )

 

C'est sûrement là que c'est problématique.

Où donc est-ce faux ? Mauvais choix de Table dans la syntaxe ? Mauvaises clés foreign ? Manque-t-il des termes (dumb / filter / creator / field / value etc)?

 

Voici ci-après, pour info, les divers paramètres selon la place où se trouve la rubrique concernée. Dans ces 3 cas, on est sur une rubrique se référant à une deuxième Table, contrairement à mon problème actuel qui porte sur une seule Table, avec un Modèle Formulaire où les 2 données "noms" sont présentes.

 

Le 17/03/2021 à 16:50, Clem a dit :

La syntaxe  de la définition de la variable $$Picker est la même quant à la méthode. Elle envoie au script un paramètre au format JSON. Mais cette donnée JSON n'est pas structurée à l'identique selon le contexte ( ne contient pas les mêmes clés  selon la rubrique dans laquelle tu entres ton curseur.)

Ces rubriques utilisent toutes le même mécanisme. Au moment où tu entres dans la rubrique un déclencheur 'SurEntréeObjet' envoie au script 'Generic - Picker - Open Picker' le paramètre de script

ex: Entrer dans la rub Company du modèle Location envoie ce  paramètre:




JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( LOCATION::_kftCompanyID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( COMPANY::__kptID ) ; JSONString ] ;
	[ "layoutID" ; 192 ; JSONNumber ]
)

… dans la rub. Company du modèle Quote:




JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( QUOTE::_kftCompanyID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( COMPANY::__kptID ) ; JSONString ] ;
	[ "layoutID" ; 192 ; JSONNumber ];
	[ "dump[0].field" ; ObtenirNomRubrique ( QUOTE::_kftLocationID ) ; JSONString ];
	[ "dump[1].field" ; ObtenirNomRubrique ( QUOTE::_kftBillingLocationID ) ; JSONString ];
	[ "dump[2].field" ; ObtenirNomRubrique ( QUOTE::_kftContactID ) ; JSONString ]
)

… dans la rub. Contact du modèle Quote:




JSONSetElement ( "{}" ; 
	[ "setID" ; ObtenirNomRubrique ( QUOTE::_kftContactID ) ; JSONString ];
	[ "withID" ; ObtenirNomRubrique ( CONTACT::__kptID ) ; JSONString ] ;
	[ "companyID" ; QUOTE::_kftCompanyID ; JSONString ] ;
	[ "layoutID" ; 190 ; JSONNumber ] ; 
	[ "filter[0].field" ; ObtenirNomRubrique ( CONTACT::_kftCompanyID ) ; JSONString ] ;
	[ "filter[0].value" ; QUOTE::_kftCompanyID ; JSONString ] ; 
	[ "creator[0].field" ; ObtenirNomRubrique ( CONTACT::_kftCompanyID ) ; JSONString ];
	[ "creator[0].value" ; QUOTE::_kftCompanyID ; JSONString ];
	[ "creator[1].field" ; ObtenirNomRubrique ( CONTACT::_kftLocationID ) ; JSONString ];
	[ "creator[1].value" ; QUOTE::_kftLocationID ; JSONString ] 
)

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...