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
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
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 }}} )
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"
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
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.
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
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
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 }}} )
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
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
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 }}} )
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
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 }}} )
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 :

@@ -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 :
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
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")
```
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
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).
:::
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
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
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
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"
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
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
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.

- 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.
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`
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 :
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")`
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
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).
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..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
@@ -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")`
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 :

@@ -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 :
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
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")
```
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
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).
:::
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
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
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
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"
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
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
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.

- 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.
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`
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 :
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")`
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
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).
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 :

@@ -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 :
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")
```
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
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).
:::
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
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
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
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"
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
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
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.

- 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.
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`
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 :
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")`
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
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).
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 :
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")`
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 }}} )
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
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
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 }}} )
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
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
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 }}} )
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
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 }}} )
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 }}} )
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
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
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 }}} )
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
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
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 }}} )
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
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 }}} )
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 }}} )