Ошибка валидации схемы XDTO в 1С:Предприятие — Решение
- Исключение:
Ошибка валидации схемы XDTO / Значение не соответствует фасету типа. - Сбой проверки XML/XDTO объекта на соответствие схеме
.xsd. - Нарушение кардинальности элементов (отсутствует обязательное поле с
minOccurs="1"). - Значение строкового или числового типа выходит за рамки допустимых ограничений (pattern, enumeration, maxLength).
1. Диагностика ошибки валидации через фабрику XDTO
Метод Проверить() объекта XDTO позволяет получить полный список несоответствий схеме до момента падения бизнес-логики:
// Программная валидация объекта XDTO
Попытка
ОбъектXDTO.Проверить();
Исключение
ИнформацияОбОшибке = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("XDTO.Валидация", УровеньЖурналаРегистрации.Ошибка, , , ИнформацияОбОшибке);
ВызватьИсключение "Документ не прошел валидацию схемы XDTO: " + ИнформацияОбОшибке;
КонецПопытки;2. Проверка обязательных полей (minOccurs)
Если в схеме XSD свойство описано как minOccurs="1" и nillable="false", свойство обязано быть заполнено реальным значением:
// Корректное заполнение обязательного свойства XDTO
ТипОбъекта = ФабрикаXDTO.Тип("http://v8.1c.ru/edi", "СчетФактура");
Счет = ФабрикаXDTO.Создать(ТипОбъекта);
Счет.Номер = "СФ-00124"; // Обязательное поле
Счет.Дата = ТекущаяДата();3. Исправление фасетов перечислений (Enumeration)
Если значение поля ограничено списком <xs:enumeration>, передача любого другого строкового литерала вызовет сбой валидации. Сверьте передаваемые значения со схемой XSD в ветке метаданных Пакеты XDTO.
Частые вопросы (FAQ)
Что означает свойство nillable="true" в схеме XSD?
Оно разрешает передавать пустое значение (xsi:nil="true") для данного элемента, даже если minOccurs равен 1.
Как загрузить внешнюю XSD схему в фабрику XDTO динамически?
Создайте ЧтениеXML, откройте XSD файл и вызовите ФабрикаXDTO.Создать(Новый НаборСхемXML(Чтение)).
Почему валидация падает на корректной дате?
Схема XSD требует строгого формата xs:dateTime (например, 2026-03-31T10:00:00). Убедитесь, что временная зона и формат соответствуют стандарту XML Schema.
Как отключить строгую валидацию при десериализации?
Используйте метод ФабрикаXDTO.ПрочитатьXML(Чтение, , ФормаПроверкиXML.НеПроверять).