From ee2b71c2d10c7e165457c50607353e31b7809c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SAL=C4=B0H=20=C3=96ZKARA?= Date: Tue, 4 Aug 2026 13:07:54 +0300 Subject: [PATCH] docs: complete calculated property support matrix --- docs/en/low-code/expression-language.md | 9 +++++++++ docs/en/low-code/formula-properties.md | 11 ++++++++++- docs/en/low-code/index.md | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/en/low-code/expression-language.md b/docs/en/low-code/expression-language.md index ff49b45d2e..8878241349 100644 --- a/docs/en/low-code/expression-language.md +++ b/docs/en/low-code/expression-language.md @@ -11,6 +11,8 @@ The Low-Code expression language is a provider-safe scalar profile used by virtu Expressions are not JavaScript. They cannot contain arbitrary code, SQL, network calls, browser APIs, side effects, or unsupported Power Fx table and record operations. +An expression can contain up to 4096 characters. + > **Preview:** The language profile is preview functionality. The supported syntax and function set may change before general availability. ## Values and field references @@ -105,6 +107,13 @@ For a calculated property, the expression is expanded into the EF Core query. It For an ordinary property mapping that uses **Formula** existing-data backfill, the same scalar profile is compiled into a provider-side update that initializes existing rows once. The mapped property then stores the result; this is separate from a virtual calculated property. +During JSON-to-database mapping, use `Self` to read the property's current JSON value before it is moved to the database column: + +```text +Coalesce(Self, "Unknown") +Self & " migrated" +``` + Related-record aggregates are not written inside a formula expression. Create a [Rollup Property](formula-properties.md#create-a-rollup-property) for `Count`, `Sum`, `Average`, `Min`, or `Max` over related records. ## Validation errors diff --git a/docs/en/low-code/formula-properties.md b/docs/en/low-code/formula-properties.md index 1bb62f1161..540f97f90f 100644 --- a/docs/en/low-code/formula-properties.md +++ b/docs/en/low-code/formula-properties.md @@ -49,6 +49,8 @@ Client applications cannot set a calculated property. Enable **Server only** whe A rollup evaluates a correlated aggregate over related records. For example, an `Order` can expose the sum of `OrderItem.LineTotal` values when `OrderItem.OrderId` is a foreign key to `Order`. +`Sum` is a rollup operation, not a function that can be written inside a scalar formula. The relationship is evaluated in the reverse direction: the source entity contains the foreign key that points to the entity receiving the rollup. + 1. Open **Add Property** and select **Rollup Property**. 2. Select the **Source Entity** that contains the related records. 3. Select the **Relation Field** whose foreign key points to the current entity. @@ -56,7 +58,14 @@ A rollup evaluates a correlated aggregate over related records. For example, an 5. For every operation except `Count`, select the **Value Field**. 6. Review validation and select **Create Rollup Property**. -`Count` returns a Long value and does not use a value field. `Sum` and `Average` require a numeric value field. `Min` and `Max` preserve a compatible scalar type. A rollup value may be a normal field or a formula property, but it cannot be another rollup. +| Operation | Value field | Result | +| --- | --- | --- | +| `Count` | Not used | Long | +| `Sum` | Int, Long, Decimal, or Money | Preserves a compatible numeric range | +| `Average` | Int, Long, Decimal, or Money | Decimal, or Money for a Money value | +| `Min` / `Max` | String, Int, Long, Decimal, Money, Boolean, Date, or DateTime | Preserves a compatible scalar type | + +A rollup value may be a normal field or a formula property, but it cannot be another rollup. Formulas can reference other calculated properties, including rollup results, and the complete dependency graph is validated for cycles and provider translation. ## Storage and query behavior diff --git a/docs/en/low-code/index.md b/docs/en/low-code/index.md index fc665e7bf0..432e35d874 100644 --- a/docs/en/low-code/index.md +++ b/docs/en/low-code/index.md @@ -109,8 +109,8 @@ The screens below follow that common designer flow from data to page setup to fo ![Page setup in the designer](images/designer-page-filters.png) -![Form setup in the designer](images/designer-forms.png) - +![Form setup in the designer](images/designer-forms.png) + For virtual fields calculated from the current record, related records, or related-record aggregates, see [Calculated and Rollup Properties](formula-properties.md). For the provider-safe scalar syntax used by calculated properties and formula backfills, see the [Low-Code Expression Language](expression-language.md) reference. ## React Runtime