ValidateInvoiceBusinessRules
Накладные, соответствие стандартам
Описание
Проверяет выбранный встроенный XML накладной с помощью версионированного провайдера
Синтаксис
Delphi
Function TPDFlib.ValidateInvoiceBusinessRules(Const EmbeddedFileName: WideString;
Const Request: TPDFInvoiceValidationRequest;
Const Provider: IPDFInvoiceValidationProvider;
Out Report: TPDFInvoiceValidationReport): Boolean;Примечания
Находит вложение уровня документа по его точному имени с учётом регистра и подставляет декодированные байты вложения в Request.XMLBytes; переданный вызывающим XML не может подменить настоящую накладную
Возвращает true, только когда каждая запрошенная стадия завершается успешно; Report.Complete=true при IsValid=false отличает завершённую проверку, нашедшую проблемы, от недоступных движков, некорректных входов или незавершённых прогонов
Отсутствующие, неоднозначные, нечитаемые или чрезмерно большие вложения возвращают false с LastErrorCode=401 и диагностикой Invoice.Attachment*; сопоставление ограничено 16384 вложениями, а декодирование — 64 МБ
Задавайте Request.Rules.Standard и Version явно и предоставляйте доверенные файлы правил для точного синтаксиса и профиля, включая все обязательные правила конкретного профиля
PLDefaultInvoiceValidationRequest требует обе стадии — схему и Schematron, задаёт тайм-аут 30000 мс и лимит вывода 8 МБ; вызывающий может явно отключить стадию, тогда она остаётся not_checked и ничего не утверждает об этих правилах
IPDFInvoiceValidationProvider.ValidateStage получает выбранный XML и пакет правил и должен вернуть полный результат стадии, диагностику движка и структурированные замечания; недоступные и аварийные провайдеры пройти не могут
Для автономного XML накладной используйте PLValidateInvoiceXML напрямую, для встроенного адаптера инструментов — PLCreateExternalInvoiceValidationProvider, а для сериализации типизированных результатов — PLInvoiceValidationReportToJSON
См. также
ValidateFacturXInvoice, ValidateInvoiceBusinessRules, ValidateInvoiceBusinessRulesWithTools, ExtractFacturXXMLToString