С введением новых налоговых ставок и изменений в законодательстве (в частности, налоговой реформы 2025 года) пользователи конфигураций «Управление торговлей» (УТ 11), «Комплексная автоматизация» (КА 2) и «Бухгалтерия предприятия» (БП 3) столкнулись с ошибками при синхронизации данных. Одна из наиболее частых проблем — ошибка конвертации значения перечисления НДС 22% (VAT22). В ряде случаев может потребоваться добавление ставок НДС 2025-2026 в старые версии систем через специализированные расширения.
Разберем подробно, почему возникает ошибка вида Ошибка формирования объекта XDTO: Тип свойства . Имя свойства: . Не найдено правило конвертации для значения предопределенных данных, и рассмотрим несколько способов ее решения: от простой настройки до программной доработки. Часто эта проблема сопровождается сообщением, что значение 'НДС22' не соответствует простому типу при проверке данных XDTO.
Суть проблемы кроется в несоответствии версий формата обмена EnterpriseData и метаданных конфигурации (решить её поможет доработка правил синхронизации EnterpriseData для УТ 11.5 и БП 3.0). В последних релизах УТ и БП разработчики добавили новые ставки НДС (5%, 7%, 22%) в перечисление СтавкиНДС. Однако, если обмен данными настроен на использование старых версий формата (например, 1.8, 1.10 или 1.15), то схема XDTO (XML-описание структуры файла обмена) просто «не знает» о существовании таких значений. Чтобы исправить это, может потребоваться провести подготовительные работы по адаптации конфигураций УТ 11.5 или КА 2.5 к новым ставкам.
Когда система пытается выгрузить номенклатуру или документ со ставкой 22%, механизм обмена ищет соответствие во внутреннем маппинге формата, не находит его и выдает исключение.
Самый правильный и наименее трудозатратный способ — использовать актуальную версию формата EnterpriseData, которая уже поддерживает новые ставки НДС. Для этого формата версией должно быть 1.18 или выше (лучше всего 1.20). Если же ваша информационная база требует работы именно со старыми форматами, существует доработка синхронизации данных для форматов 1.10 - 1.16, позволяющая корректно передавать ставку 22%.
Проанализируем последовательность действий для изменения версии формата:
V 1.8 или V 1.15).Важный нюанс: После смены версии необходимо выполнить обмен. В некоторых случаях, если база-приемник «ответит», что она не поддерживает 1.20, версия может автоматически «слететь» обратно на 1.15. В этом случае:
Если вы по каким-то причинам не можете обновить конфигурации или использовать формат 1.20, придется научить старый формат понимать ставку 22%. Чтобы добавить ставки НДС 22%, 5% и 7% без обновления конфигурации, можно воспользоваться специализированным расширением. Это делается в два этапа: доработка кода заполнения правил и доработка пакета XDTO.
Необходимо внедриться в общий модуль, отвечающий за обмен. В УТ 11 это обычно модуль МенеджерОбменаЧерезУниверсальныйФормат (или с суффиксом версии, например, ...18). Нам нужна процедура ЗаполнитьПравилаКонвертацииПредопределенныхДанных.
Создайте расширение конфигурации и добавьте туда эту процедуру с аннотацией &После (или &Вместо с вызовом продолжения, но безопаснее использовать &После и дозаполнять коллекции). Однако, так как структура правил формируется внутри, часто приходится копировать часть кода. Рассмотрим вариант вставки блока для НДС 22%:
// Ищем блок, где заполняются правила для "Перечисление_СтавкиНДС"
// Нам нужно добавить соответствие для НДС 22%
// ЗначенияДляОтправки - это Соответствие, где Ключ - ссылка на перечисление в базе, Значение - строка в XDTO
// Пример кода для вставки в расширение (контекст процедуры ЗаполнитьПравилаКонвертацииПредопределенныхДанных)
// Получаем правило, если оно уже создано, или создаем новое (зависит от контекста внедрения)
// Допустим, мы модифицируем существующее правило:
ЗначенияДляОтправки = ПравилоКонвертации.КонвертацииЗначенийПриОтправке;
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22, "НДС22"); // Строка должна совпадать с фасетом в XDTO
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22_122, "НДС22_122");
ЗначенияДляПолучения = ПравилоКонвертации.КонвертацииЗначенийПриПолучении;
ЗначенияДляПолучения.Вставить("НДС22", Перечисления.СтавкиНДС.НДС22);
ЗначенияДляПолучения.Вставить("НДС22_122", Перечисления.СтавкиНДС.НДС22_122);
Просто добавить код недостаточно. Если вы попытаетесь выгрузить данные с кодом выше, вы получите ошибку валидации XML: Значение: 'НДС22' не соответствует простому типу. Это происходит потому, что в схеме XDTO (например, EnterpriseData_1_8) перечисление RatesVAT (СтавкиНДС) имеет жестко ограниченный список значений (фасет), и "НДС22" там нет. Для решения этой проблемы можно применить готовый патч новой ставки НДС 22% для УТ 11.5, который уже содержит необходимые изменения в XDTO-пакетах.
Рассмотрим, как это исправить вручную:
EnterpriseData_1_8).KeyProperties -> RatesVAT или аналогичное название типа).НДС22 и НДС22_122 (названия должны в точности совпадать с тем, что вы прописали в коде на Этапе 1).Аналогичные действия нужно проделать и в базе-приемнике (БП 3.0), чтобы она могла принять и валидировать этот файл, если используется двусторонний обмен или контроль схемы при загрузке.
Давайте подытожим основные моменты, чтобы избежать ошибок:
Наиболее надежный путь — это обновление обеих конфигураций до релизов, поддерживающих EnterpriseData 1.20, и принудительное включение этой версии в настройках синхронизации.