From f85e61511ab48502781ca0cbe63599976816e7e4 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 10:49:11 +0200 Subject: [PATCH 01/87] New translations mandata.md (French) --- .../docusaurus-plugin-content-docs/version-19/REST/manData.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md index 9a0679dba4c528..c2908cd418be5a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md @@ -3,7 +3,7 @@ id: manData title: Manipulation des données --- -Tous [les attributs et dataclasses exposé(e)s](configuration.md#exposing-tables-and-fields) ainsi que toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +Tous [les attributs et dataclasses exposé(e)s](configuration.md#exposing-tables-and-fields) ainsi que toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse, mais pas les données dans les requêtes. ## Rechercher des données From 183ae5e5b697d6053d64255ef58e3632c892483b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 11:36:16 +0200 Subject: [PATCH 02/87] New translations dataclassclass.md (French) --- .../version-20/API/DataClassClass.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md index d741e0e943e2e7..654fd74a01f526 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md @@ -1164,7 +1164,7 @@ Pour rendre possible ce type de recherche, ORDA prend en charge une syntaxe spé "relationAttribute.attribute = :1 AND relationAttribute{x}.attribute = :2 [AND relationAttribute{y}.attribute...]" ``` -**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque class index. +**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque index de classe. Dans notre exemple, cela pourrait donner : From 8768931db6e7e9862cb74207d6e5c04372f22644 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 12:03:50 +0200 Subject: [PATCH 03/87] New translations mandata.md (French) --- .../docusaurus-plugin-content-docs/version-20/REST/manData.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/REST/manData.md index e658d71edb16f4..2b41bc633bcfb6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/REST/manData.md @@ -3,7 +3,7 @@ id: manData title: Manipulation des données --- -Tous [les attributs et dataclasses exposé(e)s](configuration.md#exposing-tables-and-fields) ainsi que toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +Tous [les attributs et dataclasses exposé(e)s](configuration.md#exposing-tables-and-fields) ainsi que toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse, mais pas les données dans les requêtes. ## Rechercher des données @@ -242,7 +242,7 @@ Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez ## Récupérer une seule entité -Vous pouvez utiliser la syntaxe[`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous souhaitez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +Vous pouvez utiliser la syntaxe[`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous souhaitez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : `GET /rest/Company:companyCode("Acme001")` From e21beeee0acf17ebc829f283dbae6340f6cd5599 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 12:05:44 +0200 Subject: [PATCH 04/87] New translations method-list.md (French) --- .../version-20/ViewPro/method-list.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md index a742bf43388945..e6df307795e617 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md @@ -1138,7 +1138,7 @@ $vpObj:=VP Export to object("vpArea";New object("includeFormatInfo";False)) ### VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object @@ -3902,7 +3902,7 @@ VP REMOVE TABLE("ViewProArea"; "people"; vk table remove style; 2) -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From a39025cb496ecc95d260d2ccfa1419db0c6d48d9 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 12:05:55 +0200 Subject: [PATCH 05/87] New translations method-list.md (Spanish) --- .../version-20/ViewPro/method-list.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md b/i18n/es/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md index 3476375908407a..f9fb5b243dbd60 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md @@ -1137,7 +1137,7 @@ $vpObj:=VP Export to object("vpArea";New object("includeFormatInfo";False)) ### VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object @@ -3905,7 +3905,7 @@ VP REMOVE TABLE("ViewProArea"; "people"; vk table remove style; 2) -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 1389859568d78f194ff8bb63de69e3b9fcfca794 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 12:06:01 +0200 Subject: [PATCH 06/87] New translations method-list.md (Japanese) --- .../version-20/ViewPro/method-list.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md index 29718cbd8d6e37..9ac2c6a3cd8a96 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md @@ -1138,7 +1138,7 @@ $vpObj:=VP Export to object("vpArea";New object("includeFormatInfo";False)) ### VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object @@ -3906,7 +3906,7 @@ VP REMOVE TABLE("ViewProArea"; "people"; vk table remove style; 2) -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 971b0b9ab6b9404223fbde5f7087b9a5350cec3c Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 12:06:10 +0200 Subject: [PATCH 07/87] New translations method-list.md (Portuguese, Brazilian) --- .../version-20/ViewPro/method-list.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md b/i18n/pt/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md index b4f469964be92f..9d41fc47e59cf4 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20/ViewPro/method-list.md @@ -1133,7 +1133,7 @@ $vpObj:=VP Export to object("vpArea";New object("includeFormatInfo";False)) ### VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object @@ -3886,7 +3886,7 @@ VP REMOVE TABLE("ViewProArea"; "people"; vk table remove style; 2) -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From e977b8b369210006895305ed545906b8e4b540e6 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:04:44 +0200 Subject: [PATCH 08/87] New translations dataclassclass.md (French) --- .../current/API/DataClassClass.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md index 441b30df7bf975..883ed2987be859 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md @@ -1143,7 +1143,7 @@ ds.People.query("places.locations[a].kind= :1 and places.locations[a].city= :2"; #### Recherches dans les relations N vers N -ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : +ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : ![alt-text](../assets/en/API/manytomany.png) @@ -1163,7 +1163,7 @@ Pour rendre possible ce type de recherche, ORDA prend en charge une syntaxe spé "relationAttribute.attribute = :1 AND relationAttribute{x}.attribute = :2 [AND relationAttribute{y}.attribute...]" ``` -**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque class index. +**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque index de classe. Dans notre exemple, cela pourrait donner : From 43f5627f39d28f3581d18c9e352b8422b9dd219b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:27:15 +0200 Subject: [PATCH 09/87] New translations ordaclasses.md (French) --- .../current/ORDA/ordaClasses.md | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index f0c436ba844653..84479ca7fefcae 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -3,7 +3,7 @@ id: ordaClasses title: Classes du modèle de données --- -ORDA allows you to create high-level class functions above the [data model](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. +ORDA vous permet de créer des fonctions de classe de haut niveau au-dessus du [modèle de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. Par exemple, vous pouvez créer une fonction `getNextWithHigherSalary()` dans la classe `EmployeeEntity` pour retourner les employés ayant un salaire supérieur à celui qui est sélectionné. Il serait aussi simple à appeler que : @@ -125,7 +125,7 @@ Vous pouvez ensuite obtenir une sélection d'entité des "meilleures" entreprise :::info -[Les champs calculés](#computed-attributes) sont définis dans [la classe Entity](#entity-class). +[Les attributs calculés](#computed-attributes) sont définis dans la [classe Entity](#entity-class). ::: @@ -182,7 +182,7 @@ Chaque table exposée avec ORDA affiche une classe EntitySelection dans le class Class extends EntitySelection -//Extract the employees with a salary greater than the average from this entity selection +//Extraire les employés dont le salaire est supérieur à la moyenne de l'entity selection Function withSalaryGreaterThanAverage() : cs.EmployeeSelection return This.query("salary > :1";This.average("salary")).orderBy("salary") @@ -211,9 +211,9 @@ Chaque table exposée avec ORDA affiche une classe Entity dans le class store `c #### Class constructor -You can define a **class constructor** for an Entity class. The class constructor is called whenever an entity is created in memory and can be used to initialize some values. +Vous pouvez définir un **class constructor** (*constructeur de classe*) pour une classe d'entité. Le class constructor est appelé chaque fois qu'une entité est créée en mémoire et peut être utilisé pour initialiser certaines valeurs. -For information, please refer to the [Class constructor](#class-constructor-1) section. +Pour plus d'informations, veuillez consulter la section [Class constructor](#class-constructor-1). #### Attributs calculés @@ -450,13 +450,13 @@ Note over Qodly page: product.creationDate is "06/17/25"
and product.comment Un attribut calculé est un attribut de dataclass avec un type de données qui masque un calcul. [Les classes 4D standard](Concepts/classes.md) implémentent le concept de propriétés calculées avec des [fonctions d'accès](Concepts/classes.md#function-get-and-function-set) telles que `get` (*getter*) et `set` (*setter*). Les attributs de dataclass ORDA bénéficient de cette fonctionnalité et l'étendent avec deux fonctions supplémentaires : `query` et `orderBy`. -Un champ calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. +Un attribut calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. -Un champ calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. +Un attribut calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. -Tout comme les champs de stockage, les champs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les champs calculés peuvent implémenter une fonction de requête `query` qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. +Tout comme les attributs de stockage, les attributs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les attributs calculés peuvent implémenter une fonction de requête `query` personnalisée qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. -De même, les champs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les champs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. +De même, les attributs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les attributs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. ### Comment définir les attributs calculés @@ -585,7 +585,7 @@ Function query ($event : Object) -> $result : Object Cette fonction prend en charge trois syntaxes : -- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet objet `$event.result`. +- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet `$event.result`. - Avec les deuxième et troisième syntaxes, la fonction retourne une valeur dans *$result* : - Si *$result* est Text, il doit s'agir d'une chaîne de requête valide @@ -596,7 +596,7 @@ Cette fonction prend en charge trois syntaxes : | $result.query | Text | Chaîne de requête valide avec placeholders (:1, :2, etc.) | | $result.parameters | Collection | valeurs pour placeholders | -La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. +La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Lorsque la fonction `query` n'est pas implémentée pour un attribut calculé, la recherche est toujours séquentielle (basée sur l'évaluation de toutes les valeurs à l'aide de la fonction `get `). > Les fonctionnalités suivantes ne sont pas prises en charge : > @@ -635,10 +635,10 @@ Function query fullName($event : Object)->$result : Object If ($p>0) $firstname:=Substring($fullname; 1; $p-1)+"@" $lastname:=Substring($fullname; $p+1)+"@" - $parameters:=New collection($firstname; $lastname) // two items collection + $parameters:=New collection($firstname; $lastname) // collection deux éléments Else $fullname:=$fullname+"@" - $parameters:=New collection($fullname) // single item collection + $parameters:=New collection($fullname) // collection un seul élément End if Case of @@ -686,11 +686,11 @@ Function query age($event : Object)->$result : Object Case of : ($operator="==") - $query:="birthday > :1 and birthday <= :2" // after d1 and before or egal d2 + $query:="birthday > :1 and birthday <= :2" // après d1 et avant ou égal à d2 : ($operator="===") - $query:="birthday = :2" // d2 = second calculated date (= birthday date) + $query:="birthday = :2" // d2 = seconde date calculée (= birthday date) : ($operator=">=") $query:="birthday <= :2" @@ -712,11 +712,11 @@ Function query age($event : Object)->$result : Object Code d'appel, par exemple : ```4d -// people aged between 20 and 21 years (-1 day) -$twenty:=people.query("age = 20") // calls the "==" case +// personnes entre 20 et 21 ans (-1 jour) +$twenty:=people.query("age = 20") // appelle le cas "==" -// people aged 20 years today -$twentyToday:=people.query("age === 20") // equivalent to people.query("age is 20") +// personnes âgées de 20 ans aujourd'hui +$twentyToday:=people.query("age === 20") // équivaut à people.query("age is 20") ``` From 2bd7b1eac349e422c452545d5c5d4c579986f91b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:30:31 +0200 Subject: [PATCH 10/87] New translations $savedorderby.md (French) --- .../current/REST/$savedorderby.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$savedorderby.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$savedorderby.md index 4531ec691026ed..aca56e526c4de3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$savedorderby.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$savedorderby.md @@ -11,7 +11,7 @@ Lorsque vous créez un ensemble d'entités, vous pouvez, par sécurité, enregis Utilisez `$savedorderby` pour enregistrer l'ordre que vous avez défini lors de la création de votre ensemble d'entités, puis passez `$savedorderby` avec votre appel, pour récupérer à chaque fois l'ensemble d'entités. -Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. If you have used both [`$savedfilter`]($savedfilter.md) and `$savedorderby` in your call when creating an entity set and then you omit one of them, the new entity set, having the same reference number, will reflect that. +Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. Si vous avez utilisé à la fois [`$savedfilter`]($savedfilter.md) et `$savedorderby` dans votre appel lors de la création d'un ensemble d'entités et que vous omettez l'un d'entre eux, le nouvel ensemble d'entités, ayant le même numéro de référence, en tiendra compte. ## Exemple From 7fc80abb4e72589ec5791996a67a399ab92789da Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:30:37 +0200 Subject: [PATCH 11/87] New translations $skip.md (French) --- i18n/fr/docusaurus-plugin-content-docs/current/REST/$skip.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$skip.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$skip.md index ad6efb0f957505..5aa100762821b8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$skip.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$skip.md @@ -3,13 +3,13 @@ id: skip title: $skip --- -Démarre l'entité définie par ce numéro dans la collection (par exemple, `$skip=10`) +Démarre l'entité définie par ce numéro dans la selection (par exemple, `$skip=10`) ## Description `$skip` définit l'entité de la collection par laquelle commencer. Par défaut, la collection envoyée commence par la première entité. Pour commencer avec la 10e entité de la collection, passez 10. -`$skip` is generally used in conjunction with [`$top/$limit`]($top_$limit.md) to navigate through an entity collection. +`$skip` est généralement utilisé avec [`$top/$limit`]($top_$limit.md) pour naviguer dans une entity selection. ## Exemple From 46b81fdfb65ba82adeab15f1f1560ca11aae0b25 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:30:42 +0200 Subject: [PATCH 12/87] New translations $timeout.md (French) --- .../docusaurus-plugin-content-docs/current/REST/$timeout.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$timeout.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$timeout.md index 39c41e817045da..974036700a6739 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$timeout.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$timeout.md @@ -7,11 +7,11 @@ Définit le nombre de secondes pour enregistrer un ensemble d'entités dans le c ## Description -Si un ensemble d'entités est supprimé puis recréé à l'aide de $method=entityset avec $savedfilter, le nouveau timeout par défaut est de 10 minutes, quel que soit le timeout que vous avez défini lors de l'appel de $timeout. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. +Pour définir un délai d'attente pour un ensemble d'entités que vous créez en utilisant [`$method=entityset`]($method.md#methodentityset), indiquez le nombre de secondes dans `$timeout`. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. Une fois le timeout défini, chaque fois qu'un ensemble d'entités est appelé (via `$method=entityset`), le timeout est recalculé en fonction de l'heure courante et du timeout. -If an entity set is removed and then recreated using `$method=entityset` along with [`$savedfilter`]($savedfilter.md), the new default timeout is 10 minutes regardless of the timeout you defined when calling `$timeout`. +Si un ensemble d'entités est supprimé puis recréé en utilisant `$method=entityset` avec [`$savedfilter`]($savedfilter.md), le nouveau délai d'attente par défaut est de 10 minutes, quel que soit le délai d'attente défini lors de l'appel à `$timeout`. ## Exemple From 77998b16e728e34888087b4891d998e980acc08a Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:30:47 +0200 Subject: [PATCH 13/87] New translations $top_$limit.md (French) --- .../docusaurus-plugin-content-docs/current/REST/$top_$limit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$top_$limit.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$top_$limit.md index 5ce55d26a51bcd..f4221f6ccf6cc0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$top_$limit.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$top_$limit.md @@ -9,7 +9,7 @@ Limite le nombre d'entités à retourner (par exemple, `$top=50`) `$top/$limit` définit la limite des entités à retourner. Par défaut, leur nombre est limité à 100. Vous pouvez utiliser l'un des mots clés suivant : `$top` ou `$limit`. -When used in conjunction with [`$skip`]($skip.md), you can navigate through the entity selection returned by the REST request. +Lorsqu'il est utilisé avec [`$skip`]($skip.md), vous pouvez naviguer dans l'entity selection renvoyée par la requête REST. ## Exemple From 17460528699c66e8f9596e2c1a50a99bef4b7e85 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:30:53 +0200 Subject: [PATCH 14/87] New translations $upload.md (French) --- .../current/REST/$upload.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$upload.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$upload.md index ddf2d778687f87..5b44fe7ba5a0a3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$upload.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$upload.md @@ -27,7 +27,7 @@ Par conséquent, le serveur retourne un ID qui identifie le fichier : `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50" }` -Afterwards, you use this ID to add it to an attribute using [`$method=update`]($method.md#methodupdate) to add the image to an entity. La requête est la suivante : +Ensuite, vous utilisez cet ID pour l'ajouter à un attribut en utilisant [`$method=update`]($method.md#methodupdate) pour ajouter l'image à une entité. La requête est la suivante : `POST /rest/Employee/?$method=update` @@ -77,14 +77,14 @@ var $blob : Blob ARRAY TEXT($headerNames; 1) ARRAY TEXT($headerValues; 1) -$url:="localhost:80/rest/$upload?$binary=true" //prepare the REST request +$url:="localhost:80/rest/$upload?$binary=true" //préparer la requête REST $headerNames{1}:="Content-Type" $headerValues{1}:="application/octet-stream" -DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //Load the binary +DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //charger le binaire - //Execute the first POST request to upload the file + //Exécuter la première requête POST pour téléverser le fichier $result:=HTTP Request(HTTP POST method; $url; $blob; $response; $headerNames; $headerValues) If ($result=200) @@ -94,7 +94,7 @@ If ($result=200) $data.__STAMP:="3" $data.pdf:=New object("ID"; String($response.ID)) - $url:="localhost:80/rest/Invoices?$method=update" //second request to update the entity + $url:="localhost:80/rest/Invoices?$method=update" //2e requête pour mettre à jour l'entity $headerNames{1}:="Content-Type" $headerValues{1}:="application/json" From 22757794eea4aeaeda3da0a5efd1584e70d444ba Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:03 +0200 Subject: [PATCH 15/87] New translations classfunctions.md (French) --- .../current/REST/ClassFunctions.md | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/ClassFunctions.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/ClassFunctions.md index 534a7d69d46be2..5740fc0d6c2ff1 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/ClassFunctions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/ClassFunctions.md @@ -3,18 +3,18 @@ id: classFunctions title: Appel des fonctions de classe --- -You can call [data model class functions](ORDA/ordaClasses.md) defined for the ORDA Data Model and [singleton class functions]($singleton.md) through REST requests, so that you can benefit from the exposed API of the targeted 4D application. +Vous pouvez appeler les [fonctions de classe du modèle de données](ORDA/ordaClasses.md) définies pour le modèle de données ORDA et les [fonctions de classe de singleton]($singleton.md) par le biais de requêtes REST, afin de bénéficier de l'API exposée de l'application 4D ciblée. -Functions can be called in two ways: +Les fonctions peuvent être appelées de deux manières : -- using **POST requests**, with data parameters passed in the body of the request. -- using **GET requests**, with parameters directly passed in the URL. +- en utilisant des requêtes **POST**, avec des paramètres de données transmis dans le body de la requête. +- en utilisant des requêtes **GET**, avec des paramètres passés directement dans l'URL. -POST requests provide a better security level because they avoid running sensitive code through an action as simple as clicking on a link. However, GET requests can be more compliant with user experience, allowing to call functions by entering an URL in a browser (note: the developer must ensure no sensitive action is done in such functions). +Les requêtes POST offrent un meilleur niveau de sécurité car elles évitent l'exécution de code sensible par une action aussi simple que de cliquer sur un lien. Cependant, les requêtes GET peuvent être plus conformes à l'expérience utilisateur, en permettant d'appeler des fonctions en saisissant un URL dans un navigateur (note : le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions). ## Appeler des fonctions -The following ORDA and singleton functions can be called in REST: +Les fonctions ORDA et singleton suivantes peuvent être appelées en REST : | Fonction de classe | Syntaxe | | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | @@ -29,27 +29,27 @@ The following ORDA and singleton functions can be called in REST: :::note -`/rest/{dataClass}/Function` can be used to call either a dataclass or an entity selection function (`/rest/{dataClass}` returns all entities of the DataClass as an entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. +`/rest/{dataClass}/Function` peut être utilisé pour appeler une fonction de dataclass ou d'entity selection (`/rest/{dataClass}` renvoie toutes les entités de la dataclass en tant qu'entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. ::: -Functions are simply called on the appropriate ORDA interface or singleton class, without (). [Parameters](#parameters) are passed either in the body of the POST request (`POST` calls) or in the `params` collection in the URL (`GET` calls). +Les fonctions sont simplement appelées sur l'interface ORDA ou la classe singleton appropriée, sans (). Les [Parameters](#parameters) sont passés soit dans le body de la requête POST (appels `POST`), soit dans la collection `params` de l'URL (appels `GET`). Par exemple, si vous avez défini une fonction `getCity()` dans la dataclass City, vous pouvez l'appeler à l'aide de la requête suivante : -#### POST request +#### Requête POST `/rest/City/getCity` avec des données contenues dans le body de la requête POST : `["Aguada"]` -#### GET request +#### Requête GET `/rest/City/getCity?$params='["Aguada"]'` :::note -The `getCity()` function must have been declared with the `onHTTPGet` keyword (see [Function configuration](#function-configuration) below). +La fonction `getCity()` doit avoir été déclarée avec le mot-clé `onHTTPGet` (voir [Configuration des fonctions](#function-configuration) ci-dessous). ::: @@ -59,11 +59,11 @@ En langage 4D, cet appel est équivalent à : $city:=ds.City.getCity("Aguada") ``` -## Function configuration +## Configuration des fonctions ### `exposed` -All functions allowed to be called directly from HTTP REST requests (`POST` or `GET`) must be declared with the `exposed` keyword. Par exemple : +Toutes les fonctions autorisées à être appelées directement depuis des requêtes HTTP REST (`POST` ou `GET`) doivent être déclarées avec le mot-clé `exposed`. Par exemple : ```4d exposed Function getSomeInfo() : 4D.OutgoingMessage @@ -73,56 +73,56 @@ Voir la section [Fonctions exposées vs non exposées](../ORDA/ordaClasses.md#ex ### `onHTTPGet` -Functions allowed to be called from HTTP `GET` requests must also be specifically declared with the [`onHTTPGet` keyword](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : +Les fonctions autorisées à être appelées à partir de requêtes HTTP `GET` doivent également être spécifiquement déclarées avec le [mot-clé `onHTTPGet`](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : ```4d -//allowing GET requests +//autoriser les requêtes GET exposed onHTTPGet Function getSomeInfo() : 4D.OutgoingMessage ``` ### Thread-safe -All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info -You can restrict calls to specific ORDA functions by configuring appropriate privileges in the [**roles.json**](../ORDA/privileges.md#rolesjson-file) file. +Vous pouvez restreindre les appels à des fonctions ORDA spécifiques en configurant les privilèges appropriés dans le fichier [**roles.json**](../ORDA/privileges.md#rolesjson-file). ::: ## Paramètres -You can send parameters to functions defined in ORDA user classes or singletons. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. +Vous pouvez envoyer des paramètres à des fonctions de classes utilisateur ou des singletons ORDA. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. Les règles suivantes s'appliquent : -- In functions called through POST requests, parameters must be passed **in the body of the POST request**. -- In functions called through GET requests, parameters must be passed **in the URL with "?$params=" syntax**. +- Dans les fonctions appelées par des requêtes POST, les paramètres doivent être passés **dans le body de la requête POST**. +- Dans les fonctions appelées par des requêtes GET, les paramètres doivent être passés **dans l'URL avec la syntaxe " ?$params="**. - Les paramètres doivent être inclus dans une collection (format JSON). - Tous les types de données scalaires pris en charge dans les collections JSON peuvent être passés en tant que paramètres. -- L'entity selection et l'entité peuvent être passées en tant que paramètres. The parameter list must contain specific attributes used by the REST server to assign data to the corresponding ORDA objects: `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. +- L'entity selection et l'entité peuvent être passées en tant que paramètres. La liste des paramètres doit contenir les attributs spécifiques utilisés par le serveur REST pour assigner les données aux objets ORDA correspondants : `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. -See [this example](#using-an-entity-to-be-created-on-the-server) and [this example](#receiving-an-entity-selection-as-parameter). +Voir [cet exemple](#using-an-entity-to-be-created-on-the-server) et [cet exemple](#receiving-an-entity-selection-as-parameter). ### Paramètre de valeur scalaire -Scalar value parameter(s) must simply be enclosed in a collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). +Le(s) paramètre(s) de valeur scalaire doit(vent) simplement être inclus dans une collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). -For example, with a dataclass function `getCities()` receiving text parameters: +Par exemple, avec une fonction de la dataclass `getCities()` recevant des paramètres texte : -#### POST request +#### Requête POST `/rest/City/getCities` **Paramètres dans le body :** ["Aguada","Paris"] -#### GET request +#### Requête GET `/rest/City/getCities?$params='["Aguada","Paris"]'` -### Paramètre d'entité +### Paramètres des entités -Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). If the key parameter is omitted in a request, a new entity is loaded in memory on the server. +Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). Si le paramètre clé est omis dans une requête, une nouvelle entité est chargée en mémoire sur le serveur. Vous pouvez également transmettre des valeurs pour tous les attributs de l'entité. Ces valeurs seront automatiquement utilisées pour l'entité traitée sur le serveur. > Si la requête envoie des valeurs d'attribut modifiées pour une entité existante sur le serveur, la fonction de modèle de données ORDA appelée sera automatiquement exécutée sur le serveur avec des valeurs modifiées. Cette fonctionnalité vous permet, par exemple, de vérifier le résultat d'une opération sur une entité, après avoir appliqué toutes les règles métier, depuis l'application cliente. Vous pouvez alors décider de sauvegarder ou non l'entité sur le serveur. @@ -137,8 +137,8 @@ Vous pouvez également transmettre des valeurs pour tous les attributs de l'enti - Si `__KEY` n'est pas fourni, une nouvelle entité est créée sur le serveur avec les attributs donnés. - Si `__KEY` est fourni, l'entité correspondant à `__KEY` est chargée sur le serveur avec les attributs donnés -See examples below for creating or updating entities with POST requests. -See an example of contents downloading using an entity with a GET request. +Voir les exemples ci-dessous pour la création ou la mise à jour d'entités avec des requêtes POST. +Voir un exemple de téléchargement de contenu à l'aide d'une entité avec une requête GET. #### Paramètre d'entité associé @@ -158,10 +158,10 @@ L'entity selection doit avoir été définie au préalable à l'aide de [$method | __DATASET | Text | Obligatoire - entitySetID (UUID) de l'entity selection | | __ENTITIES | Boolean | Obligatoire - Vrai pour indiquer au serveur que le paramètre est une sélection d'entité | -See example for [receiving an entity selection](#receiving-an-entity-selection-as-parameter) with a POST request. -See example for [getting a list built upon an entity selection](#using-an-entity-selection-to-get-a-list) with a GET request. +Voir l'exemple pour [recevoir une entity selection](#receiving-an-entity-selection-as-parameter) avec une requête POST. +Voir l'exemple pour [obtenir une liste construite sur la base d'une entity selection](#using-an-entity-selection-to-get-a-list) avec une requête GET. -## POST request examples +## Exemples de requêtes POST Cette base de données est exposée comme un datastore distant sur localhost (port 8111) : @@ -500,8 +500,8 @@ Class extends Entity exposed Function putToSchool($school : Object) -> $status : Object - //$school is a Schools entity - //Associate the related entity school to the current Students entity + //$school est une entité Schools + //Associer l'entité liée School à l'entité Students courante This.school:=$school $status:=This.save() @@ -543,7 +543,7 @@ exposed Function setFinalExam($es : Object ; $examResult : Text) -> $keys : Coll var $student, $status : Object - //$es is an Entity selection + //$es est une Entity selection $keys:=New collection() @@ -612,11 +612,11 @@ $students.add($newStudent) $ageAverage:=$students.getAgeAverage() ``` -## GET request examples +## Exemples de requêtes GET -### Returning a document +### Renvoyer un document -You want to propose a link to download the user manual for a selected product with several formats available. You write a `getUserManual()` function of the Products dataclass. You return an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous souhaitez proposer un lien pour télécharger le manuel d'utilisation d'un produit sélectionné avec plusieurs formats disponibles. Vous écrivez une fonction `getUserManual()` de la dataclass Products. Vous renvoyez un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d // Product dataclass @@ -629,12 +629,12 @@ var $doc:="/RESOURCES/User manuals/product_"+String($productId) Case of : ($type="pdf") $file:=File($doc+".pdf") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "application/pdf") : ($type="jpeg") $file:=File($doc+".jpeg") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "image/jpeg") End case @@ -642,13 +642,13 @@ return $response ``` -You can call the function using a request like: +Vous pouvez appeler la fonction en utilisant une requête comme : **GET** `http://127.0.0.1:8044/rest/Products/getUserManual?$params='[1,"pdf"]'` -### Using an entity to download a PDF document +### Utilisation d'une entité pour télécharger un document PDF -Same example as above but you want to pass an entity as parameter to the datastore function. +Même exemple que ci-dessus, mais vous voulez passer une entité comme paramètre à la fonction datastore. ```4d // Product dataclass @@ -664,13 +664,13 @@ exposed onHTTPGet Function getUserManual($product : cs.ProductEntity) : 4D.Outgo return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/Product/getUserManual?$params='[{"__DATACLASS":"Product","__ENTITY":true,"__KEY":41}]'` -### Using an entity selection to get a list +### Utiliser une entity selection pour obtenir une liste -You want to send an entity selection as parameter to a singleton function using a REST GET request and return a list using an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous voulez envoyer une entity selection comme paramètre à une fonction singleton en utilisant une requête REST GET et retourner une liste en utilisant un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d shared singleton Class constructor() @@ -694,6 +694,6 @@ exposed onHTTPGet Function buildShoppingList($products : cs.ProductSelection) : return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/$singleton/Shopping/buildShoppingList?$params='[{"__DATASET":"8DB0556854HDK52FR5974F","__ENTITIES":true}]'` \ No newline at end of file From 55798f70613541d21026bdf2d4bf8c4e38a23c06 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:10 +0200 Subject: [PATCH 16/87] New translations rest_requests.md (French) --- .../current/REST/REST_requests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/REST_requests.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/REST_requests.md index dcf0fef863778b..632dc26862c1a7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/REST_requests.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/REST_requests.md @@ -22,7 +22,7 @@ Comme pour tous les URI, le premier paramètre est délimité par un «?» et to Les paramètres vous permettent de manipuler des données dans des dataclass de votre projet 4D. Outre la récupération de données à l'aide des méthodes HTTP `GET`, vous pouvez également ajouter, mettre à jour et supprimer des entités d'une dataclass à l'aide des méthodes HTTP `POST`. -If you want the data to be returned in an array instead of JSON, use the [`$asArray`]($asArray.md) parameter. +Si vous souhaitez que les données soient renvoyées dans un tableau au lieu de JSON, utilisez le paramètre [`$asArray`]($asArray.md). ## Statut et réponse REST From c00ed72233b3d14d6f852d08fdba08a21b249575 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:20 +0200 Subject: [PATCH 17/87] New translations configuration.md (French) --- .../current/REST/configuration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/configuration.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/configuration.md index 3b9e8725abc6cc..e08a1ccea907cd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/configuration.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/configuration.md @@ -19,21 +19,21 @@ Le message d'avertissement "Attention, vérifiez les privilèges d'accès" s'aff > Vous devez redémarrer l'application 4D pour que vos modifications soient prises en compte. -## Controlling REST access +## Contrôle de l'accès REST Par défaut, les accès REST sont ouverts à tous les utilisateurs, ce qui n'est évidemment pas recommandé pour des raisons de sécurité et de contrôle de l'utilisation des licences clientes. -As of 4D 20 R6, you configure REST accesses by enabling the [**force login** mode](authUsers.md#force-login-mode) and create an [`authentify()`](authUsers.md#function-authentify) datastore class function to authenticate users and assign privileges to their web session. +Depuis 4D 20 R6, vous configurez les accès REST en activant le mode [**force login**](authUsers.md#force-login-mode) et en créant une fonction [`authentify()`](authUsers.md#function-authentify) dans la classe datastore pour authentifier les utilisateurs et attribuer des privilèges à leur session web. :::note Compatibilité -The **Access** area in the Settings dialog box is only available in converted projects for compatibility. See [Access](../settings/web.md#access) for more information. +La zone **Accès** de la boîte de dialogue Propriétés n'est disponible que dans les projets convertis pour des raisons de compatibilité. Voir [Accès](../settings/web.md#access) pour plus d'informations. ::: ## Exposer les tables et les champs -Une fois les services REST sont activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : +Une fois les services REST activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : ``` http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000" @@ -72,14 +72,14 @@ Pour supprimer l'exposition REST d'un champ : 2. Décochez la case **Exposer en tant que ressource REST** pour le champ. ![alt-text](../assets/en/REST/field.png) - Repeat this for each field whose exposure needs to be modified. + Répétez cette opération pour chaque champ dont l'exposition doit être modifiée. > Pour qu'un champ soit accessible via REST, la table parente doit l'être également. Si la table parente n'est pas exposée, aucun de ses champs ne le sera, quel que soit leur statut. ## Mode préemptif -On 4D Server, REST requests are automatically handled through preemptive processes, **even in interpreted mode**. You need to make sure that your code is [compliant with a preemptive execution](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Sur 4D Server, les requêtes REST sont automatiquement traitées par des process préemptifs, **même en mode interprété**. Vous devez vous assurer que votre code est [compatible avec une exécution préemptive](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). -> To debug interpreted web code on the server machine, make sure the debugger is [attached to the server](../Debugging/debugging-remote.md) or [to a remote machine](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. +> Pour déboguer le code web interprété sur la machine serveur, assurez-vous que le débogueur est [attaché au serveur](../Debugging/debugging-remote.md) ou [à une machine distante](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. Avec 4D monoposte, le code interprété s'exécute toujours en mode coopératif. From e9ded7eecdaf1556a9ad8445853af7d79370be50 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:26 +0200 Subject: [PATCH 18/87] New translations dataclass.md (French) --- .../current/REST/dataClass.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/dataClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/dataClass.md index 4012a08e41186a..ea569defb65ff6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/dataClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/dataClass.md @@ -24,7 +24,7 @@ Renvoie toutes les données (par défaut, les 100 premières entités) pour une ### Description -When you call this parameter in your REST request, the first 100 entities are returned unless you have specified a value using [`$top/$limit`]($top_$limit.md). +Lorsque vous appelez ce paramètre dans votre requête REST, les 100 premières entités sont renvoyées, sauf si vous avez spécifié une valeur en utilisant [`$top/$limit`]($top_$limit.md). Voici une description des données retournées : @@ -44,7 +44,7 @@ Chaque entité contient les propriétés suivantes : | __TIMESTAMP | Date | Horodatage de la dernière modification de l'entité | | __STAMP | Number | Tampon interne qui est nécessaire lors de la modification des valeurs de l'entité lors de l'utilisation de `$method=update`. | -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company/name,address` @@ -141,9 +141,9 @@ Returns the data for the specific entity defined by the dataclass's primary key, En passant la dataclass et une clé, vous pouvez récupérer toutes les informations publiques de cette entité. La clé est la valeur de l'attribut défini comme clé primaire pour votre dataclass. Pour plus d'informations sur la définition d'une clé primaire, reportez-vous à la section **Modification de la clé primaire** dans **l'éditeur de modèle de données**. -For more information about the data returned, refer to [\{dataClass\}](#dataclass). +Pour plus d'informations sur les données renvoyées, voir [\{dataClass}](#dataclass). -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company(1)/name,address` @@ -190,7 +190,7 @@ En passant la *dataClass* et un *attribut* avec une valeur, vous pouvez récupé `GET /rest/Company:companyCode(Acme001)` -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company:companyCode(Acme001)/name,address` From 30888bffeb020db67c948d9c7f3a26bdb49ff825 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:32 +0200 Subject: [PATCH 19/87] New translations geninfo.md (French) --- i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md index d8f8c0149f1323..348b801ed8a783 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : From bf8f8d69384a6dafe8fe0225f5e39e1c2b3cc8df Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:31:43 +0200 Subject: [PATCH 20/87] New translations mandata.md (French) --- .../current/REST/manData.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/manData.md index 0d18db18c2ce60..7cac7fe5e260ae 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/manData.md @@ -3,11 +3,11 @@ id: manData title: Manipulation des données --- -Tous [les attributs, dataclasses exposés](configuration.md#exposing-tables-and-fields) et toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +Tous les [attributs et dataclass exposés](configuration.md#exposing-tables-and-fields) ainsi que les [fonctions exposées](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse, mais pas les données dans les requêtes. ## Rechercher des données -To query data directly, you can do so using the [`$filter`]($filter.md) function. Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : +Pour interroger directement les données, vous pouvez utiliser la fonction [`$filter`]($filter.md). Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : `http://127.0.0.1:8081/rest/Person/?$filter="lastName=Smith"` @@ -15,43 +15,43 @@ To query data directly, you can do so using the [`$filter`]($filter.md) function Avec l'API REST, vous pouvez effectuer toutes les manipulations de données souhaitées dans 4D. -To add and modify entities, you can call [`$method=update`]($method.md#methodupdate). If you want to delete one or more entities, you can use [`$method=delete`]($method.md#methoddelete). +Pour ajouter et modifier des entités, vous pouvez appeler [`$method=update`]($method.md#methodupdate). Si vous souhaitez supprimer une ou plusieurs entités, vous pouvez utiliser [`$method=delete`]($method.md#methoddelete). -Besides retrieving a single entity in a dataclass using [\{dataClass\}({key})](dataClass.md#dataclasskey), you can also write a [class function](ClassFunctions.md#function-calls) that returns an entity selection (or a collection). +Outre la récupération d'une entité unique dans une dataclass à l'aide de [\dataClass\}({key})](dataClass.md#dataclasskey), vous pouvez également écrire une [class function](ClassFunctions.md#function-calls) qui renvoie une entity selection (ou une collection). -Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) one one or more attributes (even relation attributes). +Avant de renvoyer une sélection, vous pouvez également la trier en utilisant [`$orderby`]($orderby.md) sur un ou plusieurs attributs (même les attributs de relation). ## Parcourir les données -Add the [`$skip`]($skip.md) (to define with which entity to start) and [`$top/$limit`]($top_$limit.md) (to define how many entities to return) REST requests to your queries or entity selections to navigate the collection of entities. +Ajoutez les mots-clés [`$skip`]($skip.md) (pour définir par quelle entité commencer) et [`$top/$limit`]($top_$limit.md) (pour définir le nombre d'entités à renvoyer) à vos requêtes REST ou entity selections pour naviguer dans la sélection d'entités. ## Créer et gérer un entity set -Un entity set (également appelé *entity selection*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. +Un entity set (ou *ensemble d'entités*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. -To create an entity set, call [`$method=entityset`]($method.md#methodentityset) in your REST request. As a measure of security, you can also use [`$savedfilter`]($savedfilter.md) and/or [`$savedorderby`]($savedorderby.md) when you call [`$filter`]($filter.md) and/or [`$orderby`]($orderby.md) so that if ever the entity set timed out or was removed from the server, it can be quickly retrieved with the same ID as before. +Pour créer un ensemble d'entités, appelez [`$method=entityset`]($method.md#methodentityset) dans votre requête REST. Par mesure de sécurité, vous pouvez également utiliser [`$savedfilter`]($savedfilter.md) et/ou [`$savedorderby`]($savedorderby.md) lorsque vous appelez [`$filter`]($filter.md) et/ou [`$orderby`]($orderby.md) de sorte que si l'ensemble d'entités se périme ou est supprimé du serveur, il peut être rapidement récupéré avec le même identifiant qu'auparavant. -To access the entity set, you must use `$entityset/\{entitySetID\}`, for example: +Pour accéder à l'ensemble d'entités, vous devez utiliser `$entityset/\N{entitySetID\N}`, par exemple : `/rest/People/$entityset/0AF4679A5C394746BFEB68D2162A19FF` -By default, an entity set is stored for two hours; however, you can change the timeout by passing a new value to [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. +Par défaut, un ensemble d'entités est stocké pendant deux heures ; cependant, vous pouvez modifier le délai de timeout en passant une nouvelle valeur à [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. -If you want to remove an entity set from 4D Server's cache, you can use [`$method=release`]($method.md#methodrelease). +Si vous souhaitez supprimer un ensemble d'entités du cache de 4D Server, vous pouvez utiliser [`$method=release`]($method.md#methodrelease). Si vous modifiez l'un des attributs de l'entité dans l'entity set, les valeurs seront mises à jour. Toutefois, si vous modifiez une valeur qui faisait partie de la requête exécutée pour créer l'entity set, elle ne sera pas supprimée de l'entity set même si elle ne correspond plus aux critères de recherche. -Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. However, by default their reference will remain in the entity set with an *undefined* value, and they will still be included in the entity set count. Call [`$clean`]($clean.md) on the entity set to create a new, up-to-date entity set without *undefined* entity references. +Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. Cependant, par défaut, leur référence restera dans l'ensemble d'entités avec une valeur *undefined*, et ils seront toujours inclus dans le décompte de l'ensemble d'entités. Appelez [`$clean`]($clean.md) sur l'ensemble d'entités pour créer un nouvel ensemble d'entités à jour sans références d'entités *undefined*. Si l'entity set ne se trouve plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. L'ensemble d'entités sera actualisé (certaines entités peuvent être incluses tandis que d'autres peuvent être supprimées) depuis la dernière fois qu'il a été créé, s'il n'existait plus avant de le recréer. -Using [`$entityset/\{entitySetID\}?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), you can combine two entity sets that you previously created. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. +En utilisant [`$entityset/\N{entitySetID\N} ?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), vous pouvez combiner deux ensembles d'entités que vous avez précédemment créés. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. -A new selection of entities is returned; however, you can also create a new entity set by calling [`$method=entityset`]($method.md#methodentityset) at the end of the REST request. +Une nouvelle sélection d'entités est renvoyée ; cependant, vous pouvez également créer un nouvel ensemble d'entités en appelant [`$method=entityset`]($method.md#methodentityset) à la fin de la requête REST. ## Calcul des données -By using [`$compute`]($compute.md), you can compute the **average**, **count**, **min**, **max**, or **sum** for a specific attribute in a dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. +En utilisant [`$compute`]($compute.md), vous pouvez effectuer les calculs **average**, **count**, **min**, **max** ou **sum** pour un attribut spécifique dans une dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. Par exemple, pour obtenir le salaire le plus élevé : @@ -206,7 +206,7 @@ La requête suivante retourne uniquement les attributs de prénom et nom à part #### Exemple d'ensemble d'entités -Once you have [created an entity set](#creating-and-managing-entity-set), you can filter the information in it by defining which attributes to return: +Une fois que vous avez [créé un ensemble d'entités] (#creating-and-managing-entity-set), vous pouvez filtrer les informations qu'il contient en définissant les attributs à renvoyer : `GET /rest/People/firstName,employer.name/$entityset/BDCD8AABE13144118A4CF8641D5883F5?$expand=employer` @@ -226,6 +226,6 @@ Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez ## Récupérer une seule entité -You can use the [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) syntax when you want to retrieve only one entity. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +Vous pouvez utiliser la syntaxe [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous voulez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : `GET /rest/Company:companyCode("Acme001")` From 8c54830786a893f365d7145ede3b7c1e8105986b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:34:52 +0200 Subject: [PATCH 21/87] New translations vp-find.md (French) --- .../current/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md b/i18n/fr/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md index 51f5a1af8520d7..a8d9262cad0d4f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 037feb02ca338d212653325a82922797d1d9d166 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:34:54 +0200 Subject: [PATCH 22/87] New translations vp-find.md (Spanish) --- .../current/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md b/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md index e122ecdf423030..b4c2ea5824cb55 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 5762c4aa6451a80703405d53f892379e2c640978 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:34:56 +0200 Subject: [PATCH 23/87] New translations vp-find.md (Japanese) --- .../current/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md b/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md index 70ceccbf7b40d6..f36b0aad301c2f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From cc1c4364fb793e453216cd5a77bcd023667d052f Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:34:57 +0200 Subject: [PATCH 24/87] New translations vp-find.md (Portuguese, Brazilian) --- .../current/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md b/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md index a69e8faeea2a78..9f8db97da06cb1 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From fa7912ee7a4b8b207e37dd3514817597237171a3 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:39:35 +0200 Subject: [PATCH 25/87] New translations vp-remove-table-columns.md (Spanish) --- .../current/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md b/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md index 7a0a85d4f52577..fbdde891935a18 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 39302e47b4f5cbbb43e68b35110325f85c59f513 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:39:36 +0200 Subject: [PATCH 26/87] New translations vp-remove-table-columns.md (Japanese) --- .../current/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md b/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md index 9aff390b955ca6..dbce5f598859fd 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From c35223c51e2b15a0fbce09cac9ffd54584befa31 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 13:39:38 +0200 Subject: [PATCH 27/87] New translations vp-remove-table-columns.md (Portuguese, Brazilian) --- .../current/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md b/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md index 3095815f840351..042bb9c8815ff4 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 5b69865f3ebcd936a730bcdf18453a3ca41a9b66 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 14:43:03 +0200 Subject: [PATCH 28/87] New translations $singleton.md (French) --- .../current/REST/$singleton.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$singleton.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$singleton.md index 66abfb295503be..40b853f0cc1158 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$singleton.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$singleton.md @@ -5,7 +5,7 @@ title: $singleton Vous pouvez appeler directement les [fonctions exposées de vos shared singletons](../Concepts/classes.md#singleton-classes) via REST. -Singleton functions are called in POST or GET requests with the `$singleton` command and without `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : +Les fonctions singleton sont appelées dans des requêtes POST ou GET avec la commande `$singleton` et sans `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : ```json /rest/$singleton/VehicleFactory/buildVehicle @@ -27,27 +27,27 @@ N'oubliez pas que seules les fonctions avec le mot-clé [`exposed`](../ORDA/orda ## Appeler des fonctions -Singleton functions can be called using REST **POST** or **GET** requests. +Les fonctions Singleton peuvent être appelées à l'aide de requêtes REST **POST** ou **GET**. La syntaxe formelle est la suivante : -#### POST request +#### Requête POST `/rest/$singleton/SingletonClass/SingletonClassFunction` -with data in the body of the POST request: `["myparam"]` +avec les données contenues dans le body de la requête POST : `["myparam"]` -#### GET request +#### Requête GET `/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'` :::note -The `SingletonClassFunction()` function must have been declared with the `onHTTPGet` keyword to be callable with `GET` (see [Function configuration](ClassFunctions#function-configuration)). +La fonction `SingletonClassFunction()` doit avoir été déclarée avec le mot-clé `onHTTPGet` pour pouvoir être appelée avec `GET` (voir [Configuration de fonction](ClassFunctions#function-configuration)). ::: -> All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +> L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info @@ -77,7 +77,7 @@ exposed Function sayHello ($value : Text) :::note -The `mySingleton` class and `sayHello` function are listed when you call the [`$catalog`]($catalog.md#singletons) command. +La classe `mySingleton` et la fonction `sayHello` sont listées lorsque vous appelez la commande [`$catalog`]($catalog.md#singletons). ::: From a78f97a31a89ec59e9a0eefdec17d879774211af Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:09:58 +0200 Subject: [PATCH 29/87] New translations http-request-handler.md (French) --- .../current/WebServer/http-request-handler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md index 459eda646e1ead..97ffa9b14ef33c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md @@ -233,7 +233,7 @@ Examples of URLs triggering the handlers: ## Request handler code -### Function configuration +### Configuration des fonctions The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). From 2981ba97a3c169970b70921e2fe310e0ccb6ef14 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:26:33 +0200 Subject: [PATCH 30/87] New translations dataclassclass.md (French) --- .../version-20-R9/API/DataClassClass.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/API/DataClassClass.md index 3e160c602dd261..c3632b951a36ab 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/API/DataClassClass.md @@ -1142,7 +1142,7 @@ ds.People.query("places.locations[a].kind= :1 and places.locations[a].city= :2"; #### Recherches dans les relations N vers N -ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : +ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : ![alt-text](../assets/en/API/manytomany.png) @@ -1162,7 +1162,7 @@ Pour rendre possible ce type de recherche, ORDA prend en charge une syntaxe spé "relationAttribute.attribute = :1 AND relationAttribute{x}.attribute = :2 [AND relationAttribute{y}.attribute...]" ``` -**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque class index. +**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque index de classe. Dans notre exemple, cela pourrait donner : From 08e12d0c1e9374c23ec3c2d7c85f03d59bda71c8 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:51:49 +0200 Subject: [PATCH 31/87] New translations ordaclasses.md (French) --- .../version-20-R9/ORDA/ordaClasses.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ORDA/ordaClasses.md index 07978610d7cc7b..e17e53762aff86 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ORDA/ordaClasses.md @@ -3,7 +3,7 @@ id: ordaClasses title: Classes du modèle de données --- -ORDA allows you to create high-level class functions above the [data model](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. +ORDA vous permet de créer des fonctions de classe de haut niveau au-dessus du [modèle de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. Par exemple, vous pouvez créer une fonction `getNextWithHigherSalary()` dans la classe `EmployeeEntity` pour retourner les employés ayant un salaire supérieur à celui qui est sélectionné. Il serait aussi simple à appeler que : @@ -125,7 +125,7 @@ Vous pouvez ensuite obtenir une sélection d'entité des "meilleures" entreprise :::info -[Les champs calculés](#computed-attributes) sont définis dans [la classe Entity](#entity-class). +[Les attributs calculés](#computed-attributes) sont définis dans la [classe Entity](#entity-class). ::: @@ -182,7 +182,7 @@ Chaque table exposée avec ORDA affiche une classe EntitySelection dans le class Class extends EntitySelection -//Extract the employees with a salary greater than the average from this entity selection +//Extraire les employés dont le salaire est supérieur à la moyenne de l'entity selection Function withSalaryGreaterThanAverage() : cs.EmployeeSelection return This.query("salary > :1";This.average("salary")).orderBy("salary") @@ -286,13 +286,13 @@ Si votre projet est conçu de façon à être exécuté en client/serveur, assur Un attribut calculé est un attribut de dataclass avec un type de données qui masque un calcul. [Les classes 4D standard](Concepts/classes.md) implémentent le concept de propriétés calculées avec des [fonctions d'accès](Concepts/classes.md#function-get-and-function-set) telles que `get` (*getter*) et `set` (*setter*). Les attributs de dataclass ORDA bénéficient de cette fonctionnalité et l'étendent avec deux fonctions supplémentaires : `query` et `orderBy`. -Un champ calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. +Un attribut calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. -Un champ calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. +Un attribut calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. -Tout comme les champs de stockage, les champs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les champs calculés peuvent implémenter une fonction de requête `query` qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. +Tout comme les attributs de stockage, les attributs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les attributs calculés peuvent implémenter une fonction de requête `query` personnalisée qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. -De même, les champs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les champs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. +De même, les attributs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les attributs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. ### Comment définir les attributs calculés @@ -421,7 +421,7 @@ Function query ($event : Object) -> $result : Object Cette fonction prend en charge trois syntaxes : -- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet objet `$event.result`. +- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet `$event.result`. - Avec les deuxième et troisième syntaxes, la fonction retourne une valeur dans *$result* : - Si *$result* est Text, il doit s'agir d'une chaîne de requête valide @@ -432,7 +432,7 @@ Cette fonction prend en charge trois syntaxes : | $result.query | Text | Chaîne de requête valide avec placeholders (:1, :2, etc.) | | $result.parameters | Collection | valeurs pour placeholders | -La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. +La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Lorsque la fonction `query` n'est pas implémentée pour un attribut calculé, la recherche est toujours séquentielle (basée sur l'évaluation de toutes les valeurs à l'aide de la fonction `get `). > Les fonctionnalités suivantes ne sont pas prises en charge : > @@ -471,10 +471,10 @@ Function query fullName($event : Object)->$result : Object If ($p>0) $firstname:=Substring($fullname; 1; $p-1)+"@" $lastname:=Substring($fullname; $p+1)+"@" - $parameters:=New collection($firstname; $lastname) // two items collection + $parameters:=New collection($firstname; $lastname) // collection deux éléments Else $fullname:=$fullname+"@" - $parameters:=New collection($fullname) // single item collection + $parameters:=New collection($fullname) // collection un seul élément End if Case of @@ -522,11 +522,11 @@ Function query age($event : Object)->$result : Object Case of : ($operator="==") - $query:="birthday > :1 and birthday <= :2" // after d1 and before or egal d2 + $query:="birthday > :1 and birthday <= :2" // après d1 et avant ou égal à d2 : ($operator="===") - $query:="birthday = :2" // d2 = second calculated date (= birthday date) + $query:="birthday = :2" // d2 = seconde date calculée (= birthday date) : ($operator=">=") $query:="birthday <= :2" @@ -548,11 +548,11 @@ Function query age($event : Object)->$result : Object Code d'appel, par exemple : ```4d -// people aged between 20 and 21 years (-1 day) -$twenty:=people.query("age = 20") // calls the "==" case +// personnes entre 20 et 21 ans (-1 jour) +$twenty:=people.query("age = 20") // appelle le cas "==" -// people aged 20 years today -$twentyToday:=people.query("age === 20") // equivalent to people.query("age is 20") +// personnes âgées de 20 ans aujourd'hui +$twentyToday:=people.query("age === 20") // équivaut à people.query("age is 20") ``` From 6ceb0b1ed204adeb44e5f20f3975e5cedd95062a Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:19 +0200 Subject: [PATCH 32/87] New translations $savedorderby.md (French) --- .../version-20-R9/REST/$savedorderby.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$savedorderby.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$savedorderby.md index 4531ec691026ed..aca56e526c4de3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$savedorderby.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$savedorderby.md @@ -11,7 +11,7 @@ Lorsque vous créez un ensemble d'entités, vous pouvez, par sécurité, enregis Utilisez `$savedorderby` pour enregistrer l'ordre que vous avez défini lors de la création de votre ensemble d'entités, puis passez `$savedorderby` avec votre appel, pour récupérer à chaque fois l'ensemble d'entités. -Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. If you have used both [`$savedfilter`]($savedfilter.md) and `$savedorderby` in your call when creating an entity set and then you omit one of them, the new entity set, having the same reference number, will reflect that. +Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. Si vous avez utilisé à la fois [`$savedfilter`]($savedfilter.md) et `$savedorderby` dans votre appel lors de la création d'un ensemble d'entités et que vous omettez l'un d'entre eux, le nouvel ensemble d'entités, ayant le même numéro de référence, en tiendra compte. ## Exemple From bfdc6e3fac18b8bd35b5c4c90e11120b1b4962e4 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:25 +0200 Subject: [PATCH 33/87] New translations $singleton.md (French) --- .../version-20-R9/REST/$singleton.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$singleton.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$singleton.md index 66abfb295503be..40b853f0cc1158 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$singleton.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$singleton.md @@ -5,7 +5,7 @@ title: $singleton Vous pouvez appeler directement les [fonctions exposées de vos shared singletons](../Concepts/classes.md#singleton-classes) via REST. -Singleton functions are called in POST or GET requests with the `$singleton` command and without `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : +Les fonctions singleton sont appelées dans des requêtes POST ou GET avec la commande `$singleton` et sans `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : ```json /rest/$singleton/VehicleFactory/buildVehicle @@ -27,27 +27,27 @@ N'oubliez pas que seules les fonctions avec le mot-clé [`exposed`](../ORDA/orda ## Appeler des fonctions -Singleton functions can be called using REST **POST** or **GET** requests. +Les fonctions Singleton peuvent être appelées à l'aide de requêtes REST **POST** ou **GET**. La syntaxe formelle est la suivante : -#### POST request +#### Requête POST `/rest/$singleton/SingletonClass/SingletonClassFunction` -with data in the body of the POST request: `["myparam"]` +avec les données contenues dans le body de la requête POST : `["myparam"]` -#### GET request +#### Requête GET `/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'` :::note -The `SingletonClassFunction()` function must have been declared with the `onHTTPGet` keyword to be callable with `GET` (see [Function configuration](ClassFunctions#function-configuration)). +La fonction `SingletonClassFunction()` doit avoir été déclarée avec le mot-clé `onHTTPGet` pour pouvoir être appelée avec `GET` (voir [Configuration de fonction](ClassFunctions#function-configuration)). ::: -> All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +> L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info @@ -77,7 +77,7 @@ exposed Function sayHello ($value : Text) :::note -The `mySingleton` class and `sayHello` function are listed when you call the [`$catalog`]($catalog.md#singletons) command. +La classe `mySingleton` et la fonction `sayHello` sont listées lorsque vous appelez la commande [`$catalog`]($catalog.md#singletons). ::: From 5a00dd192670e3cb9451873fd1a738f007eb33af Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:30 +0200 Subject: [PATCH 34/87] New translations $skip.md (French) --- .../version-20-R9/REST/$skip.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$skip.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$skip.md index ad6efb0f957505..5aa100762821b8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$skip.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$skip.md @@ -3,13 +3,13 @@ id: skip title: $skip --- -Démarre l'entité définie par ce numéro dans la collection (par exemple, `$skip=10`) +Démarre l'entité définie par ce numéro dans la selection (par exemple, `$skip=10`) ## Description `$skip` définit l'entité de la collection par laquelle commencer. Par défaut, la collection envoyée commence par la première entité. Pour commencer avec la 10e entité de la collection, passez 10. -`$skip` is generally used in conjunction with [`$top/$limit`]($top_$limit.md) to navigate through an entity collection. +`$skip` est généralement utilisé avec [`$top/$limit`]($top_$limit.md) pour naviguer dans une entity selection. ## Exemple From a97bef068155ee7e583556ec2beea29f05219b51 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:36 +0200 Subject: [PATCH 35/87] New translations $timeout.md (French) --- .../version-20-R9/REST/$timeout.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$timeout.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$timeout.md index 39c41e817045da..974036700a6739 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$timeout.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$timeout.md @@ -7,11 +7,11 @@ Définit le nombre de secondes pour enregistrer un ensemble d'entités dans le c ## Description -Si un ensemble d'entités est supprimé puis recréé à l'aide de $method=entityset avec $savedfilter, le nouveau timeout par défaut est de 10 minutes, quel que soit le timeout que vous avez défini lors de l'appel de $timeout. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. +Pour définir un délai d'attente pour un ensemble d'entités que vous créez en utilisant [`$method=entityset`]($method.md#methodentityset), indiquez le nombre de secondes dans `$timeout`. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. Une fois le timeout défini, chaque fois qu'un ensemble d'entités est appelé (via `$method=entityset`), le timeout est recalculé en fonction de l'heure courante et du timeout. -If an entity set is removed and then recreated using `$method=entityset` along with [`$savedfilter`]($savedfilter.md), the new default timeout is 10 minutes regardless of the timeout you defined when calling `$timeout`. +Si un ensemble d'entités est supprimé puis recréé en utilisant `$method=entityset` avec [`$savedfilter`]($savedfilter.md), le nouveau délai d'attente par défaut est de 10 minutes, quel que soit le délai d'attente défini lors de l'appel à `$timeout`. ## Exemple From 30d3d8b5d9ba4c5a1612a36b7a59a6cbf997dbf5 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:42 +0200 Subject: [PATCH 36/87] New translations $top_$limit.md (French) --- .../version-20-R9/REST/$top_$limit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$top_$limit.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$top_$limit.md index 5ce55d26a51bcd..f4221f6ccf6cc0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$top_$limit.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$top_$limit.md @@ -9,7 +9,7 @@ Limite le nombre d'entités à retourner (par exemple, `$top=50`) `$top/$limit` définit la limite des entités à retourner. Par défaut, leur nombre est limité à 100. Vous pouvez utiliser l'un des mots clés suivant : `$top` ou `$limit`. -When used in conjunction with [`$skip`]($skip.md), you can navigate through the entity selection returned by the REST request. +Lorsqu'il est utilisé avec [`$skip`]($skip.md), vous pouvez naviguer dans l'entity selection renvoyée par la requête REST. ## Exemple From ed8f215ea373a73d8f5a4488926adf8788672a60 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:48 +0200 Subject: [PATCH 37/87] New translations $upload.md (French) --- .../version-20-R9/REST/$upload.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$upload.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$upload.md index ddf2d778687f87..5b44fe7ba5a0a3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$upload.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/$upload.md @@ -27,7 +27,7 @@ Par conséquent, le serveur retourne un ID qui identifie le fichier : `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50" }` -Afterwards, you use this ID to add it to an attribute using [`$method=update`]($method.md#methodupdate) to add the image to an entity. La requête est la suivante : +Ensuite, vous utilisez cet ID pour l'ajouter à un attribut en utilisant [`$method=update`]($method.md#methodupdate) pour ajouter l'image à une entité. La requête est la suivante : `POST /rest/Employee/?$method=update` @@ -77,14 +77,14 @@ var $blob : Blob ARRAY TEXT($headerNames; 1) ARRAY TEXT($headerValues; 1) -$url:="localhost:80/rest/$upload?$binary=true" //prepare the REST request +$url:="localhost:80/rest/$upload?$binary=true" //préparer la requête REST $headerNames{1}:="Content-Type" $headerValues{1}:="application/octet-stream" -DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //Load the binary +DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //charger le binaire - //Execute the first POST request to upload the file + //Exécuter la première requête POST pour téléverser le fichier $result:=HTTP Request(HTTP POST method; $url; $blob; $response; $headerNames; $headerValues) If ($result=200) @@ -94,7 +94,7 @@ If ($result=200) $data.__STAMP:="3" $data.pdf:=New object("ID"; String($response.ID)) - $url:="localhost:80/rest/Invoices?$method=update" //second request to update the entity + $url:="localhost:80/rest/Invoices?$method=update" //2e requête pour mettre à jour l'entity $headerNames{1}:="Content-Type" $headerValues{1}:="application/json" From cb803005d67f2559a98765b57637e147f7221749 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:55:59 +0200 Subject: [PATCH 38/87] New translations classfunctions.md (French) --- .../version-20-R9/REST/ClassFunctions.md | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/ClassFunctions.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/ClassFunctions.md index 534a7d69d46be2..76d5a6bbd7b1f0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/ClassFunctions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/ClassFunctions.md @@ -3,18 +3,18 @@ id: classFunctions title: Appel des fonctions de classe --- -You can call [data model class functions](ORDA/ordaClasses.md) defined for the ORDA Data Model and [singleton class functions]($singleton.md) through REST requests, so that you can benefit from the exposed API of the targeted 4D application. +Vous pouvez appeler les [fonctions de classe du modèle de données](ORDA/ordaClasses.md) définies pour le modèle de données ORDA et les [fonctions de classe de singleton]($singleton.md) par le biais de requêtes REST, afin de bénéficier de l'API exposée de l'application 4D ciblée. -Functions can be called in two ways: +Les fonctions peuvent être appelées de deux manières : -- using **POST requests**, with data parameters passed in the body of the request. -- using **GET requests**, with parameters directly passed in the URL. +- en utilisant des requêtes **POST**, avec des paramètres de données transmis dans le body de la requête. +- en utilisant des requêtes **GET**, avec des paramètres passés directement dans l'URL. -POST requests provide a better security level because they avoid running sensitive code through an action as simple as clicking on a link. However, GET requests can be more compliant with user experience, allowing to call functions by entering an URL in a browser (note: the developer must ensure no sensitive action is done in such functions). +Les requêtes POST offrent un meilleur niveau de sécurité car elles évitent l'exécution de code sensible par une action aussi simple que de cliquer sur un lien. Cependant, les requêtes GET peuvent être plus conformes à l'expérience utilisateur, en permettant d'appeler des fonctions en saisissant un URL dans un navigateur (note : le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions). ## Appeler des fonctions -The following ORDA and singleton functions can be called in REST: +Les fonctions ORDA et singleton suivantes peuvent être appelées en REST : | Fonction de classe | Syntaxe | | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | @@ -29,27 +29,27 @@ The following ORDA and singleton functions can be called in REST: :::note -`/rest/{dataClass}/Function` can be used to call either a dataclass or an entity selection function (`/rest/{dataClass}` returns all entities of the DataClass as an entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. +`/rest/{dataClass}/Function` peut être utilisé pour appeler une fonction de dataclass ou d'entity selection (`/rest/{dataClass}` renvoie toutes les entités de la dataclass en tant qu'entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. ::: -Functions are simply called on the appropriate ORDA interface or singleton class, without (). [Parameters](#parameters) are passed either in the body of the POST request (`POST` calls) or in the `params` collection in the URL (`GET` calls). +Les fonctions sont simplement appelées sur l'interface ORDA ou la classe singleton appropriée, sans (). Les [Parameters](#parameters) sont passés soit dans le body de la requête POST (appels `POST`), soit dans la collection `params` de l'URL (appels `GET`). Par exemple, si vous avez défini une fonction `getCity()` dans la dataclass City, vous pouvez l'appeler à l'aide de la requête suivante : -#### POST request +#### Requête POST `/rest/City/getCity` avec des données contenues dans le body de la requête POST : `["Aguada"]` -#### GET request +#### Requête GET `/rest/City/getCity?$params='["Aguada"]'` :::note -The `getCity()` function must have been declared with the `onHTTPGet` keyword (see [Function configuration](#function-configuration) below). +La fonction `getCity()` doit avoir été déclarée avec le mot-clé `onHTTPGet` (voir [Configuration des fonctions](#function-configuration) ci-dessous). ::: @@ -59,11 +59,11 @@ En langage 4D, cet appel est équivalent à : $city:=ds.City.getCity("Aguada") ``` -## Function configuration +## Configuration des fonctions ### `exposed` -All functions allowed to be called directly from HTTP REST requests (`POST` or `GET`) must be declared with the `exposed` keyword. Par exemple : +Toutes les fonctions autorisées à être appelées directement depuis des requêtes HTTP REST (`POST` ou `GET`) doivent être déclarées avec le mot-clé `exposed`. Par exemple : ```4d exposed Function getSomeInfo() : 4D.OutgoingMessage @@ -73,56 +73,56 @@ Voir la section [Fonctions exposées vs non exposées](../ORDA/ordaClasses.md#ex ### `onHTTPGet` -Functions allowed to be called from HTTP `GET` requests must also be specifically declared with the [`onHTTPGet` keyword](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : +Les fonctions autorisées à être appelées à partir de requêtes HTTP `GET` doivent également être spécifiquement déclarées avec le [mot-clé `onHTTPGet`](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : ```4d -//allowing GET requests +//autoriser les requêtes GET exposed onHTTPGet Function getSomeInfo() : 4D.OutgoingMessage ``` ### Thread-safe -All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info -You can restrict calls to specific ORDA functions by configuring appropriate privileges in the [**roles.json**](../ORDA/privileges.md#rolesjson-file) file. +Vous pouvez restreindre les appels à des fonctions ORDA spécifiques en configurant les privilèges appropriés dans le fichier [**roles.json**](../ORDA/privileges.md#rolesjson-file). ::: ## Paramètres -You can send parameters to functions defined in ORDA user classes or singletons. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. +Vous pouvez envoyer des paramètres à des fonctions de classes utilisateur ou des singletons ORDA. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. Les règles suivantes s'appliquent : -- In functions called through POST requests, parameters must be passed **in the body of the POST request**. -- In functions called through GET requests, parameters must be passed **in the URL with "?$params=" syntax**. +- Dans les fonctions appelées par des requêtes POST, les paramètres doivent être passés **dans le body de la requête POST**. +- Dans les fonctions appelées par des requêtes GET, les paramètres doivent être passés **dans l'URL avec la syntaxe " ?$params="**. - Les paramètres doivent être inclus dans une collection (format JSON). - Tous les types de données scalaires pris en charge dans les collections JSON peuvent être passés en tant que paramètres. -- L'entity selection et l'entité peuvent être passées en tant que paramètres. The parameter list must contain specific attributes used by the REST server to assign data to the corresponding ORDA objects: `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. +- L'entity selection et l'entité peuvent être passées en tant que paramètres. La liste des paramètres doit contenir les attributs spécifiques utilisés par le serveur REST pour assigner les données aux objets ORDA correspondants : `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. -See [this example](#using-an-entity-to-be-created-on-the-server) and [this example](#receiving-an-entity-selection-as-parameter). +Voir [cet exemple](#using-an-entity-to-be-created-on-the-server) et [cet exemple](#receiving-an-entity-selection-as-parameter). ### Paramètre de valeur scalaire -Scalar value parameter(s) must simply be enclosed in a collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). +Le(s) paramètre(s) de valeur scalaire doit(vent) simplement être inclus dans une collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). -For example, with a dataclass function `getCities()` receiving text parameters: +Par exemple, avec une fonction de la dataclass `getCities()` recevant des paramètres texte : -#### POST request +#### Requête POST `/rest/City/getCities` **Paramètres dans le body :** ["Aguada","Paris"] -#### GET request +#### Requête GET `/rest/City/getCities?$params='["Aguada","Paris"]'` ### Paramètre d'entité -Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). If the key parameter is omitted in a request, a new entity is loaded in memory on the server. +Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). Si le paramètre clé est omis dans une requête, une nouvelle entité est chargée en mémoire sur le serveur. Vous pouvez également transmettre des valeurs pour tous les attributs de l'entité. Ces valeurs seront automatiquement utilisées pour l'entité traitée sur le serveur. > Si la requête envoie des valeurs d'attribut modifiées pour une entité existante sur le serveur, la fonction de modèle de données ORDA appelée sera automatiquement exécutée sur le serveur avec des valeurs modifiées. Cette fonctionnalité vous permet, par exemple, de vérifier le résultat d'une opération sur une entité, après avoir appliqué toutes les règles métier, depuis l'application cliente. Vous pouvez alors décider de sauvegarder ou non l'entité sur le serveur. @@ -137,8 +137,8 @@ Vous pouvez également transmettre des valeurs pour tous les attributs de l'enti - Si `__KEY` n'est pas fourni, une nouvelle entité est créée sur le serveur avec les attributs donnés. - Si `__KEY` est fourni, l'entité correspondant à `__KEY` est chargée sur le serveur avec les attributs donnés -See examples below for creating or updating entities with POST requests. -See an example of contents downloading using an entity with a GET request. +Voir les exemples ci-dessous pour la création ou la mise à jour d'entités avec des requêtes POST. +Voir un exemple de téléchargement de contenu à l'aide d'une entité avec une requête GET. #### Paramètre d'entité associé @@ -158,10 +158,10 @@ L'entity selection doit avoir été définie au préalable à l'aide de [$method | __DATASET | Text | Obligatoire - entitySetID (UUID) de l'entity selection | | __ENTITIES | Boolean | Obligatoire - Vrai pour indiquer au serveur que le paramètre est une sélection d'entité | -See example for [receiving an entity selection](#receiving-an-entity-selection-as-parameter) with a POST request. -See example for [getting a list built upon an entity selection](#using-an-entity-selection-to-get-a-list) with a GET request. +Voir l'exemple pour [recevoir une entity selection](#receiving-an-entity-selection-as-parameter) avec une requête POST. +Voir l'exemple pour [obtenir une liste construite sur la base d'une entity selection](#using-an-entity-selection-to-get-a-list) avec une requête GET. -## POST request examples +## Exemples de requêtes POST Cette base de données est exposée comme un datastore distant sur localhost (port 8111) : @@ -500,8 +500,8 @@ Class extends Entity exposed Function putToSchool($school : Object) -> $status : Object - //$school is a Schools entity - //Associate the related entity school to the current Students entity + //$school est une entité Schools + //Associer l'entité liée School à l'entité Students courante This.school:=$school $status:=This.save() @@ -543,7 +543,7 @@ exposed Function setFinalExam($es : Object ; $examResult : Text) -> $keys : Coll var $student, $status : Object - //$es is an Entity selection + //$es est une Entity selection $keys:=New collection() @@ -612,11 +612,11 @@ $students.add($newStudent) $ageAverage:=$students.getAgeAverage() ``` -## GET request examples +## Exemples de requêtes GET -### Returning a document +### Renvoyer un document -You want to propose a link to download the user manual for a selected product with several formats available. You write a `getUserManual()` function of the Products dataclass. You return an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous souhaitez proposer un lien pour télécharger le manuel d'utilisation d'un produit sélectionné avec plusieurs formats disponibles. Vous écrivez une fonction `getUserManual()` de la dataclass Products. Vous renvoyez un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d // Product dataclass @@ -629,12 +629,12 @@ var $doc:="/RESOURCES/User manuals/product_"+String($productId) Case of : ($type="pdf") $file:=File($doc+".pdf") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "application/pdf") : ($type="jpeg") $file:=File($doc+".jpeg") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "image/jpeg") End case @@ -642,13 +642,13 @@ return $response ``` -You can call the function using a request like: +Vous pouvez appeler la fonction en utilisant une requête comme : **GET** `http://127.0.0.1:8044/rest/Products/getUserManual?$params='[1,"pdf"]'` -### Using an entity to download a PDF document +### Utilisation d'une entité pour télécharger un document PDF -Same example as above but you want to pass an entity as parameter to the datastore function. +Même exemple que ci-dessus, mais vous voulez passer une entité comme paramètre à la fonction datastore. ```4d // Product dataclass @@ -664,13 +664,13 @@ exposed onHTTPGet Function getUserManual($product : cs.ProductEntity) : 4D.Outgo return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/Product/getUserManual?$params='[{"__DATACLASS":"Product","__ENTITY":true,"__KEY":41}]'` -### Using an entity selection to get a list +### Utiliser une entity selection pour obtenir une liste -You want to send an entity selection as parameter to a singleton function using a REST GET request and return a list using an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous voulez envoyer une entity selection comme paramètre à une fonction singleton en utilisant une requête REST GET et retourner une liste en utilisant un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d shared singleton Class constructor() @@ -694,6 +694,6 @@ exposed onHTTPGet Function buildShoppingList($products : cs.ProductSelection) : return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/$singleton/Shopping/buildShoppingList?$params='[{"__DATASET":"8DB0556854HDK52FR5974F","__ENTITIES":true}]'` \ No newline at end of file From 2d633081fd174689d1bbb611c684abe1a8473f08 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:56:07 +0200 Subject: [PATCH 39/87] New translations rest_requests.md (French) --- .../version-20-R9/REST/REST_requests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/REST_requests.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/REST_requests.md index dcf0fef863778b..632dc26862c1a7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/REST_requests.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/REST_requests.md @@ -22,7 +22,7 @@ Comme pour tous les URI, le premier paramètre est délimité par un «?» et to Les paramètres vous permettent de manipuler des données dans des dataclass de votre projet 4D. Outre la récupération de données à l'aide des méthodes HTTP `GET`, vous pouvez également ajouter, mettre à jour et supprimer des entités d'une dataclass à l'aide des méthodes HTTP `POST`. -If you want the data to be returned in an array instead of JSON, use the [`$asArray`]($asArray.md) parameter. +Si vous souhaitez que les données soient renvoyées dans un tableau au lieu de JSON, utilisez le paramètre [`$asArray`]($asArray.md). ## Statut et réponse REST From aa903c632ff3cb12810360c444e9e57a587c600f Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:56:18 +0200 Subject: [PATCH 40/87] New translations configuration.md (French) --- .../version-20-R9/REST/configuration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/configuration.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/configuration.md index 3b9e8725abc6cc..e08a1ccea907cd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/configuration.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/configuration.md @@ -19,21 +19,21 @@ Le message d'avertissement "Attention, vérifiez les privilèges d'accès" s'aff > Vous devez redémarrer l'application 4D pour que vos modifications soient prises en compte. -## Controlling REST access +## Contrôle de l'accès REST Par défaut, les accès REST sont ouverts à tous les utilisateurs, ce qui n'est évidemment pas recommandé pour des raisons de sécurité et de contrôle de l'utilisation des licences clientes. -As of 4D 20 R6, you configure REST accesses by enabling the [**force login** mode](authUsers.md#force-login-mode) and create an [`authentify()`](authUsers.md#function-authentify) datastore class function to authenticate users and assign privileges to their web session. +Depuis 4D 20 R6, vous configurez les accès REST en activant le mode [**force login**](authUsers.md#force-login-mode) et en créant une fonction [`authentify()`](authUsers.md#function-authentify) dans la classe datastore pour authentifier les utilisateurs et attribuer des privilèges à leur session web. :::note Compatibilité -The **Access** area in the Settings dialog box is only available in converted projects for compatibility. See [Access](../settings/web.md#access) for more information. +La zone **Accès** de la boîte de dialogue Propriétés n'est disponible que dans les projets convertis pour des raisons de compatibilité. Voir [Accès](../settings/web.md#access) pour plus d'informations. ::: ## Exposer les tables et les champs -Une fois les services REST sont activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : +Une fois les services REST activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : ``` http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000" @@ -72,14 +72,14 @@ Pour supprimer l'exposition REST d'un champ : 2. Décochez la case **Exposer en tant que ressource REST** pour le champ. ![alt-text](../assets/en/REST/field.png) - Repeat this for each field whose exposure needs to be modified. + Répétez cette opération pour chaque champ dont l'exposition doit être modifiée. > Pour qu'un champ soit accessible via REST, la table parente doit l'être également. Si la table parente n'est pas exposée, aucun de ses champs ne le sera, quel que soit leur statut. ## Mode préemptif -On 4D Server, REST requests are automatically handled through preemptive processes, **even in interpreted mode**. You need to make sure that your code is [compliant with a preemptive execution](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Sur 4D Server, les requêtes REST sont automatiquement traitées par des process préemptifs, **même en mode interprété**. Vous devez vous assurer que votre code est [compatible avec une exécution préemptive](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). -> To debug interpreted web code on the server machine, make sure the debugger is [attached to the server](../Debugging/debugging-remote.md) or [to a remote machine](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. +> Pour déboguer le code web interprété sur la machine serveur, assurez-vous que le débogueur est [attaché au serveur](../Debugging/debugging-remote.md) ou [à une machine distante](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. Avec 4D monoposte, le code interprété s'exécute toujours en mode coopératif. From 802d2edcb80bfafcc17ad79d43c0d4326958d807 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:56:24 +0200 Subject: [PATCH 41/87] New translations dataclass.md (French) --- .../version-20-R9/REST/dataClass.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/dataClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/dataClass.md index 4012a08e41186a..ea569defb65ff6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/dataClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/dataClass.md @@ -24,7 +24,7 @@ Renvoie toutes les données (par défaut, les 100 premières entités) pour une ### Description -When you call this parameter in your REST request, the first 100 entities are returned unless you have specified a value using [`$top/$limit`]($top_$limit.md). +Lorsque vous appelez ce paramètre dans votre requête REST, les 100 premières entités sont renvoyées, sauf si vous avez spécifié une valeur en utilisant [`$top/$limit`]($top_$limit.md). Voici une description des données retournées : @@ -44,7 +44,7 @@ Chaque entité contient les propriétés suivantes : | __TIMESTAMP | Date | Horodatage de la dernière modification de l'entité | | __STAMP | Number | Tampon interne qui est nécessaire lors de la modification des valeurs de l'entité lors de l'utilisation de `$method=update`. | -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company/name,address` @@ -141,9 +141,9 @@ Returns the data for the specific entity defined by the dataclass's primary key, En passant la dataclass et une clé, vous pouvez récupérer toutes les informations publiques de cette entité. La clé est la valeur de l'attribut défini comme clé primaire pour votre dataclass. Pour plus d'informations sur la définition d'une clé primaire, reportez-vous à la section **Modification de la clé primaire** dans **l'éditeur de modèle de données**. -For more information about the data returned, refer to [\{dataClass\}](#dataclass). +Pour plus d'informations sur les données renvoyées, voir [\{dataClass}](#dataclass). -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company(1)/name,address` @@ -190,7 +190,7 @@ En passant la *dataClass* et un *attribut* avec une valeur, vous pouvez récupé `GET /rest/Company:companyCode(Acme001)` -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company:companyCode(Acme001)/name,address` From 2079ca5d250af9433d0f628163fcbd02fd552c8e Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:56:30 +0200 Subject: [PATCH 42/87] New translations geninfo.md (French) --- .../version-20-R9/REST/genInfo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md index d8f8c0149f1323..348b801ed8a783 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : From 3142f88cfa985867b1b4287a543cdd43325a85f1 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 15:56:42 +0200 Subject: [PATCH 43/87] New translations mandata.md (French) --- .../version-20-R9/REST/manData.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/manData.md index 0d18db18c2ce60..7cac7fe5e260ae 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/REST/manData.md @@ -3,11 +3,11 @@ id: manData title: Manipulation des données --- -Tous [les attributs, dataclasses exposés](configuration.md#exposing-tables-and-fields) et toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +Tous les [attributs et dataclass exposés](configuration.md#exposing-tables-and-fields) ainsi que les [fonctions exposées](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse, mais pas les données dans les requêtes. ## Rechercher des données -To query data directly, you can do so using the [`$filter`]($filter.md) function. Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : +Pour interroger directement les données, vous pouvez utiliser la fonction [`$filter`]($filter.md). Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : `http://127.0.0.1:8081/rest/Person/?$filter="lastName=Smith"` @@ -15,43 +15,43 @@ To query data directly, you can do so using the [`$filter`]($filter.md) function Avec l'API REST, vous pouvez effectuer toutes les manipulations de données souhaitées dans 4D. -To add and modify entities, you can call [`$method=update`]($method.md#methodupdate). If you want to delete one or more entities, you can use [`$method=delete`]($method.md#methoddelete). +Pour ajouter et modifier des entités, vous pouvez appeler [`$method=update`]($method.md#methodupdate). Si vous souhaitez supprimer une ou plusieurs entités, vous pouvez utiliser [`$method=delete`]($method.md#methoddelete). -Besides retrieving a single entity in a dataclass using [\{dataClass\}({key})](dataClass.md#dataclasskey), you can also write a [class function](ClassFunctions.md#function-calls) that returns an entity selection (or a collection). +Outre la récupération d'une entité unique dans une dataclass à l'aide de [\dataClass\}({key})](dataClass.md#dataclasskey), vous pouvez également écrire une [class function](ClassFunctions.md#function-calls) qui renvoie une entity selection (ou une collection). -Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) one one or more attributes (even relation attributes). +Avant de renvoyer une sélection, vous pouvez également la trier en utilisant [`$orderby`]($orderby.md) sur un ou plusieurs attributs (même les attributs de relation). ## Parcourir les données -Add the [`$skip`]($skip.md) (to define with which entity to start) and [`$top/$limit`]($top_$limit.md) (to define how many entities to return) REST requests to your queries or entity selections to navigate the collection of entities. +Ajoutez les mots-clés [`$skip`]($skip.md) (pour définir par quelle entité commencer) et [`$top/$limit`]($top_$limit.md) (pour définir le nombre d'entités à renvoyer) à vos requêtes REST ou entity selections pour naviguer dans la sélection d'entités. ## Créer et gérer un entity set -Un entity set (également appelé *entity selection*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. +Un entity set (ou *ensemble d'entités*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. -To create an entity set, call [`$method=entityset`]($method.md#methodentityset) in your REST request. As a measure of security, you can also use [`$savedfilter`]($savedfilter.md) and/or [`$savedorderby`]($savedorderby.md) when you call [`$filter`]($filter.md) and/or [`$orderby`]($orderby.md) so that if ever the entity set timed out or was removed from the server, it can be quickly retrieved with the same ID as before. +Pour créer un ensemble d'entités, appelez [`$method=entityset`]($method.md#methodentityset) dans votre requête REST. Par mesure de sécurité, vous pouvez également utiliser [`$savedfilter`]($savedfilter.md) et/ou [`$savedorderby`]($savedorderby.md) lorsque vous appelez [`$filter`]($filter.md) et/ou [`$orderby`]($orderby.md) de sorte que si l'ensemble d'entités se périme ou est supprimé du serveur, il peut être rapidement récupéré avec le même identifiant qu'auparavant. -To access the entity set, you must use `$entityset/\{entitySetID\}`, for example: +Pour accéder à l'ensemble d'entités, vous devez utiliser `$entityset/\N{entitySetID\N}`, par exemple : `/rest/People/$entityset/0AF4679A5C394746BFEB68D2162A19FF` -By default, an entity set is stored for two hours; however, you can change the timeout by passing a new value to [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. +Par défaut, un ensemble d'entités est stocké pendant deux heures ; cependant, vous pouvez modifier le délai de timeout en passant une nouvelle valeur à [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. -If you want to remove an entity set from 4D Server's cache, you can use [`$method=release`]($method.md#methodrelease). +Si vous souhaitez supprimer un ensemble d'entités du cache de 4D Server, vous pouvez utiliser [`$method=release`]($method.md#methodrelease). Si vous modifiez l'un des attributs de l'entité dans l'entity set, les valeurs seront mises à jour. Toutefois, si vous modifiez une valeur qui faisait partie de la requête exécutée pour créer l'entity set, elle ne sera pas supprimée de l'entity set même si elle ne correspond plus aux critères de recherche. -Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. However, by default their reference will remain in the entity set with an *undefined* value, and they will still be included in the entity set count. Call [`$clean`]($clean.md) on the entity set to create a new, up-to-date entity set without *undefined* entity references. +Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. Cependant, par défaut, leur référence restera dans l'ensemble d'entités avec une valeur *undefined*, et ils seront toujours inclus dans le décompte de l'ensemble d'entités. Appelez [`$clean`]($clean.md) sur l'ensemble d'entités pour créer un nouvel ensemble d'entités à jour sans références d'entités *undefined*. Si l'entity set ne se trouve plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. L'ensemble d'entités sera actualisé (certaines entités peuvent être incluses tandis que d'autres peuvent être supprimées) depuis la dernière fois qu'il a été créé, s'il n'existait plus avant de le recréer. -Using [`$entityset/\{entitySetID\}?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), you can combine two entity sets that you previously created. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. +En utilisant [`$entityset/\N{entitySetID\N} ?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), vous pouvez combiner deux ensembles d'entités que vous avez précédemment créés. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. -A new selection of entities is returned; however, you can also create a new entity set by calling [`$method=entityset`]($method.md#methodentityset) at the end of the REST request. +Une nouvelle sélection d'entités est renvoyée ; cependant, vous pouvez également créer un nouvel ensemble d'entités en appelant [`$method=entityset`]($method.md#methodentityset) à la fin de la requête REST. ## Calcul des données -By using [`$compute`]($compute.md), you can compute the **average**, **count**, **min**, **max**, or **sum** for a specific attribute in a dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. +En utilisant [`$compute`]($compute.md), vous pouvez effectuer les calculs **average**, **count**, **min**, **max** ou **sum** pour un attribut spécifique dans une dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. Par exemple, pour obtenir le salaire le plus élevé : @@ -206,7 +206,7 @@ La requête suivante retourne uniquement les attributs de prénom et nom à part #### Exemple d'ensemble d'entités -Once you have [created an entity set](#creating-and-managing-entity-set), you can filter the information in it by defining which attributes to return: +Une fois que vous avez [créé un ensemble d'entités] (#creating-and-managing-entity-set), vous pouvez filtrer les informations qu'il contient en définissant les attributs à renvoyer : `GET /rest/People/firstName,employer.name/$entityset/BDCD8AABE13144118A4CF8641D5883F5?$expand=employer` @@ -226,6 +226,6 @@ Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez ## Récupérer une seule entité -You can use the [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) syntax when you want to retrieve only one entity. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +Vous pouvez utiliser la syntaxe [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous voulez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : `GET /rest/Company:companyCode("Acme001")` From bceb99cbf80189885727f250a3f799ecd5dc417d Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:00:36 +0200 Subject: [PATCH 44/87] New translations vp-find.md (French) --- .../version-20-R9/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md index 51f5a1af8520d7..a8d9262cad0d4f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 6f5eb6feca7a8ccc15420cc872018d2145cb0606 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:00:39 +0200 Subject: [PATCH 45/87] New translations vp-find.md (Spanish) --- .../version-20-R9/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md index e122ecdf423030..b4c2ea5824cb55 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 62c78635ac8d2b79ad5df9fea5a92f53debe15b9 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:00:42 +0200 Subject: [PATCH 46/87] New translations vp-find.md (Japanese) --- .../version-20-R9/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md index 70ceccbf7b40d6..f36b0aad301c2f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 8ce6fa45c8e52532e1fd3d12edf473b5384cfb38 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:00:44 +0200 Subject: [PATCH 47/87] New translations vp-find.md (Portuguese, Brazilian) --- .../version-20-R9/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md index a69e8faeea2a78..9f8db97da06cb1 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 3be98caf69793e96af660fa17967f75748c06dab Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:05:48 +0200 Subject: [PATCH 48/87] New translations vp-remove-table-columns.md (Spanish) --- .../version-20-R9/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md index 7a0a85d4f52577..fbdde891935a18 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 3dfa665086ed25a65cfdf8bab155d989b1bf9b9e Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:05:50 +0200 Subject: [PATCH 49/87] New translations vp-remove-table-columns.md (Japanese) --- .../version-20-R9/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md index 9aff390b955ca6..dbce5f598859fd 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From ce288fabd1d1b67735b0d2aa68f50e31b99f4780 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:05:53 +0200 Subject: [PATCH 50/87] New translations vp-remove-table-columns.md (Portuguese, Brazilian) --- .../version-20-R9/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md index 3095815f840351..042bb9c8815ff4 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R9/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 6554095734a29187c6fccdf879e483860d874dfb Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 16:11:16 +0200 Subject: [PATCH 51/87] New translations http-request-handler.md (French) --- .../version-20-R9/WebServer/http-request-handler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md index 459eda646e1ead..97ffa9b14ef33c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R9/WebServer/http-request-handler.md @@ -233,7 +233,7 @@ Examples of URLs triggering the handlers: ## Request handler code -### Function configuration +### Configuration des fonctions The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). From 4e383c28121ebec4e028e9311b25229d999c2bdd Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 17:52:09 +0200 Subject: [PATCH 52/87] New translations orda-events.md (French) --- .../current/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 3bb69f180077cf..dddff7b3fbebac 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Exemple 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Par exemple : +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 874430e8eb21760d7b93a99e4c7d93375815e91a Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 17:52:13 +0200 Subject: [PATCH 53/87] New translations orda-events.md (Spanish) --- .../current/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 91cd60a940396c..8286e8b26b9a3c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Ejemplo 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Por ejemplo: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 3d556add9c27f1f9108e98271bce60c4dc65f41b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 17:52:15 +0200 Subject: [PATCH 54/87] New translations orda-events.md (Japanese) --- .../current/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 4d8f992784964f..16ba0ef20474bc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### 例題 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. 例: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 186698213a526125ef38d8f582a09824ace7881f Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 17:52:17 +0200 Subject: [PATCH 55/87] New translations orda-events.md (Portuguese, Brazilian) --- .../current/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 67e6be3fc2b959..c56d6fd01ddca8 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Exemplo 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Por exemplo: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From c4c39637ad3c1ab9c1d2e815f24e3f53210c1889 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 17:54:05 +0200 Subject: [PATCH 56/87] New translations dataclassclass.md (French) --- .../version-20-R10/API/DataClassClass.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md index b5ca3a7788f2ff..d1e3cea0396d6f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md @@ -1143,7 +1143,7 @@ ds.People.query("places.locations[a].kind= :1 and places.locations[a].city= :2"; #### Recherches dans les relations N vers N -ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : +ORDA propose une syntaxe spéciale pour faciliter les recherches dans les relations N vers N. Dans ce contexte, vous pouvez avoir besoin de rechercher des valeurs différentes à l'aide de l'opérateur `AND` MAIS dans le même attribut. Par exemple, considérez la structure suivante : ![alt-text](../assets/en/API/manytomany.png) @@ -1163,7 +1163,7 @@ Pour rendre possible ce type de recherche, ORDA prend en charge une syntaxe spé "relationAttribute.attribute = :1 AND relationAttribute{x}.attribute = :2 [AND relationAttribute{y}.attribute...]" ``` -**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque class index. +**{x}** indique à ORDA de créer une autre référence pour l'attribut relationnel. Le moteur de recherches effectuera alors toutes les opérations internes nécessaires. Notez que **x** peut être n'importe quel nombre **à l'exception de 0**: {1}, ou {2}, ou {1540}... ORDA a simplement besoin d'une référence unique dans la recherche pour chaque index de classe. Dans notre exemple, cela pourrait donner : From 0b5a74b057492ba639015585f3b8f390a8ffcc2e Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:17:17 +0200 Subject: [PATCH 57/87] New translations orda-events.md (French) --- .../version-20-R10/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 3bb69f180077cf..dddff7b3fbebac 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Exemple 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Par exemple : +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 13bc4184a2eaa4deb3d319c79204731ad16dd02b Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:17:19 +0200 Subject: [PATCH 58/87] New translations orda-events.md (Spanish) --- .../version-20-R10/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 91cd60a940396c..8286e8b26b9a3c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Ejemplo 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Por ejemplo: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 154d3eb3a42bd58950a2d35ad0cbe507587146ac Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:17:21 +0200 Subject: [PATCH 59/87] New translations orda-events.md (Japanese) --- .../version-20-R10/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 4d8f992784964f..16ba0ef20474bc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### 例題 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. 例: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From 3159097a08baa27dd02234b848dc5eb0c3704e32 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:17:23 +0200 Subject: [PATCH 60/87] New translations orda-events.md (Portuguese, Brazilian) --- .../version-20-R10/ORDA/orda-events.md | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 67e6be3fc2b959..c56d6fd01ddca8 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -127,14 +127,71 @@ Function event touched($event : Object) #### Exemplo 2 -The "touched" event is useful in situations where certain [computed attributes](../ORDA/ordaClasses.md#computed-attributes) result in costly processing due to their sequential execution. Adding an attribute linked to this event to store a state based on a comparison on the current value of underlying attributes can improve performance and enable optimized searches via indexes. Por exemplo: +The "touched" event is useful when it is not possible to write indexed query code in [`Function query()`](./ordaClasses.md#function-query-attributename) for a [computed attribute](./ordaClasses.md#computed-attributes). + +This is the case for example, when your [`query`](./ordaClasses.md#function-query-attributename) function has to compare the value of different attributes from the same entity, you must use formulas in the returned ORDA query -- which triggers sequential queries. + +To fully understand this case, let's examine the following two calculated attributes: ```4d -exposed Function get sameDay(): Boolean - return (This.departureDate = This.arrivalDate) +Function get onGoing() : Boolean + return ((This.departureDate<=Current date) & (This.arrivalDate>=Current date)) + +Function get sameDay() : Boolean + return (This.departureDate=This.arrivalDate) +``` + +Even though they are very similar, these functions cannot be associated with identical queries because they do not compare the same types of values. The first compares attributes to a given value, while the second compares attributes to each other. + +- For the *onGoing* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function is simple to write and uses indexed attributes: + +```4d +Function query onGoing($event : Object) : Object + var $operator : Text + var $myQuery : Text + var $onGoingValue : Boolean + var $parameters : Collection + $parameters:=New collection() + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $onGoingValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $onGoingValue:=Not(Bool($event.value)) + Else + return {query: ""; parameters: $parameters} + End case + + $myQuery:=($onGoingValue) ? "departureDate <= :1 AND arrivalDate >= :1" : "departureDate > :1 OR arrivalDate < :1" + // the ORDA query string uses indexed attributes, it will be indexed + $parameters.push(Current date) + return {query: $myQuery; parameters: $parameters} +``` + +- For the *sameDay* attribute, the [`query`](./ordaClasses.md#function-query-attributename) function requires an ORDA query based on formulas and will be sequential: + +```4d +Function query sameDay($event : Object) : Text + var $operator : Text + var $sameDayValue : Boolean + + $operator:=$event.operator + Case of + : (($operator="=") | ($operator="==") | ($operator="===")) + $sameDayValue:=Bool($event.value) + : (($operator="!=") | ($operator="!==")) + $sameDayValue:=Not(Bool($event.value)) + Else + return "" + End case + + return ($sameDayValue) ? "eval(This.departureDate != This.arrivalDate)” : "eval(This.departureDate = This.arrivalDate)" + // the ORDA query string uses a formula attributes, it will be indexed + ``` -This code can lead to time-consuming queries because the search is sequential due to the nature of the computed attribute. Using a non-computed *sameDay* attribute updated when other attributes are touched will save time: +- Using a **scalar** *sameDay* attribute updated when other attributes are "touched" will save time: ```4d //BookingEntity class From c609ed0df2c277f9f9e3873f167026a2df6341c0 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:17:26 +0200 Subject: [PATCH 61/87] New translations ordaclasses.md (French) --- .../version-20-R10/ORDA/ordaClasses.md | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index f0c436ba844653..84479ca7fefcae 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -3,7 +3,7 @@ id: ordaClasses title: Classes du modèle de données --- -ORDA allows you to create high-level class functions above the [data model](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. +ORDA vous permet de créer des fonctions de classe de haut niveau au-dessus du [modèle de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Cela vous permet d'écrire du code orienté métier et de le «publier» comme une API. Le datastore, les dataclasses, les entity selections et les entités sont tous disponibles en tant qu'objets de classe pouvant contenir des fonctions. Par exemple, vous pouvez créer une fonction `getNextWithHigherSalary()` dans la classe `EmployeeEntity` pour retourner les employés ayant un salaire supérieur à celui qui est sélectionné. Il serait aussi simple à appeler que : @@ -125,7 +125,7 @@ Vous pouvez ensuite obtenir une sélection d'entité des "meilleures" entreprise :::info -[Les champs calculés](#computed-attributes) sont définis dans [la classe Entity](#entity-class). +[Les attributs calculés](#computed-attributes) sont définis dans la [classe Entity](#entity-class). ::: @@ -182,7 +182,7 @@ Chaque table exposée avec ORDA affiche une classe EntitySelection dans le class Class extends EntitySelection -//Extract the employees with a salary greater than the average from this entity selection +//Extraire les employés dont le salaire est supérieur à la moyenne de l'entity selection Function withSalaryGreaterThanAverage() : cs.EmployeeSelection return This.query("salary > :1";This.average("salary")).orderBy("salary") @@ -211,9 +211,9 @@ Chaque table exposée avec ORDA affiche une classe Entity dans le class store `c #### Class constructor -You can define a **class constructor** for an Entity class. The class constructor is called whenever an entity is created in memory and can be used to initialize some values. +Vous pouvez définir un **class constructor** (*constructeur de classe*) pour une classe d'entité. Le class constructor est appelé chaque fois qu'une entité est créée en mémoire et peut être utilisé pour initialiser certaines valeurs. -For information, please refer to the [Class constructor](#class-constructor-1) section. +Pour plus d'informations, veuillez consulter la section [Class constructor](#class-constructor-1). #### Attributs calculés @@ -450,13 +450,13 @@ Note over Qodly page: product.creationDate is "06/17/25"
and product.comment Un attribut calculé est un attribut de dataclass avec un type de données qui masque un calcul. [Les classes 4D standard](Concepts/classes.md) implémentent le concept de propriétés calculées avec des [fonctions d'accès](Concepts/classes.md#function-get-and-function-set) telles que `get` (*getter*) et `set` (*setter*). Les attributs de dataclass ORDA bénéficient de cette fonctionnalité et l'étendent avec deux fonctions supplémentaires : `query` et `orderBy`. -Un champ calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. +Un attribut calculé nécessite au minimum une fonction `get` qui décrit comment sa valeur sera calculée. Lorsqu'une fonction *getter* est fournie à un attribut, 4D ne crée pas l'espace de stockage sous-jacent dans le datastore mais substitue le code de la fonction chaque fois que l'attribut est accédé. Si l'attribut n'est pas consulté, le code ne s'exécute jamais. -Un champ calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. +Un attribut calculé peut également mettre en œuvre une fonction `set`, qui s'exécute chaque fois qu'une valeur est attribuée à l'attribut. La fonction *setter* décrit ce qui est à faire avec la valeur attribuée, généralement en la redirigeant vers un ou plusieurs attributs de stockage ou, dans certains cas, vers d'autres entités. -Tout comme les champs de stockage, les champs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les champs calculés peuvent implémenter une fonction de requête `query` qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. +Tout comme les attributs de stockage, les attributs calculés peuvent être inclus dans les **requêtes**. Par défaut, lorsqu'un attribut calculé est utilisé dans une requête ORDA, il est calculé une fois par entité examinée. Dans certains cas, cela est suffisant. Cependant, pour de meilleures performances, notamment en client/serveur, les attributs calculés peuvent implémenter une fonction de requête `query` personnalisée qui s'appuie sur les attributs des dataclass et qui bénéficie de leurs index. -De même, les champs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les champs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. +De même, les attributs calculés peuvent être inclus dans des **tris**. Lorsqu'un attribut calculé est utilisé dans un tri ORDA, l'attribut est calculé une fois par entité examinée. Tout comme dans les requêtes, les attributs calculés peuvent mettre en œuvre une fonction `orderBy` qui substitue d'autres attributs pendant le tri, améliorant ainsi les performances. ### Comment définir les attributs calculés @@ -585,7 +585,7 @@ Function query ($event : Object) -> $result : Object Cette fonction prend en charge trois syntaxes : -- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet objet `$event.result`. +- Avec la première syntaxe, vous traitez l'ensemble de la requête via la propriété de l'objet `$event.result`. - Avec les deuxième et troisième syntaxes, la fonction retourne une valeur dans *$result* : - Si *$result* est Text, il doit s'agir d'une chaîne de requête valide @@ -596,7 +596,7 @@ Cette fonction prend en charge trois syntaxes : | $result.query | Text | Chaîne de requête valide avec placeholders (:1, :2, etc.) | | $result.parameters | Collection | valeurs pour placeholders | -La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. +La fonction `query` s'exécute à chaque fois qu'une requête utilisant l'attribut calculé est lancée. Il est utile de personnaliser et d'optimiser les requêtes en s'appuyant sur les attributs indexés. Lorsque la fonction `query` n'est pas implémentée pour un attribut calculé, la recherche est toujours séquentielle (basée sur l'évaluation de toutes les valeurs à l'aide de la fonction `get `). > Les fonctionnalités suivantes ne sont pas prises en charge : > @@ -635,10 +635,10 @@ Function query fullName($event : Object)->$result : Object If ($p>0) $firstname:=Substring($fullname; 1; $p-1)+"@" $lastname:=Substring($fullname; $p+1)+"@" - $parameters:=New collection($firstname; $lastname) // two items collection + $parameters:=New collection($firstname; $lastname) // collection deux éléments Else $fullname:=$fullname+"@" - $parameters:=New collection($fullname) // single item collection + $parameters:=New collection($fullname) // collection un seul élément End if Case of @@ -686,11 +686,11 @@ Function query age($event : Object)->$result : Object Case of : ($operator="==") - $query:="birthday > :1 and birthday <= :2" // after d1 and before or egal d2 + $query:="birthday > :1 and birthday <= :2" // après d1 et avant ou égal à d2 : ($operator="===") - $query:="birthday = :2" // d2 = second calculated date (= birthday date) + $query:="birthday = :2" // d2 = seconde date calculée (= birthday date) : ($operator=">=") $query:="birthday <= :2" @@ -712,11 +712,11 @@ Function query age($event : Object)->$result : Object Code d'appel, par exemple : ```4d -// people aged between 20 and 21 years (-1 day) -$twenty:=people.query("age = 20") // calls the "==" case +// personnes entre 20 et 21 ans (-1 jour) +$twenty:=people.query("age = 20") // appelle le cas "==" -// people aged 20 years today -$twentyToday:=people.query("age === 20") // equivalent to people.query("age is 20") +// personnes âgées de 20 ans aujourd'hui +$twentyToday:=people.query("age === 20") // équivaut à people.query("age is 20") ``` From b2c9f6784e284c0b421cfb3429c197e63e8e425c Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:20:52 +0200 Subject: [PATCH 62/87] New translations $savedorderby.md (French) --- .../version-20-R10/REST/$savedorderby.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$savedorderby.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$savedorderby.md index 4531ec691026ed..aca56e526c4de3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$savedorderby.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$savedorderby.md @@ -11,7 +11,7 @@ Lorsque vous créez un ensemble d'entités, vous pouvez, par sécurité, enregis Utilisez `$savedorderby` pour enregistrer l'ordre que vous avez défini lors de la création de votre ensemble d'entités, puis passez `$savedorderby` avec votre appel, pour récupérer à chaque fois l'ensemble d'entités. -Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. If you have used both [`$savedfilter`]($savedfilter.md) and `$savedorderby` in your call when creating an entity set and then you omit one of them, the new entity set, having the same reference number, will reflect that. +Si l'ensemble d'entités n'est plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. Si vous avez utilisé à la fois [`$savedfilter`]($savedfilter.md) et `$savedorderby` dans votre appel lors de la création d'un ensemble d'entités et que vous omettez l'un d'entre eux, le nouvel ensemble d'entités, ayant le même numéro de référence, en tiendra compte. ## Exemple From 76b2cc5635b6bd79a15bc54d3c050d2e977c79f1 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:20:58 +0200 Subject: [PATCH 63/87] New translations $singleton.md (French) --- .../version-20-R10/REST/$singleton.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$singleton.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$singleton.md index 66abfb295503be..40b853f0cc1158 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$singleton.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$singleton.md @@ -5,7 +5,7 @@ title: $singleton Vous pouvez appeler directement les [fonctions exposées de vos shared singletons](../Concepts/classes.md#singleton-classes) via REST. -Singleton functions are called in POST or GET requests with the `$singleton` command and without `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : +Les fonctions singleton sont appelées dans des requêtes POST ou GET avec la commande `$singleton` et sans `()`. Par exemple, si vous avez défini une fonction `buildVehicle()` dans la classe singleton partagée `VehicleFactory`, vous pouvez l'appeler à l'aide de la requête suivante : ```json /rest/$singleton/VehicleFactory/buildVehicle @@ -27,27 +27,27 @@ N'oubliez pas que seules les fonctions avec le mot-clé [`exposed`](../ORDA/orda ## Appeler des fonctions -Singleton functions can be called using REST **POST** or **GET** requests. +Les fonctions Singleton peuvent être appelées à l'aide de requêtes REST **POST** ou **GET**. La syntaxe formelle est la suivante : -#### POST request +#### Requête POST `/rest/$singleton/SingletonClass/SingletonClassFunction` -with data in the body of the POST request: `["myparam"]` +avec les données contenues dans le body de la requête POST : `["myparam"]` -#### GET request +#### Requête GET `/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'` :::note -The `SingletonClassFunction()` function must have been declared with the `onHTTPGet` keyword to be callable with `GET` (see [Function configuration](ClassFunctions#function-configuration)). +La fonction `SingletonClassFunction()` doit avoir été déclarée avec le mot-clé `onHTTPGet` pour pouvoir être appelée avec `GET` (voir [Configuration de fonction](ClassFunctions#function-configuration)). ::: -> All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +> L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info @@ -77,7 +77,7 @@ exposed Function sayHello ($value : Text) :::note -The `mySingleton` class and `sayHello` function are listed when you call the [`$catalog`]($catalog.md#singletons) command. +La classe `mySingleton` et la fonction `sayHello` sont listées lorsque vous appelez la commande [`$catalog`]($catalog.md#singletons). ::: From d005ee7299bc318115aaacf02cf227f19f5233bb Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:04 +0200 Subject: [PATCH 64/87] New translations $skip.md (French) --- .../version-20-R10/REST/$skip.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$skip.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$skip.md index ad6efb0f957505..5aa100762821b8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$skip.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$skip.md @@ -3,13 +3,13 @@ id: skip title: $skip --- -Démarre l'entité définie par ce numéro dans la collection (par exemple, `$skip=10`) +Démarre l'entité définie par ce numéro dans la selection (par exemple, `$skip=10`) ## Description `$skip` définit l'entité de la collection par laquelle commencer. Par défaut, la collection envoyée commence par la première entité. Pour commencer avec la 10e entité de la collection, passez 10. -`$skip` is generally used in conjunction with [`$top/$limit`]($top_$limit.md) to navigate through an entity collection. +`$skip` est généralement utilisé avec [`$top/$limit`]($top_$limit.md) pour naviguer dans une entity selection. ## Exemple From 1260b7ce43714d8efad808e569416cdf6a2adedf Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:09 +0200 Subject: [PATCH 65/87] New translations $timeout.md (French) --- .../version-20-R10/REST/$timeout.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$timeout.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$timeout.md index 39c41e817045da..974036700a6739 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$timeout.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$timeout.md @@ -7,11 +7,11 @@ Définit le nombre de secondes pour enregistrer un ensemble d'entités dans le c ## Description -Si un ensemble d'entités est supprimé puis recréé à l'aide de $method=entityset avec $savedfilter, le nouveau timeout par défaut est de 10 minutes, quel que soit le timeout que vous avez défini lors de l'appel de $timeout. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. +Pour définir un délai d'attente pour un ensemble d'entités que vous créez en utilisant [`$method=entityset`]($method.md#methodentityset), indiquez le nombre de secondes dans `$timeout`. Par exemple, si vous souhaitez définir le timeout sur 20 minutes, passez 1200. Par défaut, le timeout est de deux (2) heures. Une fois le timeout défini, chaque fois qu'un ensemble d'entités est appelé (via `$method=entityset`), le timeout est recalculé en fonction de l'heure courante et du timeout. -If an entity set is removed and then recreated using `$method=entityset` along with [`$savedfilter`]($savedfilter.md), the new default timeout is 10 minutes regardless of the timeout you defined when calling `$timeout`. +Si un ensemble d'entités est supprimé puis recréé en utilisant `$method=entityset` avec [`$savedfilter`]($savedfilter.md), le nouveau délai d'attente par défaut est de 10 minutes, quel que soit le délai d'attente défini lors de l'appel à `$timeout`. ## Exemple From 591e0417099ebe8dd1e31161d1e48757d506a322 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:15 +0200 Subject: [PATCH 66/87] New translations $top_$limit.md (French) --- .../version-20-R10/REST/$top_$limit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$top_$limit.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$top_$limit.md index 5ce55d26a51bcd..f4221f6ccf6cc0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$top_$limit.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$top_$limit.md @@ -9,7 +9,7 @@ Limite le nombre d'entités à retourner (par exemple, `$top=50`) `$top/$limit` définit la limite des entités à retourner. Par défaut, leur nombre est limité à 100. Vous pouvez utiliser l'un des mots clés suivant : `$top` ou `$limit`. -When used in conjunction with [`$skip`]($skip.md), you can navigate through the entity selection returned by the REST request. +Lorsqu'il est utilisé avec [`$skip`]($skip.md), vous pouvez naviguer dans l'entity selection renvoyée par la requête REST. ## Exemple From 78b2921fc77d98c8ebf8fbef3844eeed00688976 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:20 +0200 Subject: [PATCH 67/87] New translations $upload.md (French) --- .../version-20-R10/REST/$upload.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$upload.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$upload.md index ddf2d778687f87..5b44fe7ba5a0a3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$upload.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/$upload.md @@ -27,7 +27,7 @@ Par conséquent, le serveur retourne un ID qui identifie le fichier : `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50" }` -Afterwards, you use this ID to add it to an attribute using [`$method=update`]($method.md#methodupdate) to add the image to an entity. La requête est la suivante : +Ensuite, vous utilisez cet ID pour l'ajouter à un attribut en utilisant [`$method=update`]($method.md#methodupdate) pour ajouter l'image à une entité. La requête est la suivante : `POST /rest/Employee/?$method=update` @@ -77,14 +77,14 @@ var $blob : Blob ARRAY TEXT($headerNames; 1) ARRAY TEXT($headerValues; 1) -$url:="localhost:80/rest/$upload?$binary=true" //prepare the REST request +$url:="localhost:80/rest/$upload?$binary=true" //préparer la requête REST $headerNames{1}:="Content-Type" $headerValues{1}:="application/octet-stream" -DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //Load the binary +DOCUMENT TO BLOB("c:\\invoices\\inv003.pdf"; $blob) //charger le binaire - //Execute the first POST request to upload the file + //Exécuter la première requête POST pour téléverser le fichier $result:=HTTP Request(HTTP POST method; $url; $blob; $response; $headerNames; $headerValues) If ($result=200) @@ -94,7 +94,7 @@ If ($result=200) $data.__STAMP:="3" $data.pdf:=New object("ID"; String($response.ID)) - $url:="localhost:80/rest/Invoices?$method=update" //second request to update the entity + $url:="localhost:80/rest/Invoices?$method=update" //2e requête pour mettre à jour l'entity $headerNames{1}:="Content-Type" $headerValues{1}:="application/json" From 967f0fd4c1923c324246867672c26b455b699ef9 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:31 +0200 Subject: [PATCH 68/87] New translations classfunctions.md (French) --- .../version-20-R10/REST/ClassFunctions.md | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/ClassFunctions.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/ClassFunctions.md index 534a7d69d46be2..76d5a6bbd7b1f0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/ClassFunctions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/ClassFunctions.md @@ -3,18 +3,18 @@ id: classFunctions title: Appel des fonctions de classe --- -You can call [data model class functions](ORDA/ordaClasses.md) defined for the ORDA Data Model and [singleton class functions]($singleton.md) through REST requests, so that you can benefit from the exposed API of the targeted 4D application. +Vous pouvez appeler les [fonctions de classe du modèle de données](ORDA/ordaClasses.md) définies pour le modèle de données ORDA et les [fonctions de classe de singleton]($singleton.md) par le biais de requêtes REST, afin de bénéficier de l'API exposée de l'application 4D ciblée. -Functions can be called in two ways: +Les fonctions peuvent être appelées de deux manières : -- using **POST requests**, with data parameters passed in the body of the request. -- using **GET requests**, with parameters directly passed in the URL. +- en utilisant des requêtes **POST**, avec des paramètres de données transmis dans le body de la requête. +- en utilisant des requêtes **GET**, avec des paramètres passés directement dans l'URL. -POST requests provide a better security level because they avoid running sensitive code through an action as simple as clicking on a link. However, GET requests can be more compliant with user experience, allowing to call functions by entering an URL in a browser (note: the developer must ensure no sensitive action is done in such functions). +Les requêtes POST offrent un meilleur niveau de sécurité car elles évitent l'exécution de code sensible par une action aussi simple que de cliquer sur un lien. Cependant, les requêtes GET peuvent être plus conformes à l'expérience utilisateur, en permettant d'appeler des fonctions en saisissant un URL dans un navigateur (note : le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions). ## Appeler des fonctions -The following ORDA and singleton functions can be called in REST: +Les fonctions ORDA et singleton suivantes peuvent être appelées en REST : | Fonction de classe | Syntaxe | | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | @@ -29,27 +29,27 @@ The following ORDA and singleton functions can be called in REST: :::note -`/rest/{dataClass}/Function` can be used to call either a dataclass or an entity selection function (`/rest/{dataClass}` returns all entities of the DataClass as an entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. +`/rest/{dataClass}/Function` peut être utilisé pour appeler une fonction de dataclass ou d'entity selection (`/rest/{dataClass}` renvoie toutes les entités de la dataclass en tant qu'entity selection). La fonction est d'abord recherchée dans la classe Entity selection. Si elle n'est pas trouvée, elle est recherchée dans la dataclass. En d'autres termes, si une fonction portant le même nom est définie à la fois dans la classe DataClass et la classe EntitySelection, la fonction de classe de dataclass ne sera jamais exécutée. ::: -Functions are simply called on the appropriate ORDA interface or singleton class, without (). [Parameters](#parameters) are passed either in the body of the POST request (`POST` calls) or in the `params` collection in the URL (`GET` calls). +Les fonctions sont simplement appelées sur l'interface ORDA ou la classe singleton appropriée, sans (). Les [Parameters](#parameters) sont passés soit dans le body de la requête POST (appels `POST`), soit dans la collection `params` de l'URL (appels `GET`). Par exemple, si vous avez défini une fonction `getCity()` dans la dataclass City, vous pouvez l'appeler à l'aide de la requête suivante : -#### POST request +#### Requête POST `/rest/City/getCity` avec des données contenues dans le body de la requête POST : `["Aguada"]` -#### GET request +#### Requête GET `/rest/City/getCity?$params='["Aguada"]'` :::note -The `getCity()` function must have been declared with the `onHTTPGet` keyword (see [Function configuration](#function-configuration) below). +La fonction `getCity()` doit avoir été déclarée avec le mot-clé `onHTTPGet` (voir [Configuration des fonctions](#function-configuration) ci-dessous). ::: @@ -59,11 +59,11 @@ En langage 4D, cet appel est équivalent à : $city:=ds.City.getCity("Aguada") ``` -## Function configuration +## Configuration des fonctions ### `exposed` -All functions allowed to be called directly from HTTP REST requests (`POST` or `GET`) must be declared with the `exposed` keyword. Par exemple : +Toutes les fonctions autorisées à être appelées directement depuis des requêtes HTTP REST (`POST` ou `GET`) doivent être déclarées avec le mot-clé `exposed`. Par exemple : ```4d exposed Function getSomeInfo() : 4D.OutgoingMessage @@ -73,56 +73,56 @@ Voir la section [Fonctions exposées vs non exposées](../ORDA/ordaClasses.md#ex ### `onHTTPGet` -Functions allowed to be called from HTTP `GET` requests must also be specifically declared with the [`onHTTPGet` keyword](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : +Les fonctions autorisées à être appelées à partir de requêtes HTTP `GET` doivent également être spécifiquement déclarées avec le [mot-clé `onHTTPGet`](../ORDA/ordaClasses.md#onhttpget-keyword). Par exemple : ```4d -//allowing GET requests +//autoriser les requêtes GET exposed onHTTPGet Function getSomeInfo() : 4D.OutgoingMessage ``` ### Thread-safe -All 4D code called from REST requests **must be thread-safe** if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the [*Use preemptive process* setting value](../WebServer/webServerConfig.md#use-preemptive-processes) is ignored by the REST Server). +L'ensemble du code 4D appelé à partir de requêtes REST **doit être thread-safe** si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre [*Use preemptive process*](../WebServer/webServerConfig.md#use-preemptive-processes) est ignorée par le serveur REST). :::info -You can restrict calls to specific ORDA functions by configuring appropriate privileges in the [**roles.json**](../ORDA/privileges.md#rolesjson-file) file. +Vous pouvez restreindre les appels à des fonctions ORDA spécifiques en configurant les privilèges appropriés dans le fichier [**roles.json**](../ORDA/privileges.md#rolesjson-file). ::: ## Paramètres -You can send parameters to functions defined in ORDA user classes or singletons. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. +Vous pouvez envoyer des paramètres à des fonctions de classes utilisateur ou des singletons ORDA. Côté serveur, ils seront reçus dans les [paramètres déclarés](../Concepts/parameters.md#declaration-des-parametres) des fonctions de classe. Les règles suivantes s'appliquent : -- In functions called through POST requests, parameters must be passed **in the body of the POST request**. -- In functions called through GET requests, parameters must be passed **in the URL with "?$params=" syntax**. +- Dans les fonctions appelées par des requêtes POST, les paramètres doivent être passés **dans le body de la requête POST**. +- Dans les fonctions appelées par des requêtes GET, les paramètres doivent être passés **dans l'URL avec la syntaxe " ?$params="**. - Les paramètres doivent être inclus dans une collection (format JSON). - Tous les types de données scalaires pris en charge dans les collections JSON peuvent être passés en tant que paramètres. -- L'entity selection et l'entité peuvent être passées en tant que paramètres. The parameter list must contain specific attributes used by the REST server to assign data to the corresponding ORDA objects: `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. +- L'entity selection et l'entité peuvent être passées en tant que paramètres. La liste des paramètres doit contenir les attributs spécifiques utilisés par le serveur REST pour assigner les données aux objets ORDA correspondants : `__DATACLASS`, `__ENTITY`, `__ENTITIES`, `__DATASET`. -See [this example](#using-an-entity-to-be-created-on-the-server) and [this example](#receiving-an-entity-selection-as-parameter). +Voir [cet exemple](#using-an-entity-to-be-created-on-the-server) et [cet exemple](#receiving-an-entity-selection-as-parameter). ### Paramètre de valeur scalaire -Scalar value parameter(s) must simply be enclosed in a collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). +Le(s) paramètre(s) de valeur scalaire doit(vent) simplement être inclus dans une collection. Tous les types de données JSON sont pris en charge dans les paramètres, y compris les pointeurs JSON. Les dates peuvent être passées sous forme de chaînes au format de date ISO 8601 (par exemple, "2020-08-22T22:00:000Z"). -For example, with a dataclass function `getCities()` receiving text parameters: +Par exemple, avec une fonction de la dataclass `getCities()` recevant des paramètres texte : -#### POST request +#### Requête POST `/rest/City/getCities` **Paramètres dans le body :** ["Aguada","Paris"] -#### GET request +#### Requête GET `/rest/City/getCities?$params='["Aguada","Paris"]'` ### Paramètre d'entité -Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). If the key parameter is omitted in a request, a new entity is loaded in memory on the server. +Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). Si le paramètre clé est omis dans une requête, une nouvelle entité est chargée en mémoire sur le serveur. Vous pouvez également transmettre des valeurs pour tous les attributs de l'entité. Ces valeurs seront automatiquement utilisées pour l'entité traitée sur le serveur. > Si la requête envoie des valeurs d'attribut modifiées pour une entité existante sur le serveur, la fonction de modèle de données ORDA appelée sera automatiquement exécutée sur le serveur avec des valeurs modifiées. Cette fonctionnalité vous permet, par exemple, de vérifier le résultat d'une opération sur une entité, après avoir appliqué toutes les règles métier, depuis l'application cliente. Vous pouvez alors décider de sauvegarder ou non l'entité sur le serveur. @@ -137,8 +137,8 @@ Vous pouvez également transmettre des valeurs pour tous les attributs de l'enti - Si `__KEY` n'est pas fourni, une nouvelle entité est créée sur le serveur avec les attributs donnés. - Si `__KEY` est fourni, l'entité correspondant à `__KEY` est chargée sur le serveur avec les attributs donnés -See examples below for creating or updating entities with POST requests. -See an example of contents downloading using an entity with a GET request. +Voir les exemples ci-dessous pour la création ou la mise à jour d'entités avec des requêtes POST. +Voir un exemple de téléchargement de contenu à l'aide d'une entité avec une requête GET. #### Paramètre d'entité associé @@ -158,10 +158,10 @@ L'entity selection doit avoir été définie au préalable à l'aide de [$method | __DATASET | Text | Obligatoire - entitySetID (UUID) de l'entity selection | | __ENTITIES | Boolean | Obligatoire - Vrai pour indiquer au serveur que le paramètre est une sélection d'entité | -See example for [receiving an entity selection](#receiving-an-entity-selection-as-parameter) with a POST request. -See example for [getting a list built upon an entity selection](#using-an-entity-selection-to-get-a-list) with a GET request. +Voir l'exemple pour [recevoir une entity selection](#receiving-an-entity-selection-as-parameter) avec une requête POST. +Voir l'exemple pour [obtenir une liste construite sur la base d'une entity selection](#using-an-entity-selection-to-get-a-list) avec une requête GET. -## POST request examples +## Exemples de requêtes POST Cette base de données est exposée comme un datastore distant sur localhost (port 8111) : @@ -500,8 +500,8 @@ Class extends Entity exposed Function putToSchool($school : Object) -> $status : Object - //$school is a Schools entity - //Associate the related entity school to the current Students entity + //$school est une entité Schools + //Associer l'entité liée School à l'entité Students courante This.school:=$school $status:=This.save() @@ -543,7 +543,7 @@ exposed Function setFinalExam($es : Object ; $examResult : Text) -> $keys : Coll var $student, $status : Object - //$es is an Entity selection + //$es est une Entity selection $keys:=New collection() @@ -612,11 +612,11 @@ $students.add($newStudent) $ageAverage:=$students.getAgeAverage() ``` -## GET request examples +## Exemples de requêtes GET -### Returning a document +### Renvoyer un document -You want to propose a link to download the user manual for a selected product with several formats available. You write a `getUserManual()` function of the Products dataclass. You return an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous souhaitez proposer un lien pour télécharger le manuel d'utilisation d'un produit sélectionné avec plusieurs formats disponibles. Vous écrivez une fonction `getUserManual()` de la dataclass Products. Vous renvoyez un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d // Product dataclass @@ -629,12 +629,12 @@ var $doc:="/RESOURCES/User manuals/product_"+String($productId) Case of : ($type="pdf") $file:=File($doc+".pdf") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "application/pdf") : ($type="jpeg") $file:=File($doc+".jpeg") - $response.setBody($file.getContent()) // This is binary content + $response.setBody($file.getContent()) // Contenu binaire $response.setHeader("Content-Type"; "image/jpeg") End case @@ -642,13 +642,13 @@ return $response ``` -You can call the function using a request like: +Vous pouvez appeler la fonction en utilisant une requête comme : **GET** `http://127.0.0.1:8044/rest/Products/getUserManual?$params='[1,"pdf"]'` -### Using an entity to download a PDF document +### Utilisation d'une entité pour télécharger un document PDF -Same example as above but you want to pass an entity as parameter to the datastore function. +Même exemple que ci-dessus, mais vous voulez passer une entité comme paramètre à la fonction datastore. ```4d // Product dataclass @@ -664,13 +664,13 @@ exposed onHTTPGet Function getUserManual($product : cs.ProductEntity) : 4D.Outgo return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/Product/getUserManual?$params='[{"__DATACLASS":"Product","__ENTITY":true,"__KEY":41}]'` -### Using an entity selection to get a list +### Utiliser une entity selection pour obtenir une liste -You want to send an entity selection as parameter to a singleton function using a REST GET request and return a list using an object of the [`OutgoingMessage` class](../API/OutgoingMessageClass.md). +Vous voulez envoyer une entity selection comme paramètre à une fonction singleton en utilisant une requête REST GET et retourner une liste en utilisant un objet de la classe [`OutgoingMessage`](../API/OutgoingMessageClass.md). ```4d shared singleton Class constructor() @@ -694,6 +694,6 @@ exposed onHTTPGet Function buildShoppingList($products : cs.ProductSelection) : return $response ``` -You can call the function using this request: +Vous pouvez appeler la fonction en utilisant cette requête : **GET** `http://127.0.0.1:8044/rest/$singleton/Shopping/buildShoppingList?$params='[{"__DATASET":"8DB0556854HDK52FR5974F","__ENTITIES":true}]'` \ No newline at end of file From 0d2059494c48dff9adf433a07d9c7d16eb0e7e4a Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:37 +0200 Subject: [PATCH 69/87] New translations rest_requests.md (French) --- .../version-20-R10/REST/REST_requests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/REST_requests.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/REST_requests.md index dcf0fef863778b..632dc26862c1a7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/REST_requests.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/REST_requests.md @@ -22,7 +22,7 @@ Comme pour tous les URI, le premier paramètre est délimité par un «?» et to Les paramètres vous permettent de manipuler des données dans des dataclass de votre projet 4D. Outre la récupération de données à l'aide des méthodes HTTP `GET`, vous pouvez également ajouter, mettre à jour et supprimer des entités d'une dataclass à l'aide des méthodes HTTP `POST`. -If you want the data to be returned in an array instead of JSON, use the [`$asArray`]($asArray.md) parameter. +Si vous souhaitez que les données soient renvoyées dans un tableau au lieu de JSON, utilisez le paramètre [`$asArray`]($asArray.md). ## Statut et réponse REST From 98da401cf8340bec2abf536573ccf2c78cf8712e Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:48 +0200 Subject: [PATCH 70/87] New translations configuration.md (French) --- .../version-20-R10/REST/configuration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/configuration.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/configuration.md index 3b9e8725abc6cc..e08a1ccea907cd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/configuration.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/configuration.md @@ -19,21 +19,21 @@ Le message d'avertissement "Attention, vérifiez les privilèges d'accès" s'aff > Vous devez redémarrer l'application 4D pour que vos modifications soient prises en compte. -## Controlling REST access +## Contrôle de l'accès REST Par défaut, les accès REST sont ouverts à tous les utilisateurs, ce qui n'est évidemment pas recommandé pour des raisons de sécurité et de contrôle de l'utilisation des licences clientes. -As of 4D 20 R6, you configure REST accesses by enabling the [**force login** mode](authUsers.md#force-login-mode) and create an [`authentify()`](authUsers.md#function-authentify) datastore class function to authenticate users and assign privileges to their web session. +Depuis 4D 20 R6, vous configurez les accès REST en activant le mode [**force login**](authUsers.md#force-login-mode) et en créant une fonction [`authentify()`](authUsers.md#function-authentify) dans la classe datastore pour authentifier les utilisateurs et attribuer des privilèges à leur session web. :::note Compatibilité -The **Access** area in the Settings dialog box is only available in converted projects for compatibility. See [Access](../settings/web.md#access) for more information. +La zone **Accès** de la boîte de dialogue Propriétés n'est disponible que dans les projets convertis pour des raisons de compatibilité. Voir [Accès](../settings/web.md#access) pour plus d'informations. ::: ## Exposer les tables et les champs -Une fois les services REST sont activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : +Une fois les services REST activés dans l'application 4D, une session REST peut par défaut accéder à toutes les tables et à tous les champs de la base de données 4D via l'[interface du datastore](ORDA/dsMapping.md#datastore). Ainsi, elle peut utiliser leurs données. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire : ``` http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000" @@ -72,14 +72,14 @@ Pour supprimer l'exposition REST d'un champ : 2. Décochez la case **Exposer en tant que ressource REST** pour le champ. ![alt-text](../assets/en/REST/field.png) - Repeat this for each field whose exposure needs to be modified. + Répétez cette opération pour chaque champ dont l'exposition doit être modifiée. > Pour qu'un champ soit accessible via REST, la table parente doit l'être également. Si la table parente n'est pas exposée, aucun de ses champs ne le sera, quel que soit leur statut. ## Mode préemptif -On 4D Server, REST requests are automatically handled through preemptive processes, **even in interpreted mode**. You need to make sure that your code is [compliant with a preemptive execution](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Sur 4D Server, les requêtes REST sont automatiquement traitées par des process préemptifs, **même en mode interprété**. Vous devez vous assurer que votre code est [compatible avec une exécution préemptive](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). -> To debug interpreted web code on the server machine, make sure the debugger is [attached to the server](../Debugging/debugging-remote.md) or [to a remote machine](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. +> Pour déboguer le code web interprété sur la machine serveur, assurez-vous que le débogueur est [attaché au serveur](../Debugging/debugging-remote.md) ou [à une machine distante](../Debugging/debugging-remote.md). Les process Web passent alors en mode coopératif et le code du serveur Web peut être débogué. Avec 4D monoposte, le code interprété s'exécute toujours en mode coopératif. From 26dd40c26a9116f1804f2893d87269e18771da91 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:53 +0200 Subject: [PATCH 71/87] New translations dataclass.md (French) --- .../version-20-R10/REST/dataClass.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/dataClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/dataClass.md index 4012a08e41186a..ea569defb65ff6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/dataClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/dataClass.md @@ -24,7 +24,7 @@ Renvoie toutes les données (par défaut, les 100 premières entités) pour une ### Description -When you call this parameter in your REST request, the first 100 entities are returned unless you have specified a value using [`$top/$limit`]($top_$limit.md). +Lorsque vous appelez ce paramètre dans votre requête REST, les 100 premières entités sont renvoyées, sauf si vous avez spécifié une valeur en utilisant [`$top/$limit`]($top_$limit.md). Voici une description des données retournées : @@ -44,7 +44,7 @@ Chaque entité contient les propriétés suivantes : | __TIMESTAMP | Date | Horodatage de la dernière modification de l'entité | | __STAMP | Number | Tampon interne qui est nécessaire lors de la modification des valeurs de l'entité lors de l'utilisation de `$method=update`. | -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company/name,address` @@ -141,9 +141,9 @@ Returns the data for the specific entity defined by the dataclass's primary key, En passant la dataclass et une clé, vous pouvez récupérer toutes les informations publiques de cette entité. La clé est la valeur de l'attribut défini comme clé primaire pour votre dataclass. Pour plus d'informations sur la définition d'une clé primaire, reportez-vous à la section **Modification de la clé primaire** dans **l'éditeur de modèle de données**. -For more information about the data returned, refer to [\{dataClass\}](#dataclass). +Pour plus d'informations sur les données renvoyées, voir [\{dataClass}](#dataclass). -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company(1)/name,address` @@ -190,7 +190,7 @@ En passant la *dataClass* et un *attribut* avec une valeur, vous pouvez récupé `GET /rest/Company:companyCode(Acme001)` -If you want to specify which attributes you want to return, define them using the following syntax [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : +Si vous souhaitez spécifier les attributs à renvoyer, définissez-les en utilisant la syntaxe suivante [{attribute1, attribute2, ...}](manData.md#selecting-attributes-to-get). Par exemple : `GET /rest/Company:companyCode(Acme001)/name,address` From 6d66feaca27d1f2e14d29c61b139238dbf35eac7 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:21:59 +0200 Subject: [PATCH 72/87] New translations geninfo.md (French) --- .../version-20-R10/REST/genInfo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md index d8f8c0149f1323..348b801ed8a783 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/genInfo.md @@ -10,7 +10,7 @@ Vous pouvez obtenir plusieurs informations du serveur REST : ## Catalogue -Use the [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass), or [`$catalog/$all`]($catalog.md#catalogall) parameters to get the list of [exposed dataclasses and their attributes](configuration.md#exposing-tables-and-fields). +Utilisez les paramètres [`$catalog`]($catalog.md), [`$catalog/{dataClass}`]($catalog.md#catalogdataclass) ou [`$catalog/$all`]($catalog.md#catalogall) pour obtenir la liste des [dataclass exposées et de leurs attributs](configuration.md#exposing-tables-and-fields). Pour obtenir la collection de toutes les dataclass exposées avec leurs attributs : From 0ea519308fff7b18098d526caa270e87ab8c7110 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:22:10 +0200 Subject: [PATCH 73/87] New translations mandata.md (French) --- .../version-20-R10/REST/manData.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/manData.md index 0d18db18c2ce60..7cac7fe5e260ae 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/REST/manData.md @@ -3,11 +3,11 @@ id: manData title: Manipulation des données --- -Tous [les attributs, dataclasses exposés](configuration.md#exposing-tables-and-fields) et toutes les [fonctions](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse; contrairement aux données des requêtes. +Tous les [attributs et dataclass exposés](configuration.md#exposing-tables-and-fields) ainsi que les [fonctions exposées](ClassFunctions.md) sont accessibles via REST. Les noms de dataclass, d'attributs et de fonctions sont sensibles à la casse, mais pas les données dans les requêtes. ## Rechercher des données -To query data directly, you can do so using the [`$filter`]($filter.md) function. Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : +Pour interroger directement les données, vous pouvez utiliser la fonction [`$filter`]($filter.md). Par exemple, pour trouver une personne nommée "Smith", vous pouvez écrire : `http://127.0.0.1:8081/rest/Person/?$filter="lastName=Smith"` @@ -15,43 +15,43 @@ To query data directly, you can do so using the [`$filter`]($filter.md) function Avec l'API REST, vous pouvez effectuer toutes les manipulations de données souhaitées dans 4D. -To add and modify entities, you can call [`$method=update`]($method.md#methodupdate). If you want to delete one or more entities, you can use [`$method=delete`]($method.md#methoddelete). +Pour ajouter et modifier des entités, vous pouvez appeler [`$method=update`]($method.md#methodupdate). Si vous souhaitez supprimer une ou plusieurs entités, vous pouvez utiliser [`$method=delete`]($method.md#methoddelete). -Besides retrieving a single entity in a dataclass using [\{dataClass\}({key})](dataClass.md#dataclasskey), you can also write a [class function](ClassFunctions.md#function-calls) that returns an entity selection (or a collection). +Outre la récupération d'une entité unique dans une dataclass à l'aide de [\dataClass\}({key})](dataClass.md#dataclasskey), vous pouvez également écrire une [class function](ClassFunctions.md#function-calls) qui renvoie une entity selection (ou une collection). -Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) one one or more attributes (even relation attributes). +Avant de renvoyer une sélection, vous pouvez également la trier en utilisant [`$orderby`]($orderby.md) sur un ou plusieurs attributs (même les attributs de relation). ## Parcourir les données -Add the [`$skip`]($skip.md) (to define with which entity to start) and [`$top/$limit`]($top_$limit.md) (to define how many entities to return) REST requests to your queries or entity selections to navigate the collection of entities. +Ajoutez les mots-clés [`$skip`]($skip.md) (pour définir par quelle entité commencer) et [`$top/$limit`]($top_$limit.md) (pour définir le nombre d'entités à renvoyer) à vos requêtes REST ou entity selections pour naviguer dans la sélection d'entités. ## Créer et gérer un entity set -Un entity set (également appelé *entity selection*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. +Un entity set (ou *ensemble d'entités*) est une collection d'entités obtenue via une requête REST stockée dans le cache de 4D Server. L'utilisation d'un entity set vous empêche de lancer continuellement des requêtes à votre application pour obtenir les mêmes résultats. L'accès à un entity set est beaucoup plus rapide et peut améliorer la vitesse de votre application. -To create an entity set, call [`$method=entityset`]($method.md#methodentityset) in your REST request. As a measure of security, you can also use [`$savedfilter`]($savedfilter.md) and/or [`$savedorderby`]($savedorderby.md) when you call [`$filter`]($filter.md) and/or [`$orderby`]($orderby.md) so that if ever the entity set timed out or was removed from the server, it can be quickly retrieved with the same ID as before. +Pour créer un ensemble d'entités, appelez [`$method=entityset`]($method.md#methodentityset) dans votre requête REST. Par mesure de sécurité, vous pouvez également utiliser [`$savedfilter`]($savedfilter.md) et/ou [`$savedorderby`]($savedorderby.md) lorsque vous appelez [`$filter`]($filter.md) et/ou [`$orderby`]($orderby.md) de sorte que si l'ensemble d'entités se périme ou est supprimé du serveur, il peut être rapidement récupéré avec le même identifiant qu'auparavant. -To access the entity set, you must use `$entityset/\{entitySetID\}`, for example: +Pour accéder à l'ensemble d'entités, vous devez utiliser `$entityset/\N{entitySetID\N}`, par exemple : `/rest/People/$entityset/0AF4679A5C394746BFEB68D2162A19FF` -By default, an entity set is stored for two hours; however, you can change the timeout by passing a new value to [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. +Par défaut, un ensemble d'entités est stocké pendant deux heures ; cependant, vous pouvez modifier le délai de timeout en passant une nouvelle valeur à [`$timeout`]($timeout.md). Le timeout est continuellement réinitialisé à la valeur définie (soit par défaut soit à celle que vous définissez) chaque fois que vous l'utilisez. -If you want to remove an entity set from 4D Server's cache, you can use [`$method=release`]($method.md#methodrelease). +Si vous souhaitez supprimer un ensemble d'entités du cache de 4D Server, vous pouvez utiliser [`$method=release`]($method.md#methodrelease). Si vous modifiez l'un des attributs de l'entité dans l'entity set, les valeurs seront mises à jour. Toutefois, si vous modifiez une valeur qui faisait partie de la requête exécutée pour créer l'entity set, elle ne sera pas supprimée de l'entity set même si elle ne correspond plus aux critères de recherche. -Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. However, by default their reference will remain in the entity set with an *undefined* value, and they will still be included in the entity set count. Call [`$clean`]($clean.md) on the entity set to create a new, up-to-date entity set without *undefined* entity references. +Bien entendu, les entités que vous supprimez ne feront plus partie de l'entity set. Cependant, par défaut, leur référence restera dans l'ensemble d'entités avec une valeur *undefined*, et ils seront toujours inclus dans le décompte de l'ensemble d'entités. Appelez [`$clean`]($clean.md) sur l'ensemble d'entités pour créer un nouvel ensemble d'entités à jour sans références d'entités *undefined*. Si l'entity set ne se trouve plus dans le cache de 4D Server, il sera recréé avec un nouveau timeout de 10 minutes. L'ensemble d'entités sera actualisé (certaines entités peuvent être incluses tandis que d'autres peuvent être supprimées) depuis la dernière fois qu'il a été créé, s'il n'existait plus avant de le recréer. -Using [`$entityset/\{entitySetID\}?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), you can combine two entity sets that you previously created. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. +En utilisant [`$entityset/\N{entitySetID\N} ?$logicOperator... &$otherCollection`]($entityset.md#entitysetentitysetidlogicoperatorothercollection), vous pouvez combiner deux ensembles d'entités que vous avez précédemment créés. Vous pouvez combiner les résultats dans les deux, retourner uniquement ce qui est commun aux deux, ou renvoyer ce qui n'est pas commun aux deux. -A new selection of entities is returned; however, you can also create a new entity set by calling [`$method=entityset`]($method.md#methodentityset) at the end of the REST request. +Une nouvelle sélection d'entités est renvoyée ; cependant, vous pouvez également créer un nouvel ensemble d'entités en appelant [`$method=entityset`]($method.md#methodentityset) à la fin de la requête REST. ## Calcul des données -By using [`$compute`]($compute.md), you can compute the **average**, **count**, **min**, **max**, or **sum** for a specific attribute in a dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. +En utilisant [`$compute`]($compute.md), vous pouvez effectuer les calculs **average**, **count**, **min**, **max** ou **sum** pour un attribut spécifique dans une dataclass. Vous pouvez également calculer toutes les valeurs avec le mot clé $all. Par exemple, pour obtenir le salaire le plus élevé : @@ -206,7 +206,7 @@ La requête suivante retourne uniquement les attributs de prénom et nom à part #### Exemple d'ensemble d'entités -Once you have [created an entity set](#creating-and-managing-entity-set), you can filter the information in it by defining which attributes to return: +Une fois que vous avez [créé un ensemble d'entités] (#creating-and-managing-entity-set), vous pouvez filtrer les informations qu'il contient en définissant les attributs à renvoyer : `GET /rest/People/firstName,employer.name/$entityset/BDCD8AABE13144118A4CF8641D5883F5?$expand=employer` @@ -226,6 +226,6 @@ Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez ## Récupérer une seule entité -You can use the [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) syntax when you want to retrieve only one entity. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +Vous pouvez utiliser la syntaxe [`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous voulez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : `GET /rest/Company:companyCode("Acme001")` From 5deb4e24a96bcb6c1df94c2ab9ffff46422493ff Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:25:34 +0200 Subject: [PATCH 74/87] New translations vp-find.md (French) --- .../version-20-R10/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md index 6ebbd43446dfa4..485baac7db347c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 4ebee366379451dd398ec167efd80c5c683c2c3d Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:25:36 +0200 Subject: [PATCH 75/87] New translations vp-find.md (Spanish) --- .../version-20-R10/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md index 4ccd334c12e81f..6fb0bcfe3b253b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 3e695f0f7a9aa10bf2b6dac2e37eba79eba87563 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:25:38 +0200 Subject: [PATCH 76/87] New translations vp-find.md (Japanese) --- .../version-20-R10/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md index b589bd67a50a0f..2288d71beadfef 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 4da8ee6a62e6a9f2a9044646ea43794f0dd7a97f Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:25:40 +0200 Subject: [PATCH 77/87] New translations vp-find.md (Portuguese, Brazilian) --- .../version-20-R10/ViewPro/commands/vp-find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md index a69e8faeea2a78..9f8db97da06cb1 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-find.md @@ -5,7 +5,7 @@ title: VP Find -**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object +**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object } ) : Object
**VP Find** ( *rangeObj* : Object ; *searchValue* : Text ; *searchCondition* : Object ; *replaceValue* : Text ) : Object From 941c7cd5e08dfbfaf99cffb0e385eecaca770285 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:30:07 +0200 Subject: [PATCH 78/87] New translations vp-remove-table-columns.md (Spanish) --- .../version-20-R10/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md index 7a0a85d4f52577..fbdde891935a18 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 81f00ec2040132ad460bcbe5d967cf543d9650d5 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:30:09 +0200 Subject: [PATCH 79/87] New translations vp-remove-table-columns.md (Japanese) --- .../version-20-R10/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md index 9aff390b955ca6..dbce5f598859fd 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 92024f75f83559decabec6002d7325350ad080a7 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:30:12 +0200 Subject: [PATCH 80/87] New translations vp-remove-table-columns.md (Portuguese, Brazilian) --- .../version-20-R10/ViewPro/commands/vp-remove-table-columns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md index 3095815f840351..042bb9c8815ff4 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-remove-table-columns.md @@ -13,7 +13,7 @@ title: VP REMOVE TABLE COLUMNS -**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }} ) +**VP REMOVE TABLE COLUMNS** ( *vpAreaName* : Text ; *tableName* : Text ; *column* : Integer {; *count* : Integer {; *sheet* : Integer }}} ) From 314d9fa337c227699c0ff46ba1f9fe581a6f0724 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 18:34:44 +0200 Subject: [PATCH 81/87] New translations http-request-handler.md (French) --- .../version-20-R10/WebServer/http-request-handler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md index 459eda646e1ead..97ffa9b14ef33c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md @@ -233,7 +233,7 @@ Examples of URLs triggering the handlers: ## Request handler code -### Function configuration +### Configuration des fonctions The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). From 97c83e118ecddc65da1d1642605260df8b011f06 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 20:07:13 +0200 Subject: [PATCH 82/87] New translations wa-set-context.md (Spanish) --- .../version-20-R10/commands/wa-set-context.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/wa-set-context.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/wa-set-context.md index 8cbd84cb39f94e..40ccd8b119f959 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/wa-set-context.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/wa-set-context.md @@ -11,13 +11,13 @@ title: WA SET CONTEXT | ---------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | \* | Operador | → | Si se especifica, *object* es un nombre de objeto (cadena). Si se omite, *object* es una variable. | | object | any | → | Nombre del objeto (si se especifica \*) o Variable (si se omite \*). | -| contextObj | Object | → | Object containing the functions that can be called with `$4d`. | +| contextObj | Object | → | Objeto que contiene las funciones que se pueden llamar con `$4d`. | ### Descripción -El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. When this command is used, `$4d` can only access contents declared within the provided *contextObj*. When no context object is set, `$4d` has access to all 4D methods and can not access user classes. +El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. Cuando se utiliza este comando, `$4d` sólo puede acceder a los contenidos declarados dentro del *contextObj* proporcionado. Cuando no se establece ningún objeto contexto, `$4d` tiene acceso a todos los métodos 4D y no puede acceder a las clases usuario. :::note @@ -25,7 +25,7 @@ The command is only usable with an embedded web area where the [**Use embedded w ::: -Pass in *contextObj* user class instances or formulas to be allowed in `$4d` as objects. Class functions that begin with `_` are considered hidden and cannot be used with `$4d`. +Pasar en *contextObj* las instancias de clases usuario o las fórmulas a autorizar en `$4d` como objetos. Las funciones de clase que empiezan por `_` se consideran ocultas y no pueden utilizarse con `$4d`. - Si *contextObj* es null, `$4d` tiene acceso a todos los métodos 4D. - Si *contextObj* está vacío, `$4d` no tiene acceso. @@ -45,9 +45,9 @@ Permitir `$4d` a métodos específicos **En JavaScript:** ```js -$4d.myMethod(); // Allowed -$4d.myMethod2(); // Allowed -$4d.someOtherMethod(); // Not accessible +$4d.myMethod(); // Permitido +$4d.myMethod2(); // Permitido +$4d.someOtherMethod(); // No accesible ``` ### Ejemplo 2 From a0f518d4566d7a59e32e15fe70426315ed39dd92 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 20:09:12 +0200 Subject: [PATCH 83/87] New translations string.md (Spanish) --- .../docusaurus-plugin-content-docs/current/commands/string.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/string.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/string.md index dde48931b9ecb8..746f2daa98f1c6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands/string.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/string.md @@ -156,9 +156,9 @@ Los formatos pueden variar en función de la configuración del sistema. #### Parámetro *addTime* -Al procesar expresiones de fecha, también puede pasar una hora en el parámetro *addTime*. Este parámetro permite combinar una fecha con una hora para generar marcas de tiempo conformes a las normas vigentes (constantes ISO Date GMT y Date RFC 1123). These formats are particularly useful in the context of xml and Web processing. The *addTime* parameter can only be used when the *expression* parameter is a date. +Al procesar expresiones de fecha, también puede pasar una hora en el parámetro *addTime*. Este parámetro permite combinar una fecha con una hora para generar marcas de tiempo conformes a las normas vigentes (constantes ISO Date GMT y Date RFC 1123). Estos formatos son especialmente útiles en el contexto del procesamiento xml y Web. El parámetro *addTime* solo puede utilizarse cuando el parámetro *expression* es una fecha. -This parameter can be used with both predefined or pattern-based date formats. Ejemplos: +Este parámetro puede utilizarse con formatos de fecha predefinidos o basados en patrones. Ejemplos: ```4d  $dateTime:=String(!2010-09-09!;ISO date GMT;Current time) //"2010-09-09T08:30:41Z" From 21b25a95854fa4a78d82c08226c30a86b6aac06a Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 23:02:35 +0200 Subject: [PATCH 84/87] New translations mandata.md (French) --- .../docusaurus-plugin-content-docs/version-19/REST/manData.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md b/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md index c2908cd418be5a..00fc9d09f3fcc4 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-19/REST/manData.md @@ -242,7 +242,7 @@ Si vous souhaitez enregistrer un BLOB stocké dans votre dataclass, vous pouvez ## Récupérer une seule entité -Vous pouvez utiliser la syntaxe[`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous souhaitez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche associée qui n'est pas créée sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : +Vous pouvez utiliser la syntaxe[`\{dataClass\}:\{attribute\}(value)`](%7BdataClass%7D.html#dataclassattributevalue) lorsque vous souhaitez récupérer une seule entité. C'est particulièrement utile lorsque vous souhaitez lancer une recherche sur la clé primaire de la dataclass. Par exemple, vous pouvez écrire : `GET /rest/Company:companyCode("Acme001")` From d0acd8c3dc8eee72dc8106c75f171f867d99a847 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 23:02:39 +0200 Subject: [PATCH 85/87] New translations wa-set-context.md (Spanish) --- .../current/commands/wa-set-context.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/wa-set-context.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/wa-set-context.md index 8cbd84cb39f94e..f5034d0be30869 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands/wa-set-context.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/wa-set-context.md @@ -11,21 +11,21 @@ title: WA SET CONTEXT | ---------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | \* | Operador | → | Si se especifica, *object* es un nombre de objeto (cadena). Si se omite, *object* es una variable. | | object | any | → | Nombre del objeto (si se especifica \*) o Variable (si se omite \*). | -| contextObj | Object | → | Object containing the functions that can be called with `$4d`. | +| contextObj | Object | → | Objeto que contiene las funciones que se pueden llamar con `$4d`. | ### Descripción -El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. When this command is used, `$4d` can only access contents declared within the provided *contextObj*. When no context object is set, `$4d` has access to all 4D methods and can not access user classes. +El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. Cuando se utiliza este comando, `$4d` sólo puede acceder a los contenidos declarados dentro del *contextObj* proporcionado. Cuando no se establece ningún objeto contexto, `$4d` tiene acceso a todos los métodos 4D y no puede acceder a las clases usuario. :::note -The command is only usable with an embedded web area where the [**Use embedded web rendering engine**](../FormObjects/properties_WebArea.md#use-embedded-web-rendering-engine) and **Access 4D methods** parameters are set to `true`. +El comando solo es utilizable con un área web integrada en la que los parámetros [**Utilizar el motor de renderizado web integrado**](../FormObjects/properties_WebArea.md#use-embedded-web-rendering-engine) y **Acceder a los métodos 4D** estén configurados como `true`. ::: -Pass in *contextObj* user class instances or formulas to be allowed in `$4d` as objects. Class functions that begin with `_` are considered hidden and cannot be used with `$4d`. +Pasar en *contextObj* las instancias de clases usuario o las fórmulas a autorizar en `$4d` como objetos. Las funciones de clase que empiezan por `_` se consideran ocultas y no pueden utilizarse con `$4d`. - Si *contextObj* es null, `$4d` tiene acceso a todos los métodos 4D. - Si *contextObj* está vacío, `$4d` no tiene acceso. @@ -45,9 +45,9 @@ Permitir `$4d` a métodos específicos **En JavaScript:** ```js -$4d.myMethod(); // Allowed -$4d.myMethod2(); // Allowed -$4d.someOtherMethod(); // Not accessible +$4d.myMethod(); // Permitido +$4d.myMethod2(); // Permitido +$4d.someOtherMethod(); // No accesible ``` ### Ejemplo 2 From b06e3aeef11e8fe727630b940d28b7cf54402e4c Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 23:02:42 +0200 Subject: [PATCH 86/87] New translations wa-set-context.md (Spanish) --- .../version-20-R9/commands/wa-set-context.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/wa-set-context.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/wa-set-context.md index 8cbd84cb39f94e..40ccd8b119f959 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/wa-set-context.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R9/commands/wa-set-context.md @@ -11,13 +11,13 @@ title: WA SET CONTEXT | ---------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | \* | Operador | → | Si se especifica, *object* es un nombre de objeto (cadena). Si se omite, *object* es una variable. | | object | any | → | Nombre del objeto (si se especifica \*) o Variable (si se omite \*). | -| contextObj | Object | → | Object containing the functions that can be called with `$4d`. | +| contextObj | Object | → | Objeto que contiene las funciones que se pueden llamar con `$4d`. | ### Descripción -El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. When this command is used, `$4d` can only access contents declared within the provided *contextObj*. When no context object is set, `$4d` has access to all 4D methods and can not access user classes. +El comando `WA SET CONTEXT` define un objeto contextual *contextObj* para `$4d` en el área Web designado por los parámetros \* y *object*. Cuando se utiliza este comando, `$4d` sólo puede acceder a los contenidos declarados dentro del *contextObj* proporcionado. Cuando no se establece ningún objeto contexto, `$4d` tiene acceso a todos los métodos 4D y no puede acceder a las clases usuario. :::note @@ -25,7 +25,7 @@ The command is only usable with an embedded web area where the [**Use embedded w ::: -Pass in *contextObj* user class instances or formulas to be allowed in `$4d` as objects. Class functions that begin with `_` are considered hidden and cannot be used with `$4d`. +Pasar en *contextObj* las instancias de clases usuario o las fórmulas a autorizar en `$4d` como objetos. Las funciones de clase que empiezan por `_` se consideran ocultas y no pueden utilizarse con `$4d`. - Si *contextObj* es null, `$4d` tiene acceso a todos los métodos 4D. - Si *contextObj* está vacío, `$4d` no tiene acceso. @@ -45,9 +45,9 @@ Permitir `$4d` a métodos específicos **En JavaScript:** ```js -$4d.myMethod(); // Allowed -$4d.myMethod2(); // Allowed -$4d.someOtherMethod(); // Not accessible +$4d.myMethod(); // Permitido +$4d.myMethod2(); // Permitido +$4d.someOtherMethod(); // No accesible ``` ### Ejemplo 2 From 57ed9a237c4c31135ed83012136c06f7955c0246 Mon Sep 17 00:00:00 2001 From: arnaud-4d Date: Tue, 19 Aug 2025 23:02:46 +0200 Subject: [PATCH 87/87] New translations classes.md (Spanish) --- .../version-20-R10/Concepts/classes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md index 4e1552c077721f..41471d66e3a903 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md @@ -92,7 +92,7 @@ En las diferentes ventanas 4D (editor de código, compilador, depurador, explora - una función de clase es un bloque de código - **Ir a la definición** en un objeto miembro busca las declaraciones de función de clase; por ejemplo, "$o.f()" encontrará "Function f". - **Buscar referencias** en la declaración de función de clase busca la función utilizada como miembro de objeto; por ejemplo, "Function f" encontrará "$o.f()". -- In the Runtime explorer and Debugger, class functions are displayed with the `` constructor or `.` formato. +- En el explorador de tiempo de ejecución y en el depurador, las funciones de clase se muestran con el `` constructor o `.` el formato. ## Class stores @@ -232,7 +232,7 @@ Function getFullname()->$fullname : Text $fullname:=This.firstName+" "+Uppercase(This.lastName) ``` -For a class function, the `Current method name` command returns: `.`, por ejemplo "MyClass.myFunction". +Para una función de clase, el comando `Current method name` devuelve: `.`, por ejemplo "MyClass.myFunction". En el código de la aplicación, las funciones de clases se llaman como los métodos miembros de las instancias de objetos y pueden recibir [parámetros](#parameters) si los hay. Se soportan las siguientes sintaxis: @@ -774,7 +774,7 @@ Se declaran clases singleton añadiendo la(s) palabra(s) clave(s) apropiada(s) a ::: -The class singleton is instantiated at the first call of the [`cs..me`](../API/ClassClass.md#me) property. El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). +El singleton de la clase se instanciará en la primera llamada del comando [`cs..me`](../API/ClassClass.md#me) property. El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). Si necesita instanciar un singleton con parámetros, también puede llamar la función [`new()`](../API/ClassClass.md#new). En este caso, se recomienda instanciar el singleton en algún código ejecutado al inicio de la aplicación.