4D View Pro et formule sur date

1/ il n’existe pas de format de date équivalent à “Jour du mois” dans 4D View Pro ?

2/ la formule suivante ne fonctionne plus:
="Semaine du “&RUNTIME_VIEW_STRING(FEUILLE_HEURE_DATESEMAINE();1)&” au "&RUNTIME_VIEW_STRING(FEUILLE_HEURE_DATESEMAINE()+6;1)

resultat:
Semaine du 05/08/2019 au <<<<

sous 4D View on avait bien:
Semaine du 05/08/19 au 11/08/19

3/pourquoi Eval 4D est maintenant noté UNSUPPORTED ?
exemple:
=UNSUPPORTED_EVAL4D(“Jour de([Feuille_Heure]DateSemaine)”)

N’y a t’il pas moyen d’être un peu plus subtile dans la conversion des EVAL4D ? :-?

Bonjour, voici quelques éléments de réponse

1/ Il n’existe pas de format de date équivalent à jour du mois dans 4D View Pro.

-> Si bien sûr, il suffit de mettre dans la chaîne de formatage “d” pour avoir par exemple 4 pour aujourd’hui 4 octobre, ou “dd” pour avoir 04, “ddd” pour avoir “ven.” ou enfin “dddd” pour avoir “vendredi”, “dddd d” vous donnera “vendredi 4” etc.

2/ C’est lié au fait que l’addition d’une date et d’un entier dans 4D View Pro ne donne pas une date mais un entier. La date est transformée en un entier qui est le nombre de jours entre la date et le 30 décembre 1899. Si vous voulez additionner un nombre de jours à une date et obtenir en retour une date, il faut passer par la formule suivante (imaginons une date en A1 et un nombre de jours en A2)
=DATE(YEAR(A1);MONTH(A1);DAY(A1)+A2)

3/ Pour des raisons de sécurité, nous avons supprimé la possibilité d’appeler directement n’importe quel code 4D au sein du tableur. Afin de rendre la conversion moins fastidieuse, nous avons choisi de convertir ces appels sous cette forme afin de les rendre immédiatement visibles, et en conservant l’expression afin de permettre au développeur de choisir la meilleure stratégie de conversion de ces expressions.

1/ Alors pourquoi n’est-il pas utilisé lors de la conversion de document 4D View vers 4D View Pro ?

2/ j’entends votre réponse mais même remarque, pourquoi un document qui utilise une formule (fonctionnelle) sur 4D View une fois convertie en 4D Vew Pro n’est pas traduite pour qu’elle puisse donner au final le même résultat (le même rendu) final que l’on a sur le document 4D View.

3/ là encore j’entends votre explication, mais comprenez qu’il n’est quasiment pas possible de gérer tous les cas même pour nous car les utilisateurs finaux peuvent avoir fait des formules de leur côté qui étaient fonctionnelles avec 4D View mais qui ne le seront plus avec 4D View Pro.

Ne faudrait-il pas pour pouvoir convertir l’existant contenu dans une base (on ne parle même pas des docs externes) faire une passe de conversion qui remonte toutes les formules non sécurisées qui ne passent pas la conversion et ajouter un module de traduction qui permettrait de rajouter une traduction souhaitée pour qu’on ait un document sous 4D View Pro qui soit exploitable.

Actuellement, je me retrouve avec un document converti qui n’a quasiment aucun intérêt car il ne ressemble plus à rien…

Si on bloque déjà rien qu’à l’étape de conversion, on n’est pas encore aux étapes de gestions de la saisie et de la programmation qui va avec !

Je ne vous cache pas notre forte inquietude à l’heure actuelle car on est, pour ce qui nous concerne, TRES loin du compte pour pouvoir espérer gérer ce que l’on fait actuellement avec le 4D View. Et malheureusement, le temps presse de plus en plus. Des décisions vont devoir être prises.

Je vous invite également à suivre les elements fournis dans TAOW
142505 : Conversion 4D View vers 4D View Pro [ACI0100043]
Afin que vous perceviez mieux la problématique.

1/ Alors pourquoi n’est-il pas utilisé lors de la conversion de document 4D View vers 4D View Pro ?

C’est bien entendu le cas, voici un fichier 4D View avec une date formatée pour faire apparaître le jour du mois, vous verrez que le formatage est correctement converti.

https://forums.4d.com/4DBB_Main/x_User/3889/files/31936582.zip

2/ j’entends votre réponse mais même remarque, pourquoi un document qui utilise une formule (fonctionnelle) sur 4D View une fois convertie en 4D Vew Pro n’est pas traduite pour qu’elle puisse donner au final le même résultat (le même rendu) final que l’on a sur le document 4D View.

