You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/API/TCPConnectionClass.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -176,6 +176,7 @@ In the *options* parameter, pass an object that can contain the following proper
176
176
|onError|Formula|Callback triggered in case of an error|Undefined|
177
177
|onTerminate|Formula|Callback triggered just before the TCPConnection is released|Undefined|
178
178
|noDelay|Boolean|**Read-only** Disables Nagle's algorithm if `true`|False|
179
+
|connectionTimeout|Real| Maximum time (in seconds) to establish the connection. If exceeded, the connection attempt is aborted| System-defined, generally ≥ 30 |
Copy file name to clipboardExpand all lines: docs/Notes/updates.md
+12-4Lines changed: 12 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,17 @@ title: Release Notes
4
4
---
5
5
6
6
7
+
## 4D 20 R10
8
+
9
+
Read [**What’s new in 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R10/), the blog post that lists all new features and enhancements in 4D 20 R10.
10
+
11
+
#### Highlights
12
+
13
+
- New `connectionTimeout` option in the [`options`](../API/TCPConnectionClass.md#options-parameter) parameter of the [`4D.TCPConnection.new()`](../API/TCPConnectionClass.md#4dtcpconnectionnew) function.
14
+
7
15
## 4D 20 R9
8
16
9
-
Read [**What’s new in 4D 20 R9**](https://blog.4d.com/en-whats-new-in-4d-v20-R9/), the blog post that lists all new features and enhancements in 4D 20 R9.
17
+
Read [**What’s new in 4D 20 R9**](https://blog.4d.com/en-whats-new-in-4d-20-R9/), the blog post that lists all new features and enhancements in 4D 20 R9.
10
18
11
19
#### Highlights
12
20
@@ -19,14 +27,14 @@ Read [**What’s new in 4D 20 R9**](https://blog.4d.com/en-whats-new-in-4d-v20-R
19
27
- Interpreted components can now be [edited from the host project](../Extensions/develop-components.md#editing-components-from-the-host).
20
28
-[Licenses](../Admin/licenses.md) are now automatically refreshed at startup.
21
29
- New [4D AIKit component](../aikit/overview.md) enabling interaction with third-party AI APIs.
22
-
- The following VP command callbacks now wait for all 4D custom functions to complete their calculations: [VP IMPORT DOCUMENT](../ViewPro/commands/vp-import-document.md), [VP IMPORT FORM BLOB](../ViewPro/commands/vp-import-form-blob.md), [VP IMPORT FROM OBJECT](../ViewPro/commands/vp-import-from-object.md), and [VP FLUSH COMMANDS](../ViewPro/commands/vp-flush-commands.md).
30
+
- The following VP command callbacks now wait for all 4D custom functions to complete their calculations: [VP IMPORT DOCUMENT](../ViewPro/commands/vp-import-document.md), [VP IMPORT FORM BLOB](../ViewPro/commands/vp-import-from-blob.md), [VP IMPORT FROM OBJECT](../ViewPro/commands/vp-import-from-object.md), and [VP FLUSH COMMANDS](../ViewPro/commands/vp-flush-commands.md).
23
31
- New [4D Netkit](https://developer.4d.com/4D-NetKit/) features to manage Google and Microsoft 365 calendars; ability to use the host web server for OAuth 2.0 authentication.
24
32
-[**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=20_R9): list of all bugs that have been fixed in 4D 20 R9.
25
33
26
34
27
35
## 4D 20 R8
28
36
29
-
Read [**What’s new in 4D 20 R8**](https://blog.4d.com/en-whats-new-in-4d-v20-R8/), the blog post that lists all new features and enhancements in 4D 20 R8.
37
+
Read [**What’s new in 4D 20 R8**](https://blog.4d.com/en-whats-new-in-4d-20-R8/), the blog post that lists all new features and enhancements in 4D 20 R8.
30
38
31
39
#### Highlights
32
40
@@ -56,7 +64,7 @@ Read [**What’s new in 4D 20 R8**](https://blog.4d.com/en-whats-new-in-4d-v20-R
56
64
57
65
## 4D 20 R7
58
66
59
-
Read [**What’s new in 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-v20-R7/), the blog post that lists all new features and enhancements in 4D 20 R7.
67
+
Read [**What’s new in 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/), the blog post that lists all new features and enhancements in 4D 20 R7.
Copy file name to clipboardExpand all lines: docs/ORDA/privileges.md
+46Lines changed: 46 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -210,6 +210,52 @@ The `roles.json` file syntax is the following:
210
210
211
211
:::
212
212
213
+
#### Assigning permissions to ORDA class functions
214
+
215
+
When configuring permissions, ORDA class functions are declared in the `applyTo` element using the following syntax:
216
+
217
+
```json
218
+
<DataclassName>.<functionName>
219
+
```
220
+
For example, if you want to apply a permission to the following function:
221
+
222
+
```4d
223
+
// cs.CityEntity class
224
+
Class extends Entity
225
+
Function getPopulation() : Integer
226
+
...
227
+
```
228
+
... you have to write:
229
+
230
+
```json
231
+
"applyTo":"City.getPopulation"
232
+
```
233
+
234
+
It means that you cannot use the same function names in the various ORDA classes (entity, entity selection, dataclass) if you want them to be assigned privileges. In this case, you need to use distinct function names. For example, if you have created a "drop" function in both `cs.CityEntity` and `cs.CitySelection` classes, you need to give them different names such as `dropEntity()` and `dropSelection()`. You can then write in the "roles.json" file:
235
+
236
+
```json
237
+
"permissions": {
238
+
"allowed": [
239
+
{
240
+
"applyTo": "City.dropEntity",
241
+
"type": "method",
242
+
"promote": [
243
+
"name"
244
+
]
245
+
},
246
+
{
247
+
"applyTo": "City.dropSelection",
248
+
"type": "method",
249
+
"promote": [
250
+
"name"
251
+
]
252
+
}
253
+
]
254
+
```
255
+
256
+
257
+
258
+
213
259
### `Roles_Errors.json` file
214
260
215
261
The `roles.json` file is parsed by 4D at startup. You need to restart the application if you want modifications in this file to be taken into account.
Copy file name to clipboardExpand all lines: docs/commands-legacy/call-form.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,11 +15,11 @@ displayed_sidebar: docs
15
15
16
16
<!-- END REF-->
17
17
18
-
## Error management
18
+
## Description
19
19
20
20
<!--REF #_command_.CALL FORM.Summary-->The **CALL FORM** command executes the 4D code designated in *formula* with the optional *param*(s) in the context of a form displayed in a *window*, regardless of the process owning the window.<!-- END REF-->
21
21
22
-
Just like in the worker-based interprocess communication feature (see *About workers*), a message box is associated with the window and can be used when the window displays a form (after the On Load form event). **CALL FORM** encapsulates the formula and its arguments in a message that is posted in the window's message box. The form then executes the message in its own process. The calling process can be cooperative or preemptive, thus this feature allows a preemptive process to exchange information with forms.
22
+
Just like in the [worker-based interprocess communication feature](../Develop/processes.md#worker-processes), a message box is associated with the window and can be used when the window displays a form (after the [On Load](../Events/onLoad.md) form event). **CALL FORM** encapsulates the formula and its arguments in a message that is posted in the window's message box. The form then executes the message in its own process. The calling process can be cooperative or preemptive, thus this feature allows a preemptive process to exchange information with forms.
23
23
24
24
In *window*, you pass the window reference number of the window displaying the called form.
Copy file name to clipboardExpand all lines: docs/commands-legacy/object-get-auto-spellcheck.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,11 @@ displayed_sidebar: docs
19
19
20
20
<!--REF #_command_.OBJECT Get auto spellcheck.Summary-->The **OBJECT Get auto spellcheck** command returns the status of the Auto spellcheck option for the object(s) designated by the *object* and *\** parameters for the current process.<!-- END REF-->
21
21
22
+
This command supports objects of the following types:
-[4D Write Pro areas](../FormObjects/writeProArea_overview.md).
26
+
22
27
If you pass the optional *\** parameter, this indicates that the *object* parameter is an object name (a string). If you do not pass this parameter, this indicates that the *object* is a variable or a field. In this case, you pass a reference instead of a name.
23
28
24
29
The command returns **True** when automatic spell-checking is enabled for the *object* and **False** when it is not.
Copy file name to clipboardExpand all lines: docs/commands-legacy/object-set-auto-spellcheck.md
+8-1Lines changed: 8 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,10 +17,17 @@ displayed_sidebar: docs
17
17
18
18
## Description
19
19
20
-
<!--REF #_command_.OBJECT SET AUTO SPELLCHECK.Summary-->The **OBJECT SET AUTO SPELLCHECK** command sets or dynamically modifies the status of the **Auto spellcheck** option for the object(s) designated by the *object* and *\** parameters for the current process.<!-- END REF--> This option enables or disables the automatic spellcheck when data is entered for the object (Text type objects only).
20
+
<!--REF #_command_.OBJECT SET AUTO SPELLCHECK.Summary-->The **OBJECT SET AUTO SPELLCHECK** command sets or dynamically modifies the status of the **Auto spellcheck** option for the object(s) designated by the *object* and *\** parameters for the current process.<!-- END REF--> This option enables or disables the automatic spellcheck when data is entered for the object.
21
+
22
+
This command supports objects of the following types:
-[4D Write Pro areas](../FormObjects/writeProArea_overview.md).
26
+
21
27
22
28
If you pass the optional *\** parameter, this indicates that the *object* parameter is an object name (a string). If you do not pass this parameter, this indicates that the *object* is a variable or a field. In this case, you pass a reference instead of a name.
23
29
30
+
24
31
Pass **True** in *autoSpellcheck* to enable this function for the object, and **False** to disable it.
| param | any | -> | Parámetro(s) a pasar a la *formula* o *methodName*|
1076
-
| Resultado | Integer | <- |Conjunción |
1076
+
| Resultado | Integer | <- |Índice del primer valor encontrado, o -1 si no se encuentra|
1077
1077
1078
1078
<!-- END REF -->
1079
1079
@@ -1527,7 +1527,7 @@ En *index*, pase la posición donde quiere insertar el elemento en la colección
1527
1527
1528
1528
> **Atención**: recuerde que los elementos de la colección están numerados desde 0.
1529
1529
1530
-
-Ejemplo 1
1530
+
-Si *index* la longitud de la colección, el índice inicial real se fijará en la longitud de la colección.
1531
1531
- Si *index* <0, se recalcula como *index:=index+length* (se considera el desplazamiento desde el final de la colección).
1532
1532
- Si el valor calculado es negativo, index toma el valor 0.
1533
1533
@@ -1665,17 +1665,24 @@ En *toSearch*, pase la expresión a encontrar en la colección. Puede pasar:
1665
1665
1666
1666
*toSearch* debe coincidir exactamente con el elemento a encontrar (se aplican las mismas reglas que para el operador de igualdad del tipo de datos).
1667
1667
1668
-
Ejemplo 2
1668
+
Opcionalmente, puede pasar el índice de la colección desde el cual iniciar una búsqueda en reversa en *startFrom*.
1669
1669
1670
1670
- Si *startFrom* >= la longitud de la colección menos uno (coll.length-1), se busca en toda la colección (por defecto).
1671
1671
- Si *startFrom* < 0, se recalcula como *startFrom:=startFrom+length* (se considera el desplazamiento desde el final de la colección). Si el valor calculado es negativo, se devuelve -1 (no se busca en la colección).
1672
1672
**Nota:** incluso si *startFrom* es negativo, la colección se sigue buscando de derecha a izquierda.
1673
-
-Descripción
1673
+
-Si *startFrom* = 0, se devuelve -1 lo que significa que la colección no se busca.
Diferente de Si *startFrom* < 0, se considera el desplazamiento desde el final de la colección (*startFrom:=startFrom+length*).
1804
+
La función `.max()`<!-- REF #collection.max().Summary -->devuelve el elemento con el valor más alto de la colección<!-- END REF --> (el último elemento de la colección tal y como se ordenaría en orden ascendente utilizando la función [`.sort()`](#sort)).
1798
1805
1799
1806
> Esta función no modifica la colección original.
1800
1807
1801
-
La función `.max()`<!-- REF #collection.max().Summary -->devuelve el elemento con el valor más alto de la colección <!-- END REF --> (el último elemento de la colección, ya que sería ordenado en orden ascendente usando el [`.sort()`](#sort) función).
1808
+
Si la colección contiene diferentes tipos de valores, la función `.max()`devolverá el valor máximo dentro del último tipo de elemento en el orden de la lista de tipos (ver la descripción de [`.sort()`](#sort)).
1802
1809
1803
-
Lanzamiento
1810
+
Si la colección contiene objetos, pase el parámetro *propertyPath* para indicar la propiedad del objeto cuyo valor máximo desea obtener.
1804
1811
1805
1812
Si la colección está vacía, `.max()` devuelve *Undefined*.
1806
1813
@@ -2685,9 +2692,9 @@ Puede pasar el valor para inicializar el acumulador en *initValue*. Si se omite,
2685
2692
2686
2693
La retrollamada recibe los siguientes parámetros:
2687
2694
2688
-
-La nueva colección
2689
-
-Se puede insertar cualquier tipo de elemento aceptado por una colección, incluso otra colección.
2690
-
-Esta función modifica la colección original.
2695
+
-en *$1.value*: valor del elemento a procesar
2696
+
-en *$2: param*
2697
+
-en *$N...*: *paramN...*
2691
2698
2692
2699
La retrollamada define los siguientes parámetros:
2693
2700
@@ -2770,9 +2777,9 @@ Puede pasar el valor para inicializar el acumulador en *initValue*. Si se omite,
2770
2777
2771
2778
La retrollamada recibe los siguientes parámetros:
2772
2779
2773
-
-La nueva colección
2774
-
-Se puede insertar cualquier tipo de elemento aceptado por una colección, incluso otra colección.
2775
-
-Esta función modifica la colección original.
2780
+
-en *$1.value*: valor del elemento a procesar
2781
+
-en *$2: param*
2782
+
-en *$N...*: *paramN...*
2776
2783
2777
2784
La retrollamada define los siguientes parámetros:
2778
2785
@@ -3077,7 +3084,7 @@ La colección devuelta contiene el elemento especificado por *startFrom* y todos
3077
3084
3078
3085
#### Descripción
3079
3086
3080
-
Lanzamiento
3087
+
La función `.some()`<!-- REF #collection.some().Summary --> devuelve true si al menos un elemento de la colección ha pasado con éxito una prueba implementada en el código *formula* o *methodName* suministrado<!-- END REF -->.
3081
3088
3082
3089
Se designa el código 4D de retrollamada (callback) a ejecutar para evaluar los elementos de la colección utilizando:
3083
3090
@@ -3088,16 +3095,16 @@ La retrollamada se llama con los parámetros pasados en *param* (opcional). La r
3088
3095
3089
3096
La retrollamada recibe los siguientes parámetros:
3090
3097
3091
-
-La nueva colección
3092
-
-Se puede insertar cualquier tipo de elemento aceptado por una colección, incluso otra colección.
3093
-
-Esta función modifica la colección original.
3098
+
-en *$1.value*: valor del elemento a procesar
3099
+
-en *$2: param*
3100
+
-en *$N...*: *paramN...*
3094
3101
3095
3102
Puede definir los siguientes parámetros:
3096
3103
3097
3104
- Expresión a buscar en la colección
3098
3105
-*$1.stop* (boolean, opcional): **true** para detener la retrollamada del método. El valor devuelto es el último calculado.
3099
3106
3100
-
Descripción
3107
+
En todo caso, en el momento en que la función `.some()` encuentra el primer elemento de la colección que devuelve true, deja de llamar a la llamada de retorno y devuelve **true**.
3101
3108
3102
3109
Por defecto, `.some()` comprueba toda la colección. Opcionalmente, puede pasar el índice de un elemento desde el cual iniciar la prueba en *startFrom*.
3103
3110
@@ -3179,7 +3186,7 @@ La retrollamada recibe los siguientes parámetros:
3179
3186
-*$1.value2* (todo tipo): valor del segundo elemento a comparar
Copy file name to clipboardExpand all lines: i18n/es/docusaurus-plugin-content-docs/current/API/EntityClass.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -866,7 +866,7 @@ El valor resultante se incluye entre 0 y la longitud de la selección de entidad
866
866
867
867
#### Descripción
868
868
869
-
True si la entidad acaba de ser creada y aún no se ha guardado. .
869
+
La función `.isNew()`<!-- REF #EntityClass.isNew().Summary --> devuelve True si la entidad a la que se aplica acaba de ser creada y aún no ha sido guardada en el datastore<!-- END REF -->. .
0 commit comments