Почему не выгружается НДС 20% при обмене между УТ 11.4 и БП 3.0 и как это исправить?

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

При переходе на новую ставку НДС 20% многие пользователи столкнулись с проблемой: при синхронизации данных между 1С:Управление торговлей 11.4 и 1С:Бухгалтерия предприятия 3.0 документы поступления и реализации за 2019 год и более поздние периоды выгружаются некорректно. В информационной базе-приемнике (БП) колонка с процентом НДС оказывается пустой, что вызывает ошибки при проведении документов и формировании налоговой отчетности. Рассмотрим подробно причины возникновения этой ситуации и разберем по шагам способы ее решения.

Выясним причину возникновения ошибки

Проанализируем ситуацию: обмен между конфигурациями УТ 11 и БП 3.0 в современных версиях чаще всего строится на базе технологии EnterpriseData (синхронизация через универсальный формат). В начале 2019 года, когда ставка НДС изменилась с 18% на 20%, типовые правила обмена в некоторых релизах УТ 11.4 еще не содержали явного описания того, как обрабатывать новое значение перечисления СтавкиНДС.НДС20.

Когда система выполняет выгрузку, специальный программный модуль (Менеджер обмена) перебирает строки табличной части документа. Если он встречает ставку НДС 20%, для которой в коде не прописано соответствие строковому идентификатору формата (например, "НДС20"), поле просто остается незаполненным. В результате в файл обмена (XML) данные о ставке не попадают, и Бухгалтерия при загрузке выдает предупреждение: "Не заполнена колонка '% НДС' в строке списка 'Товары'".

Решение 1: Обновление конфигурации до актуального релиза

Прежде чем приступать к программным правкам, проверим версию нашей конфигурации. Разработчики 1С оперативно выпустили исправление этой ошибки. Официально проблема с выгрузкой ставки 20% была решена в релизе УТ 11.4.6.200.

Если ваша версия ниже указанной (например, 11.4.6.188), самым правильным и безопасным решением будет обновление конфигурации. После обновления необходимо будет перерегистрировать документы к обмену, чтобы они выгрузились повторно с уже исправленными правилами.

Решение 2: Программное исправление в модуле менеджера обмена

Если по каким-то причинам оперативное обновление конфигурации невозможно (например, база сильно кастомизирована), мы можем внести изменения в код самостоятельно. Нам потребуется внести правки в общий модуль, отвечающий за логику синхронизации. Проанализируем процедуру ОпределитьСтавкуНДС_Отправка в модуле МенеджерОбменаЧерезУниверсальныйФормат.

Рассмотрим пример кода, который исправляет некорректное сопоставление. Нам нужно добавить условия для обработки Перечисления.СтавкиНДС.НДС20 и Перечисления.СтавкиНДС.НДС20_120. Вставим следующий фрагмент кода:


Процедура ОпределитьСтавкуНДС_Отправка(ТабличнаяЧасть, НДСПоСтавкам2и4)
    ТабличнаяЧасть.Колонки.Добавить("СтавкаНДССтрокой");
    Для Каждого Строка Из ТабличнаяЧасть Цикл
        Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
            Строка.СтавкаНДССтрокой = "НДС0";
        ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
            Строка.СтавкаНДССтрокой = "БезНДС";
        Иначе
            Если НДСПоСтавкам2и4 Тогда
                // Логика для работы со старыми версиями формата
                Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18
                    Или Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
                    Строка.СтавкаНДССтрокой = "НДС4";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118
                    ИЛИ Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
                    Строка.СтавкаНДССтрокой = "НДС4_104";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
                    Строка.СтавкаНДССтрокой = "НДС2";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
                    Строка.СтавкаНДССтрокой = "НДС2_102";
                КонецЕсли;
            Иначе
                // Логика для современных версий формата EnterpriseData
                Если Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
                    Строка.СтавкаНДССтрокой = "НДС18";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Тогда
                    Строка.СтавкаНДССтрокой = "НДС18_118";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
                    Строка.СтавкаНДССтрокой = "НДС20";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
                    Строка.СтавкаНДССтрокой = "НДС20_120";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
                    Строка.СтавкаНДССтрокой = "НДС10";
                ИначеЕсли Строка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
                    Строка.СтавкаНДССтрокой = "НДС10_110";
                КонецЕсли;
            КонецЕсли; 
        КонецЕсли;
    КонецЦикла;
    ТабличнаяЧасть.Колонки.Удалить("СтавкаНДС");
    ТабличнаяЧасть.Колонки.СтавкаНДССтрокой.Имя = "СтавкаНДС";
КонецПроцедуры

В этом коде мы проверяем флаг НДСПоСтавкам2и4. Это технический параметр формата обмена. Если он активен, ставки кодируются упрощенно. Если же используется стандартный формат, мы напрямую присваиваем строковое значение "НДС20" или "НДС20_120". После внесения этих изменений система начнет корректно идентифицировать новую ставку при выгрузке.

Решение 3: Проверка версии формата EnterpriseData и сопоставления данных

Иногда причина кроется не в коде, а в настройках самой синхронизации. Рассмотрим, как это проверить без программирования:

  1. Откройте раздел Администрирование — Синхронизация данных.
  2. Перейдите в Настройки синхронизации данных и выберите нужный узел обмена с Бухгалтерией.
  3. Проверьте используемую Версию формата. Поддержка ставки 20% в явном виде появилась в версии формата 1.6. Если у вас установлена версия 1.5 или ниже, попробуйте переключить ее на более актуальную (если обе конфигурации это поддерживают).
  4. Зайдите в пункт Параметры синхронизации данных — Сопоставление данных.
  5. Найдите в списке перечисление Ставки НДС. Проверьте, что значению "20%" из УТ соответствует значение "20%" в БП. Если сопоставление пустое или неверное, установите его вручную.

Исправление последствий в справочнике «Номенклатура»

Проблема со ставкой НДС часто затрагивает не только документы, но и справочник Номенклатура. При первичной выгрузке новых товаров в БП ставка НДС в карточке товара может остаться пустой. Это критично, так как при создании новых документов непосредственно в Бухгалтерии ставка не будет подставляться автоматически.

Чтобы это исправить, выполните следующие действия:

Рекомендации по исправлению документов «задним числом»

Если вы уже выгрузили большое количество документов с пустым НДС, простое исправление правил не изменит уже загруженные данные в Бухгалтерии автоматически. Посмотрим, как восстановить учет:

  1. Примените исправление (обновите конфигурацию или поправьте код в менеджере обмена).
  2. В УТ 11 откройте Регистрацию изменений для обмена (иконка состава данных в настройках синхронизации).
  3. Найдите документы Приобретение товаров и услуг и Реализация товаров и услуг за период с начала года.
  4. Зарегистрируйте их к обмену повторно.
  5. Выполните синхронизацию.
  6. Важный момент: После загрузки исправленных документов в БП их необходимо перепровести. Это нужно для того, чтобы суммы НДС корректно "легли" в регистры накопления (например, НДС предъявленный), иначе записи не попадут в Книгу покупок и Книгу продаж, даже если в самой форме документа цифры отображаются правильно.

Соблюдение этих шагов позволит полностью устранить проблему с отображением НДС 20% и восстановить корректный документооборот между торговой и бухгалтерской базами.

← На главную