Erreur dans script

102 views
Skip to first unread message

RG T

unread,
May 29, 2024, 7:05:31 PM5/29/24
to memento...@googlegroups.com
Bonjour
Je reviens vers vous pour un problème reccurent qui commence à bien me prendre la tête
J'explique sur quelques script j'ai un message d'erreur qui s'affiche en fin d'éxécution (voir copie écran). Or le script fonctionne parfaitement et j'ai bien le résultat que j'attendais.
Si je mets un message() à la fin le problème disparaît et si je l'enlève le problème réapparaît. D'autre part peut on modifier le temps d'affichage de message()? J'ai essayé dans la journée de faire un script que j'ai l'habitude de faire et la j'ai eu ce message d'erreur et je n'avais pas mis message(), je l'ai mis le problème est parti. Curieux? J'aimerai bien comprendre!
Merci.TRG

Good morning
I'm coming back to you for a recurring problem that's starting to bother me.

 I explain on some scripts I have an error message which is displayed at the end of execution (see screenshot). But the script works perfectly and I have the result I expected.

 If I put a message() at the end the problem disappears and if I remove it the problem reappears. On the other hand, can we modify the display time of message()? I tried during the day to create a script that I usually do and I got this error message and I hadn't put message(), I put it the problem is left. Curious? I would like to understand!

 Thank you.TRG

Screenshot_20240530_005014_Memento Database.jpg

Mmm

unread,
May 30, 2024, 2:13:05 AM5/30/24
to mementodatabase
Можно предположить, что в скрипте ошибочно вместо круглых скобок использованы фигурные. 
Пример:
"{" + 1 + "}"  вместо "(" + 1 + ")" 

Для точного определения нужно полное описание ошибки. 
четверг, 30 мая 2024 г. в 02:05:31 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 7:04:25 AM5/30/24
to Mmm, memento...@googlegroups.com
Bonjour
Merci Mmm pour votre réponse. En fait en poussant un peu plus mes recherches je penses avoir plusieurs problèmes dans les scripts, qui on peut être le même point de départ.
Problème 1: je teste le script avec le triangle en haut à droite. Le script fonctionne. Message de succés et milliseconde de temps. Je le teste dans la bibliothèque (Action / base). J'ai une erreur et le code le s'éxécute pas. Je ne peux pas voir d'ou vient l'erreur car le message n'est pas assez grand. Le fait de mettre message() n'y fait rien
Problème 2 : je teste le code j'ai une erreur ( ligne 11), mais le code fonctionne et le résultat est conforme à mes attentes. L'ajout message() enlève le message d'erreur en éxécution.
Les erreurs apparaissent lorsque le script est action et actif sur la bibliothèque.
Je pense que mes scripts comportent une erreur mais je ne vois pas laquelle, un oeil nouveau et experimenté m'aiderai.
Merci de votre aide.
TRG
Доброе утро
 Спасибо, Ммм, за ответ. На самом деле, продвинув свое исследование немного дальше, я думаю, что у меня есть несколько проблем в сценариях, которые могут стать той же отправной точкой.
 Проблема 1: я тестирую скрипт с треугольником вверху справа. Скрипт работает. Сообщение об успехе и миллисекундное время. Я тестирую это в библиотеке (Действие/база). У меня ошибка и код не выполняется. Я не вижу, откуда возникла ошибка, потому что сообщение недостаточно велико. Установка message() ничего не дает
 Проблема 2: Я тестирую код, у меня есть ошибка (строка 11), но код работает и результат такой, как я ожидал. Добавление message() удаляет сообщение об ошибке во время выполнения.
 Ошибки появляются, когда сценарий активен и активен в библиотеке.
 Мне кажется в моих скриптах ошибка но не вижу какая, новый и опытный глаз мне поможет.
 Спасибо за помощь.
 ТРГ
Good morning
 Thank you Mmm for your response. In fact, by pushing my research a little further, I think I have several problems in the scripts, which could be the same starting point.
 Problem 1: I'm testing the script with the triangle at the top right. The script works. Success message and millisecond time. I test it in library (Action/base). I have an error and the code does not execute. I can't see where the error is coming from because the message isn't big enough. Putting message() does nothing
 Problem 2: I test the code I have an error (line 11), but the code works and the result is as I expected. Adding message() removes the runtime error message.
 The errors appear when the script is action and active on the library.
 I think my scripts have an error but I don't see which one, a new and experienced eye will help me.
 Thank you for your help.
 TRG

--
You received this message because you are subscribed to the Google Groups "mementodatabase" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mementodataba...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mementodatabase/b8ee832b-37b6-441e-be00-f1047b91b470n%40googlegroups.com.
Screenshot_20240530_123528_Memento Database.jpg
Screenshot_20240530_123555_Memento Database.jpg
Screenshot_20240530_124405_Memento Database.jpg

Bill Crews

unread,
May 30, 2024, 7:52:29 AM5/30/24
to trg...@gmail.com, mii...@gmail.com, memento...@googlegroups.com

"Putting message() does nothing" means nothing to me. In all my 9 years of scripting Memento, I've never seen message() do nothing. But you say it fixes an error? I'm confused.

Telling us "line 11" doesn't help if you don't show us the script. I'd like to help, but I don't know enough.


Mmm

unread,
May 30, 2024, 8:56:54 AM5/30/24
to mementodatabase
В скрипте "Проблема 1" (i+1 >  longueur, записи с таким индексом нет) =>

for (var i = 1; i < longueur; i++) {

var E1 = entries[i-1].field('Litres');
var E2 = entries[i].field('Litres');
...

четверг, 30 мая 2024 г. в 14:52:29 UTC+3, bill....@gmail.com:
Message has been deleted

RG T

unread,
May 30, 2024, 9:26:08 AM5/30/24
to Mmm, memento...@googlegroups.com
Je vous donne les scripts. Il s'agit de deux bases differentes. 

Le problème 1 je cherche à collecter l'ensemble des valeurs de la base pour un champs. Le script ne s'éxécute pas et j'ai un message erreur bien qu'au test soit correct.

Le problème 2 je compare le dernier enregistrement à l'avant dernier et je fais la difference entre deux champs numérique. Pour ce script j'ai un message d'erreur au test et en éxecution mais il fonctionne tout de même. Le message d'erreur disparaît lorsque je mets message().
TRG

Я дам вам сценарии. Это две разные базы. 


 Проблема 1. Я пытаюсь собрать все значения базы данных для поля. Сценарий не запускается, и я получаю сообщение об ошибке, хотя тест верен.


 Проблема 2. Я сравниваю последнюю запись с предпоследней и различаю два числовых поля. Для этого скрипта во время тестирования и выполнения появляется сообщение об ошибке, но он все равно работает. Сообщение об ошибке исчезает, когда я помещаю message().

I'll give you the scripts. These are two different bases. 


 Problem 1 I'm trying to collect all the database values ​​for a field. The script does not run and I get an error message even though the test is correct.


 Problem 2 I compare the last record to the penultimate and I differentiate between two numeric fields. For this script I have an error message during testing and execution but it still works. The error message disappears when I put message().

SCRIPT PROBLEME 1:
//---CALCUL VARIATIONS
var e = entry();
var entrées = lib().entries();
var longueur = entrées.length;
var nb = entry().field("Nombre");
var bn = 0;
for (var i=0; i<longueur; i++)
bn = bn + entrées[i].field("Nombre");
e.set("calcul", bn);

SCRIPT PROBLEME 2:
//---CALCUL VARIATIONS
var entries = lib().entries();
var longueur = entries.length;

//--- BOUCLE ---
for (var i = 0; i < longueur+1; i++) {

//---RECUPERATIONS VALEURS ---
// i est la dernière entrée. i+1 est le jour le plus récent.
var E1 = entries[i].field("Litres");
var E2 = entries[i+1].field("Litres");

var diff = E1-E2

if (Number(E1) > Number(E2))
var EE = "↗️"
else if (Number(E1) == Number(E2))
var EE = "↔️"
else if (Number(E1) < Number(E2))
var EE = "↘️"

if (diff == 1)
var l = " litre"
else if (diff == 0)
var l = " litre"
else if (diff == -1)
var l = " litre"
else if (diff > 1)
var l = " litres"
else if (diff < -1)
var l = " litres"

entries[i].set("Variation", EE + " " + diff + l)
entries[i].set("Variation2", diff)
message("Données :\n• modifiées et enregistrées");
}



Mmm

unread,
May 30, 2024, 9:44:20 AM5/30/24
to mementodatabase
Ответ пропал... Если писать сообщение на переведённой странице, то сообщение может быть удалено при отправке. 

Писал про 

SCRIPT PROBLEME 1:
//---CALCUL VARIATIONS
var entrées = lib().entries();
var bn = 0;
for (var e of entrées) {
    bn += Number(e.field("Nombre"));
entry().set("calcul", bn);

четверг, 30 мая 2024 г. в 16:26:08 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 9:51:02 AM5/30/24
to Mmm, memento...@googlegroups.com

Mmm

unread,
May 30, 2024, 10:39:45 AM5/30/24
to mementodatabase
В моем сообщении выше про "Проблема 2" я написал неполный ответ, так как на скриншот не был виден скрипт полностью. 
В конце скрипта индекс [i] нужно заменить на [i-1] при записи результатов. 

четверг, 30 мая 2024 г. в 16:51:02 UTC+3, trg...@gmail.com:

Bill Crews

unread,
May 30, 2024, 12:14:23 PM5/30/24
to RG T, Mmm, memento...@googlegroups.com
For problem 1, check first that entrées.length > 1 before running the script.


RG T

unread,
May 30, 2024, 12:48:02 PM5/30/24
to Bill Crews, memento...@googlegroups.com
J'ai fait ce que vous me dites, problème toujours là. Ce que je ne comprends pas c'est que le script fonctionne parfaitement en test, vue de l'enregistrement et enregistrement de la liste. Et ne fonctionne pas pour base et enregistrement par lot.

I did what you told me, problem still there. What I don't understand is that the script works perfectly in test, view record and list record. And does not work for basic and batch recording.

Я сделал то, что вы мне сказали, проблема все еще существует. Чего я не понимаю, так это того, что скрипт отлично работает при тестировании, просмотре записей и записи списка. И не работает для базовой и пакетной записи.

Mmm

unread,
May 30, 2024, 2:45:02 PM5/30/24
to mementodatabase
Выложите исправленный скрипт, в котором остались проблемы. 
Вероятно не все рекомендации выполнены. 

четверг, 30 мая 2024 г. в 19:48:02 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 2:56:13 PM5/30/24
to Mmm, Bill Crews, memento...@googlegroups.com
Je poste le script avec les modifications recommandées par Bill. 
Est ce que déjà il semble que j'ai fait une erreur dans la conception du script sachant que je veux agreger le champs nombre pour avoir le total. 
Il aussi possible que je n'ai pas compris les directives de Bill.

//---CALCUL VARIATIONS
var e = entry();
var entrées = lib().entries();
var longueur = entrées.length;
var nb = entry().field("Nombre");
var bn = 0;
entrées.length > 1
for (var i=0; i<longueur; i++)
bn = bn + entrées[i].field("Nombre");
e.set("calcul", bn);

Mmm

unread,
May 30, 2024, 3:13:09 PM5/30/24
to mementodatabase
Ваша реализация рекомендации Билла не поддерживается языком JavaScript. 

Попробуйте так, как я писал выше:
Mmm 16:44 (5 часов назад) 

//---CALCUL VARIATIONS
var entrées = lib().entries();
var bn = 0;
for (var e of entrées) {
    bn += Number(e.field("Nombre"));
entry().set("calcul", bn);


Только учитывайте, что скрипт в этом виде не будет работать в библиотеке или при массовых действиях. 
Он предназначен для заполнения поля "calcul" в текущей записи. 
четверг, 30 мая 2024 г. в 21:56:13 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 3:25:14 PM5/30/24
to Mmm, Bill Crews, memento...@googlegroups.com
Tout d'abord merci.
J'ai fait un copier / collé du code que vous m'avez envoyé. Le problème persiste et le script ne fonctionne pas (Pas de calcul).

Mmm

unread,
May 30, 2024, 3:54:13 PM5/30/24
to mementodatabase
Опишите, как применяете этот скрипт и какой результат ожидаете?
Это весь скрипт или часть скрипта? 
Как осуществляется запуск скрипта: триггер и какой, действие и в чем (библиотека, массовое действие, запись), поле-кнопка, поле JS? 
Какой тип поля "Nombre"? 

Сейчас скрипт суммирует поля "Nombre" всех записей библиотеки (включая текущую запись) и результат сохраняется в поле "calcul" текущей записи. Ничего другого ожидать от выполнения не нужно. 

четверг, 30 мая 2024 г. в 22:25:14 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 4:17:45 PM5/30/24
to Mmm, Bill Crews, memento...@googlegroups.com
Il s'agit d'une bibliothéque comportant un champs numérique : nombre. Le script est un script action dont le lieu est la base. Je veux faire la somme de tous les champs nombre de la bibliothèque et reporter le résultat dans un champs calcul pour m'en servir ultérieurement.
Il n'y a que ce sénario et je ne veux que ça.

J'ai fait le tour de mes bases et de mes scripts. TOUT les scripts ACTION ayant pour lieu BASE et qui dans le script demande  une agregation ou in calcul sur 'i' renvoi un message d'erreur.

Er Mo

unread,
May 30, 2024, 4:21:44 PM5/30/24
to mementodatabase
Hallo
Versuche mal das das Ergebnis in ein Zahlenfeld geschrieben wird und nicht in ein Berechnungfeld .

Bonjour
Essayez d'écrire le résultat dans un champ numérique et non dans un champ de calcul.

Ernst

RG T

unread,
May 30, 2024, 4:24:55 PM5/30/24
to Er Mo, Mmm, Bill Crews, memento...@googlegroups.com
J'écris dans un champs numérique entier, c'est le champs qui s'appelle calcul.

Mmm

unread,
May 30, 2024, 4:45:38 PM5/30/24
to mementodatabase
Скрипт Действие в библиотеке заполнит поля "calcul" всех записей суммой полей "Nombre" всех записей. 

//---CALCUL VARIATIONS
var entrées = lib().entries();
var bn = 0;

bn = entrées.map(item => bn += Number(item.field("Nombre")));

for (var e of entrées) {
    if (Number(e.field("calcul")) != bn) {
        e.set("calcul", bn);
    } 

Надеюсь задача в этом. 

четверг, 30 мая 2024 г. в 23:24:55 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 5:00:40 PM5/30/24
to Mmm, Bill Crews, Er Mo, memento...@googlegroups.com
Je n'ai aucune erreur qui s'affiche mais le resultat n'est pas dans le champs calcul, il est vide. 
J'avoue que votre code pour un novice comme moi me deroute......mais j'apprends.

RG T

unread,
May 30, 2024, 5:15:02 PM5/30/24
to Mmm, Bill Crews, Er Mo, memento...@googlegroups.com
Petite précision si le champs est numérique (entier), le champ reste vide. J'ai changé le champs de numérique en texte et là le champs se rempli des valeurs du champs Nombre séparé par des virgules (tableau).

RG T

unread,
May 30, 2024, 5:32:26 PM5/30/24
to Mmm, Bill Crews, Er Mo, memento...@googlegroups.com
J'ai rajouté un enregistrement. J'ai bien la somme mais du dernier enregistrement avec chaque autre enregistrement. Le total de l'ensemble des nombres est bien 232. En rajoutant 10000 j'ai 10232.

Screenshot_20240530_232653_Memento Database.jpg
Screenshot_20240530_232407_Memento Database.jpg

Mmm

unread,
May 30, 2024, 5:48:37 PM5/30/24
to mementodatabase
Это моя ошибка (лёгкий перегрев) 

//---CALCUL VARIATIONS
var entrées = lib().entries();
var bn = 0;

entrées.map(item => bn += Number(item.field("Nombre")));

for (var e of entrées) {
    if (Number(e.field("calcul")) != bn) {
        e.set("calcul", bn);
    } 

пятница, 31 мая 2024 г. в 00:32:26 UTC+3, trg...@gmail.com:

RG T

unread,
May 30, 2024, 6:54:01 PM5/30/24
to Mmm, Bill Crews, Er Mo, memento...@googlegroups.com
Merci beaucoup Mmm, cela fonctionne trés trés bien et c'est ce que je voulais, je vais finir maintenant ma base. Un problème de réglé.
Si j'ai bien compris, les 2 premières lignes, designent que c'est sur la base et assigne la valeur 0 à bn. Les 3 dernières, fait le tour de tout les enregistrements et dans le cas ou calcul est différent de bn renvoi bn sur le champ calcul.
C'est la ligne du centre qui me pose problème :
entrées.map(item => bn += Number(item.field("Nombre")));
Je n'arrive pas à l'interpréter
Merci encore d'avoir consacrer du temps à mes problèmes
TRG

Mmm

unread,
May 30, 2024, 7:01:26 PM5/30/24
to mementodatabase
Средняя часть это аналог такого цикла:

for (var e of entrées) {
    bn += Number(e.field("Nombre"));


пятница, 31 мая 2024 г. в 01:54:01 UTC+3, trg...@gmail.com:
Reply all
Reply to author
Forward
0 new messages