C’est le cas lorsque c’est possible, si vous faites un appel à une fonction qui retourne une date et que vous lui additionnez un nombre, la conversion produit bien le mécanisme que je vous ai décrit, mais lorsque vous additionnez le résultat d’une méthode et d’un nombre, il n’y a pas d’indication sur ce que retourne la méthode, donc on garde le cas général de l’addition

3/ Il vous est tout à fait possible de faire une recherche rapide dans les documents générés pour vous assurer qu’il ne reste pas d’expression de type “UNSUPPORTED_xx” à l’intérieur.

Pour ce qui est d’analyser le contenu des EVAL_4D, on a considéré que si le développeur a eu le besoin de passer par un EVAL_4D plutôt que de mettre directement le code dans l’expression 4D View, c’est qu’il doit probablement utiliser du code plus compliqué ou spécifique que ce qu’il pourrait directement exprimer dans le langage de 4D View, et l’on a considéré que le développeur était le plus à même de savoir quoi faire, soit créer une méthode 4D avec le code appelé, soit faire la conversion dans le langage de 4D View Pro si c’est possible.

J’essai de remplacer la commande UNSUPPORTED_EVAL4D par ma propre méthode

je n’y arrive pas, pourriez vous m’aider.
Voici le code qui ne marche pas :
<code 4D>
C_COLLECTION($formulas)
$formulas:=VP Get formulas (VP All (“zoneProArea”))

C_COLLECTION($Lgformulas)
Pour chaque ($Lgformulas;$formulas)
	C_TEXTE($Formule)
	Pour chaque ($Formule;$Lgformulas)
		$formulas[$Lgformulas][$Formule]:=Remplacer chaîne($Formule;"UNSUPPORTED_EVAL4D";"NEWEVAL4D")
	Fin de chaque 
Fin de chaque 

VP SET FORMULAS (VP All ("zoneProArea");$formulas)

</code 4D>

NB j’ai déjà autorisée la méthode NEWEVAL4D est elle fonctionne.

UP

Quelqu’un peut m’aider SVP :pray: à corriger mon code pour pouvoir modifier les formules d’une zone 4D View Pro en lot.

Je le ferai plutôt en sauvegardant le document dans un objet, en le stringifiant avec JSON Stringify, et une fois l’objet sous forme de texte par un remplacement de chaine, puis en faisant à nouveau un objet avec JSON parse et en le réimportant.

C’est un peu bourrin mais il y a peu de chances que les utilisateurs aient écrit UNSUPPORTED_EVAL4D dans le texte de leurs cellule

Et si vous le faites en lot, vous n’aurez peut-être même pas besoin d’ouvrir directement les documents dans une zone 4D View Pro, mais le faire directement sur les documents.

Cela n’est pas possible, pour avoir la zone 4D View Pro avec les formules il faut au préalable faire une conversion du document de 4D View vers 4D View Pro pour ensuite avoir la zone 4D View Pro, pour ensuite pouvoir procéder aux modifications des formules dans ce documents convertie à la volé. De plus, il est indiqué dans la doc que toutes les formules ne sont pas autorisées !
Il faut avoir autorisés les méthodes 4D pour pouvoir les utiliser au sein d’un doc 4D View Pro.

J’ai tenté cela :

<code 4D>
C_COLLECTION($formulas)
$formulas:=VP Get formulas (VP All (“zoneProArea”))

C_COLLECTION($Lgformulas)
Pour chaque ($Lgformulas;$formulas)
	C_TEXTE($Formule)
	Pour chaque ($Formule;$Lgformulas)
		C_TEXTE($Valeur)
		$Valeur:=Remplacer chaîne($Formule;"UNSUPPORTED_EVAL4D";"NEWEVAL4D")
		$Lgformulas[$Formule]:=$Valeur
	Fin de chaque 
Fin de chaque 

VP SET FORMULAS (VP All ("zoneProArea");$formulas)

</code 4D>

mais j’obtiens cette erreur:
[]32497884;“Pourquoi…”[/]

Peut-on m’expliquer cette erreur ?

Je m’auto répond :wink:

ce code fonctionne:
<code 4D>
C_COLLECTION($Lgformulas)
Pour chaque ($Lgformulas;$formulas)
C_TEXTE($Formule)
C_ENTIER LONG($i)
$i:=0
Pour chaque ($Formule;$Lgformulas)
C_TEXTE($Valeur)
$Valeur:=Remplacer chaîne($Formule;“UNSUPPORTED_EVAL4D”;“NEWEVAL4D”)
$Lgformulas[$i]:=$Valeur
$i:=$i+1
Fin de chaque
Fin de chaque

</code 4D>

:slight_smile: