Опять ИС ЭСФ, опять Simple Transformation и опять дампы

Коллеги, признавайтесь, у кого «любимая» часть работы — это отслеживать очередные внезапные изменения в электронных счетах-фактурах от КГД?

Недавно ИС ЭСФ преподнесла очередной сюрприз: вместо привычного тега <term> в XML прилетает <payment_form>. К счастью, SAP СНГ/Казахстан обычно оперативно выпускает ноты (3749582), но тут разработчиков подстерегают классические грабли обратной совместимости.

При попытке прочитать или обработать из архива старые ЭСФ, система намертво падает в дамп CX_ST_MATCH_ELEMENT с текстом: «Expected element-end: ‘term’». Или даже просто сформировать PDF по ним. Компилятор Simple Transformation просто отказывается понимать старый XML по новой схеме.

Как лечить?

Ошибка с тегом TERM

При обновлении Z-трансформаций (или если приходится ковырять стандарт) не забывайте явно разделять логику сериализации и десериализации. Чтобы старые теги не ломали чтение и не лезли в новую выгрузку, оборачивайте их в блок <tt:deserialize> с проверкой d-check="exist(...)".

Исправление

А как вы боретесь с «обратной совместимостью» XML от наших госорганов? Делитесь в комментариях!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *