bcquality/community/knowledge/error-handling/table-event-subscriber-rolls-back-whole-batch.good.al
Jeremy Vyska f5156c61de Add 15 community knowledge articles from BC Code Intel ingest
Ingests net-new /community knowledge from BC Code Intelligence, surviving
the admission test, gray-zone salvage, and dedup against the full corpus.

Domains: ui (6), error-handling (3), performance (2), upgrade (1),
appsource (1), security (1), telemetry (1). The two BC24 No. Series
migration drafts are merged into one article.

Adds good/bad AL samples for the clean-fit articles (error-handling,
performance, security, telemetry). UI and appsource remain knowledge-only.

Validator and knowledge-index checks pass (207 articles).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 11:02:48 +02:00

33 lines
1.1 KiB
AL

codeunit 50124 "Batch Import Good Sample"
{
procedure ImportAll(var StagingLine: Record "Sales Line")
var
FailedCount: Integer;
begin
if StagingLine.FindSet() then
repeat
// Isolate each record behind a Codeunit.Run boundary: a failure
// inside the run rolls back only that record's work, and the
// batch continues instead of discarding everything.
if not Codeunit.Run(Codeunit::"Batch Import One Line", StagingLine) then
FailedCount += 1;
until StagingLine.Next() = 0;
if FailedCount > 0 then
Message('%1 line(s) were skipped; the rest were imported.', FailedCount);
end;
}
codeunit 50125 "Batch Import One Line"
{
TableNo = "Sales Line";
trigger OnRun()
begin
// Validation lives here. If it throws, only this line rolls back,
// because the caller wrapped the call in Codeunit.Run.
Rec.TestField("No.");
Rec.TestField(Quantity);
Rec.Insert(true);
end;
}