* Strengthen review contracts and HTTP guidance - add outbound HttpClient transport and HTTP status review rules with paired fixtures`n- resolve layered action-skill overrides deterministically across enabled layers`n- validate findings reports and enforce measurable changed-fixture coverage * Add data handling and test isolation guidance - add SCM guidance for deriving base quantities through line unit-of-measure validation`n- add security guidance for parameterizing SetFilter with external text`n- add test isolation guidance for resetting per-test state before initialization guards`n- add web-service guidance for JSON null handling and invariant standard format 9`n- route and cover all five rules with paired evaluation fixtures * Fix findings report rollup validation * Validate findings report rollups * Enforce merged finding identity * Fix locationless finding deduplication * Reject conflicting merged corrections * Detect conflicting leaf corrections * Route HTTP error checks to canonical web-services knowledge Let the Error Handling leaf conditionally retrieve the existing HTTP owner articles, preserving applicability and exact-path provenance. Add deterministic source-contract and retrieval regressions without duplicating knowledge rules. Copilot-Session-Id: a92a7788-103e-4651-9b84-19e34caffb94 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: wenjiefan <wenjiefan@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
3.7 KiB
| bc-version | domain | keywords | technologies | countries | application-area | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
web-services |
|
|
|
|
Format exchanged values with standard format 9
Description
Format(Value) uses standard format 0, the display format, and follows the current user's regional settings. The same decimal renders as -76.543,21 for a European region and -76,543.21 for English (US); the same date renders as 05-04-21 or 04/05/21. Text built this way and sent outside Business Central (an HTTP query string or body, an XML or CSV file, a signature or hash input, or an external key) changes with the user or job queue session that produces it. The receiver can reject it or, worse, misread it. Evaluate without a format number has the same dependency when it parses machine-generated text.
Best Practice
Use Format(Value, 0, 9) for machine-readable text. Standard format 9 is the XML format and doesn't depend on the region: -76543.21 for a decimal, 2021-04-05 for a date, 04:35:55.553 for a time, true/false for a Boolean, and a UTC DateTime such as 2021-04-05T03:35:55.553Z. Parse such text with Evaluate(Variable, Text, 9).
Prefer typed APIs when they exist. JsonObject.Add and JsonValue.SetValue with a Decimal, Date, or Boolean argument write a JSON value without going through display text. An XMLport handles this with FormatEvaluate = Xml.
For Enum and Option values, format 9 produces the ordinal number, not the name. When the external contract exchanges names, map them explicitly; see api-enum-values-are-a-contract-by-name-not-ordinal.md.
Text shown to a person (messages, captions, report columns, notifications) should keep the regional display format. Code, Text, and Guid values don't need format 9 because their standard formats don't vary by region.
See sample: format-exchanged-values-with-standard-format-9.good.al.
Anti Pattern
Format(Amount), Format(PostingDate), or Format(SomeDateTime) concatenated into a URL, request body, XML or CSV line, file name, or hash input. Passing the Decimal or Date itself to StrSubstNo for such text has the same effect, because StrSubstNo formats it with the display format. Also Evaluate(DecimalOrDateVariable, ExternalText) without format number 9 on text received from another system. The code usually works for the developer's own region and fails for users or job queue sessions in another one. Detection signal: Format with one argument, or with a format number other than 9, applied to a Decimal, Date, Time, DateTime, or Boolean on a path that writes to an HttpContent, HttpRequestMessage, OutStream, XmlDocument, or file.
See sample: format-exchanged-values-with-standard-format-9.bad.al.