С наступлением налоговых изменений 2025 года многие пользователи столкнулись с необходимостью внедрения новых ставок НДС (5% и 7%) в свои информационные системы. Если ваша конфигурация 1С:Управление торговлей 11.4 (УТ 11.4) значительно доработана и не подлежит стандартному обновлению до версии 11.5, где эта поддержка уже реализована, вам предстоит решить задачу интеграции новых ставок вручную, либо воспользовавшись готовым расширением для добавления ставок НДС 5% и 7% в старые конфигурации. Разберем подробно, как реализовать этот функционал и, что более важно, как заставить эти данные корректно передаваться в 1С:Бухгалтерию предприятия 3.0 (БП 3.0) через механизм EnterpriseData.
Проблема заключается в том, что формат обмена EnterpriseData (ED) строго типизирован. Мало просто добавить значение в перечисление внутри конфигурации УТ — необходимо, чтобы и пакет XDTO, описывающий структуру XML-файла, «узнал» о существовании новой ставки. Рассмотрим ситуацию: программист уже внес изменения в метаданные УТ, расчетный блок работает, но при синхронизации данные о НДС 5% пропадают или замещаются. Это происходит из-за того, что при выгрузке менеджер обмена не находит соответствия между внутренним объектом системы и схемой XDTO.
Для начала проанализируем текущую версию формата обмена. В большинстве внедрений УТ 11.4 используется версия EnterpriseData 1.8. Важно понимать, что в оригинальной схеме этой версии ставки 5% не существует. Нам потребуется либо «обмануть» систему, либо расширить схему данных.
Прежде чем переходить к обмену, убедимся, что внутри УТ 11.4 всё настроено верно. Нам необходимо выполнить следующие действия:
СтавкиНДС (например, НДС5).НалоговыйУчетВызовСервера или специализированные модули в УТ.СтавкаНДС в табличных частях документов (Заказ клиента, Реализация товаров и услуг). Для ускорения процесса можно использовать расширение, которое позволяет изменить ставку НДС в обработке «Групповое изменение реквизитов».Если требуется массовая актуализация данных в регистре сведений «Ставки НДС номенклатуры», поможет обработка изменения ставки НДС с указанной даты. В случаях, когда параллельно с введением 5% нужно обновить основную ставку, пригодится групповая замена ставок НДС с 20% на 22% для старых УТ 11.4. Если расчеты в документах уже проходят корректно, переходим к самой сложной части — настройке синхронизации.
Синхронизация через EnterpriseData опирается на пакеты XDTO. Если вы используете версию 1.8, вам нужно добавить ставку 5% в описание типа СтавкиНДС внутри пакета. Рассмотрим, как это сделать правильно, используя механизм расширений, чтобы не снимать конфигурацию с поддержки полностью (или сохранить возможность обновлений).
Проанализируем структуру пакета. Найдем тип СтавкиНДС (это перечисление в терминах XDTO). Нам нужно добавить новое строковое значение. Важно: имя значения должно в точности совпадать с тем, что ожидает принимающая сторона (БП 3.0). Обычно это строковый литерал НДС5 или VAT5. Посмотрим на пример того, как это должно выглядеть в схеме:
// В расширении XDTO-пакета находим Перечисление "СтавкиНДС"
// Добавляем новое значение:
// Имя: НДС5
Рекомендуем не менять типовой пакет EnterpriseData_1_8_6 напрямую, а создать его копию или использовать расширение. Однако помните, что при использовании внешнего менеджера обмена он может жестко обращаться к конкретному пространству имен (Namespace).
Внешний менеджер обмена — это обработка, содержащая логику трансформации данных из объектов 1С в XML-структуру. Поскольку стандартный менеджер «не знает» про вашу новую ставку, её нужно прописать в коде маппинга (сопоставления).
Разберем, как найти нужный участок кода. Нам интересны функции, которые конвертируют перечисления. Обычно они называются Пр_ПриОтправкеДанных или имеют специализированные префиксы для сопоставления типов. Проанализируем процедуру, отвечающую за заполнение ставок НДС. Нам нужно добавить условие:
Если ЗначениеПеречисления = Перечисления.СтавкиНДС.НДС5 Тогда
Результат = "НДС5"; // Значение, которое пойдет в XML
ИначеЕсли ...
КонецЕсли;
Если вы используете типовой механизм сопоставления через таблицы соответствия, найдите в коде менеджера инициализацию этих таблиц и добавьте туда новую строку:
// Пример добавления в таблицу соответствий
НоваяСтрока = ТаблицаСоответствий.Добавить();
НоваяСтрока.ВнутреннееЗначение = Перечисления.СтавкиНДС.НДС5;
НоваяСтрока.ЗначениеФормата = "НДС5";
Пользователи часто жалуются, что отладчик не «заходит» во внешний менеджер обмена. Это происходит потому, что менеджер загружается динамически в безопасном режиме или через временные файлы. Чтобы выяснить причину, по которой 5% не попадает в файл, применим метод логирования.
Добавим в код менеджера функцию записи в текстовый файл. Это позволит нам увидеть, заходит ли алгоритм в ветку обработки нашей новой ставки. Рассмотрим пример реализации простого лога:
ТекстЛога = Новый ТекстЗаписи("C:\temp\log_exchange.txt", КодировкаТекста.UTF8, Истина);
ТекстЛога.ЗаписатьСтроку("Обработка ставки НДС: " + Строка(Объект.СтавкаНДС));
ТекстЛога.Закрыть();
Также настоятельно рекомендуем выполнить выгрузку в файл (без отправки в БП) и открыть полученный XML-файл в текстовом редакторе. Поищите тег TaxRate или аналогичный. Если там пусто или стоит «Без НДС», значит, проблема в УТ (правила выгрузки). Если в файле стоит НДС5, но БП его не видит — проблема на стороне приемника.
Важно помнить, что БП 3.0 последних версий уже содержит поддержку ставок 5% и 7%. Однако в БП 3.0 НДС теперь часто хранится не в перечислении, а в справочнике СтавкиНДС. При загрузке через EnterpriseData система пытается сопоставить строковое значение из XML с элементом этого справочника.
Проанализируем ситуацию: если БП обновлена, она ожидает, что в XML придет значение, которое она сможет интерпретировать. Если вы передаете НДС5, убедитесь, что в БП 3.0 в справочнике СтавкиНДС создан соответствующий элемент, и его наименование или другие ключевые реквизиты совпадают с тем, что вы отправляете. В новых версиях формата EnterpriseData (начиная с 1.15) эта поддержка нативная, но при использовании версии 1.8 в УТ вам придется вручную обеспечить этот «мостик». Также, если применение ставки 5% связано с переходом с упрощенки, вам может потребоваться учет входного НДС по остаткам товаров для организаций и предпринимателей на УСН.
Если правка XDTO-пакета кажется слишком рискованной, можно рассмотреть вариант «подмены». В менеджере обмена в УТ 11.4 вы можете отправлять ставку 5% под видом какой-то другой, редко используемой (например, НДС0), но добавлять в дополнительные свойства объекта (AdditionalProperties) признак того, что это на самом деле 5%. Затем в БП 3.0 с помощью расширения перехватывать объект при загрузке и менять ставку на правильную.
Разберем пример кода для добавления дополнительного свойства в УТ:
// В правилах выгрузки данных
Если Объект.СтавкаНДС = Перечисления.СтавкиНДС.НДС5 Тогда
ДанныеXDTO.Вставить("ДополнительныеСвойства", "РеальнаяСтавка5");
КонецЕсли;
Этот метод считается менее «чистым», но он позволяет избежать сложной модификации XDTO-пакетов, если у вас нет достаточного опыта работы с ними.
Подведем итоги. Для успешного добавления ставки НДС 5% в обмен между УТ 11.4 и БП 3.0 необходимо:
EnterpriseData.Перечисления.СтавкиНДС.НДС5 и строкой формата.Проанализировав все шаги, мы видим, что основная сложность кроется не в самом 1С-коде, а в соблюдении протокола обмена данными. Будьте внимательны к именам значений в XML — они чувствительны к регистру и пробелам. Тщательное логирование процесса выгрузки поможет вам быстро найти место, где данные «теряются».