КатегорияСхемна грешка (XSD) — тип на данните
Кога се хващаПри XSD валидация, на всяка стойност с грешен формат
Типичен сигналcvc-datatype-valid.1.2.1: '…' is not a valid value for 'date'/'decimal'
Какво значи
Всеки елемент в схемата има тип: дата (xs:date), число (xs:decimal), текст с ограничения. Типът диктува формата на записа, и той е международен, не български:
| Тип | Изискван формат | Вярно | Грешно |
|---|---|---|---|
| Дата | ISO 8601: ГГГГ-ММ-ДД | 2026-01-31 | 31.01.2026, 31/01/2026, 31.1.26 |
| Число | десетична точка, без разделители на хилядите | 1234.56 | 1234,56, 1 234.56, 1,234.56 |
Валидаторът дори ви казва коя точно стойност не харесва — това прави тази грешка една от най-лесните за диагностика. Но понеже форматът обикновено е сбъркан системно, съобщенията са стотици: по едно за всяка дата или сума във файла.
Защо се случва
- Експортът взима локалните настройки на Windows. Български регионален формат значи дата с точки и десетична запетая. Софтуер, който форматира стойностите „както ги вижда потребителят“, произвежда невалиден SAF-T.
- Данните са минали през Excel. Excel „услужливо“ преформатира дати и числа по локалата при отваряне на CSV/XML. Един междинен Excel в процеса е достатъчен да развали всички дати.
- Разделител на хилядите.
1 234 567.89изглежда четимо, но интервалът (а често това е непечатимият знак NBSP) прави стойността невалидна заxs:decimal. - Знаци около числото. Валутен символ, интервал в началото/края или знак минус в края (
123.45-, както някои стари системи печатат кредитни суми) — всичко това чупи формата. Минусът е допустим само отпред:-123.45.
Как се поправя
- Намерете настройката за формати в експорта — търсете „ISO формат“, „XML формат“ или възможност експортът да не зависи от регионалните настройки.
- Уверете се, че между източника и файла няма междинно отваряне в Excel или друг инструмент, който преформатира стойности.
- Ако поправяте еднократно: замяна на запетая с точка в суми не може да стане с „замести всички“ по целия файл — ще засегне и текстовете. Правете я само в съответните елементи или поправете източника.
- Регенерирайте и валидирайте: стотиците съобщения трябва да изчезнат наведнъж, защото причината е една.
Пример
<TransactionDate>31.01.2026</TransactionDate>
<Amount>1 234,56</Amount>
<!-- две грешки: дата с точки и
сума с интервал + запетая -->
<TransactionDate>2026-01-31</TransactionDate>
<Amount>1234.56</Amount>
Пуснете файла през безплатната проверка: всяка грешка идва с ред, обяснение и съвет. Проверете файла — безплатно, в браузъра.