Ошибка ставки НДС 22% при обмене УТ 11.5 и БП 3: как исправить проблему в XDTO

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

С введением новых налоговых ставок и изменений в законодательстве (в частности, налоговой реформы 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%, механизм обмена ищет соответствие во внутреннем маппинге формата, не находит его и выдает исключение.

Способ 1: Переключение версии формата обмена (Рекомендуемый)

Самый правильный и наименее трудозатратный способ — использовать актуальную версию формата EnterpriseData, которая уже поддерживает новые ставки НДС. Для этого формата версией должно быть 1.18 или выше (лучше всего 1.20). Если же ваша информационная база требует работы именно со старыми форматами, существует доработка синхронизации данных для форматов 1.10 - 1.16, позволяющая корректно передавать ставку 22%.

Проанализируем последовательность действий для изменения версии формата:

  1. Убедитесь, что обе базы (и источник, и приемник) обновлены до актуальных релизов. Если БП старая, она не поймет формат 1.20.
  2. Зайдите в настройки синхронизации данных в базе-источнике (УТ 11) — для контроля остатков после обмена пригодится сверка остатков номенклатуры в БП 3.0 и УТ 11.5.
  3. Нажмите кнопку настроек подключения (обычно иконка двух карандашей или пункт «Настроить»).
  4. В открывшемся окне нам нужно добраться до скрытых служебных настроек. Нажмите кнопку «Ещё» — «Изменить форму».
  5. В дереве элементов формы найдите группу (обычно в самом низу), которая называется «Служебная информация» или содержит параметры версии. Поставьте галочку напротив этой группы, чтобы она отобразилась на форме.
  6. Нажмите «ОК» и вернитесь к форме настроек. Теперь там должна появиться закладка или поле с версией формата обмена (например, V 1.8 или V 1.15).
  7. Измените значение на V 1.20 (EnterpriseData 1.20).
  8. Сохраните настройки.

Важный нюанс: После смены версии необходимо выполнить обмен. В некоторых случаях, если база-приемник «ответит», что она не поддерживает 1.20, версия может автоматически «слететь» обратно на 1.15. В этом случае:

Способ 2: Программная доработка через Расширение (Если обновление невозможно)

Если вы по каким-то причинам не можете обновить конфигурации или использовать формат 1.20, придется научить старый формат понимать ставку 22%. Чтобы добавить ставки НДС 22%, 5% и 7% без обновления конфигурации, можно воспользоваться специализированным расширением. Это делается в два этапа: доработка кода заполнения правил и доработка пакета XDTO.

Этап 1: Добавление правила конвертации

Необходимо внедриться в общий модуль, отвечающий за обмен. В УТ 11 это обычно модуль МенеджерОбменаЧерезУниверсальныйФормат (или с суффиксом версии, например, ...18). Нам нужна процедура ЗаполнитьПравилаКонвертацииПредопределенныхДанных.

Создайте расширение конфигурации и добавьте туда эту процедуру с аннотацией &После (или &Вместо с вызовом продолжения, но безопаснее использовать &После и дозаполнять коллекции). Однако, так как структура правил формируется внутри, часто приходится копировать часть кода. Рассмотрим вариант вставки блока для НДС 22%:


// Ищем блок, где заполняются правила для "Перечисление_СтавкиНДС"
// Нам нужно добавить соответствие для НДС 22%
// ЗначенияДляОтправки - это Соответствие, где Ключ - ссылка на перечисление в базе, Значение - строка в XDTO

// Пример кода для вставки в расширение (контекст процедуры ЗаполнитьПравилаКонвертацииПредопределенныхДанных)

// Получаем правило, если оно уже создано, или создаем новое (зависит от контекста внедрения)
// Допустим, мы модифицируем существующее правило:

ЗначенияДляОтправки = ПравилоКонвертации.КонвертацииЗначенийПриОтправке;
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22, "НДС22"); // Строка должна совпадать с фасетом в XDTO
ЗначенияДляОтправки.Вставить(Перечисления.СтавкиНДС.НДС22_122, "НДС22_122");

ЗначенияДляПолучения = ПравилоКонвертации.КонвертацииЗначенийПриПолучении;
ЗначенияДляПолучения.Вставить("НДС22", Перечисления.СтавкиНДС.НДС22);
ЗначенияДляПолучения.Вставить("НДС22_122", Перечисления.СтавкиНДС.НДС22_122);

Этап 2: Модификация пакета XDTO

Просто добавить код недостаточно. Если вы попытаетесь выгрузить данные с кодом выше, вы получите ошибку валидации XML: Значение: 'НДС22' не соответствует простому типу. Это происходит потому, что в схеме XDTO (например, EnterpriseData_1_8) перечисление RatesVAT (СтавкиНДС) имеет жестко ограниченный список значений (фасет), и "НДС22" там нет. Для решения этой проблемы можно применить готовый патч новой ставки НДС 22% для УТ 11.5, который уже содержит необходимые изменения в XDTO-пакетах.

Рассмотрим, как это исправить вручную:

  1. Откройте конфигуратор УТ.
  2. Найдите в дереве метаданных XDTO-пакеты.
  3. Найдите пакет, который используется при обмене (например, EnterpriseData_1_8).
  4. Мы не можем просто редактировать пакет, находящийся на поддержке. Есть два пути:
    • Включить возможность изменения: В настройках поддержки (Конфигурация - Поддержка - Настройка поддержки) установить для этого XDTO-пакета правило «Редактируется с сохранением поддержки».
    • Использовать расширение: Добавить пакет в расширение. Важно: редактирование XDTO в расширениях имеет нюансы. Пакет может быть доступен только для чтения, если расширение подключено в безопасном режиме или если платформа не позволяет переопределять стандартные пакеты.
  5. Откройте пакет XDTO на редактирование.
  6. Перейдите к типу значений (SimpleType) или перечислению, отвечающему за ставки НДС (обычно KeyProperties -> RatesVAT или аналогичное название типа).
  7. Добавьте в список значений (Enumeration) новые строки: НДС22 и НДС22_122 (названия должны в точности совпадать с тем, что вы прописали в коде на Этапе 1).
  8. Сохраните изменения.

Аналогичные действия нужно проделать и в базе-приемнике (БП 3.0), чтобы она могла принять и валидировать этот файл, если используется двусторонний обмен или контроль схемы при загрузке.

Резюме и частые ошибки

Давайте подытожим основные моменты, чтобы избежать ошибок:

Наиболее надежный путь — это обновление обеих конфигураций до релизов, поддерживающих EnterpriseData 1.20, и принудительное включение этой версии в настройках синхронизации.

← На главную