Как перенести ставку НДС при обмене между УТ 10.3 и БП 3.0 через Конвертацию данных 2.0

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

При настройке обмена данными между устаревшими конфигурациями (например, Управление торговлей 10.3) и современными редакциями Бухгалтерии предприятия 3.0 программисты часто сталкиваются с проблемой: номенклатура переносится корректно, но поле «Ставка НДС» в приемнике остается пустым. Даже если в правилах конвертации свойств (ПКС) указано соответствие, результат может не оправдать ожиданий. Разберем детально, почему это происходит и как правильно настроить правила в Конвертации данных 2.0. Если в дальнейшем этот обмен планируется выполнять регулярно по расписанию, процесс можно автоматизировать, используя программу для регулярного обмена данными между базами 1С.

Анализируем причину проблемы: изменение архитектуры БП 3.0

Первым делом проанализируем структуру метаданных в целевой конфигурации. В современных релизах 1С:Бухгалтерия предприятия 3.0 механизм хранения ставок НДС претерпел значительные изменения. Если раньше в справочнике Номенклатура использовался реквизит СтавкаНДС с типом перечисления СтавкиНДС, то теперь этот реквизит зачастую помечен префиксом «Удалить». Система больше не использует его для отображения в формах и в логике проведения документов.

Вместо него введен новый механизм, который может использовать либо обновленное перечисление, либо ссылки на справочники, учитывающие законодательные изменения (например, переход ставки с 18% на 20%). Если в ПКО (Правила конвертации объектов) вы выбрали приемником УдалитьСтавкаНДС, данные фактически запишутся в базу, но пользователь их не увидит, так как интерфейс работает с совершенно другим реквизитом.

Решение №1: Прямое сопоставление перечислений с разными именами

Рассмотрим самый быстрый способ решения проблемы, который предложил автор темы. Суть заключается в том, чтобы связать источник СтавкиНДС из УТ 10.3 с правильным объектом-приемником в БП 3.0.

  1. Откроем Конвертацию данных 2.0 и найдем наше ПКО Номенклатура.
  2. Выясним, какой именно реквизит в текущем релизе БП 3.0 отвечает за ставку НДС. Обычно это реквизит СтавкаНДС, но тип у него теперь может соответствовать перечислению ВидыСтавокНДС.
  3. Создадим новое ПКО для перечислений. В качестве источника укажем ПеречисленияСсылка.СтавкиНДС, а в качестве приемника — ПеречисленияСсылка.ВидыСтавокНДС.
  4. Программа выдаст предупреждение о несовпадении типов, однако это допустимо. Нам необходимо вручную настроить соответствие значений в табличной части ПКО.
  5. Важный момент: проанализируем ситуацию с изменениями ставок. Например, значение НДС18 в источнике (УТ 10.3) должно соответствовать значению НДС20 в приемнике (БП 3.0), если перенос осуществляется в актуальном периоде. Также сопоставим БезНДС с БезНДС, НДС10 с НДС10 и так далее.

После этого в ПКС номенклатуры для свойства СтавкаНДС укажем созданное правило конвертации. При выгрузке система корректно преобразует значения одного перечисления в другое.

Решение №2: Программная установка значения (Прием значения без источника)

Иногда прямое сопоставление через ПКО перечислений может работать нестабильно из-за различий в GUID или при необходимости сложной логики. В таком случае разберем метод «Прием значения без источника». Этот подход считается более гибким и надежным среди опытных разработчиков.

Для реализации этого метода выполним следующие шаги:

  1. В ПКС для реквизита СтавкаНДС очистим поле Источник.
  2. В обработчике «Перед выгрузкой» напишем программный код, который будет анализировать ставку в источнике и передавать строковое имя значения для приемника.

Пример кода в обработчике ПКС:


// Проверяем ставку НДС у объекта источника
СтавкаИсточник = Источник.СтавкаНДС;

Если СтавкаИсточник = Перечисления.СтавкиНДС.НДС18 Или СтавкаИсточник = Перечисления.СтавкиНДС.НДС20 Тогда
    Значение = "НДС20"; // Имя значения в перечислении ВидыСтавокНДС приемника
ИначеЕсли СтавкаИсточник = Перечисления.СтавкиНДС.НДС10 Тогда
    Значение = "НДС10";
Иначе
    Значение = "БезНДС";
КонецЕсли;

При таком подходе система ищет в перечислении приемника значение по его внутреннему имени (идентификатору), что исключает ошибки сопоставления ссылок.

Особенности обновления структуры конфигураций

Если вы не видите в списке доступных реквизитов приемника новых полей или перечисления ВидыСтавокНДС, необходимо обновить описание конфигураций в базе Конвертации данных. Выясним причину: скорее всего, файл xml со структурой БП 3.0 был выгружен из старого релиза программы.

Пошагово выполним обновление:

  1. Зайдем в базу 1С:Бухгалтерия 3.0 в режиме «Предприятие».
  2. Воспользуемся обработкой ВыгрузкаОписанияСтруктурыКонфигурации.epf (она входит в комплект поставки КД 2.0).
  3. Сформируем актуальный файл описания.
  4. Загрузим его в базу Конвертации данных через «Загрузка структуры конфигурации».
  5. После этого перепроверим ПКС номенклатуры и выберем актуальный реквизит вместо помеченного на удаление.

Влияние на документы и счета учета

Рассмотрим еще один важный нюанс. Даже если ставка НДС успешно появилась в карточке номенклатуры, при заполнении документов она может подставляться некорректно. В БП 3.0 за автоматическое заполнение ставок и счетов в документах часто отвечает регистр сведений СчетаУчетаНоменклатуры.

Проанализируем ситуацию: если в этом регистре для конкретной позиции или группы номенклатуры не заданы правила, система может игнорировать ставку из карточки. Поэтому при переносе данных из УТ 10.3 рекомендуется также настроить выгрузку правил в этот регистр или убедиться, что в БП 3.0 создана общая запись для всей номенклатуры.

Важный совет: После изменения правил в КД 2.0 всегда проверяйте, что в обработку выгрузки (в УТ 10.3) загружен именно новый файл правил. Кэширование правил — частая причина того, что изменения «не подхватываются» системой с первого раза.

Резюме

Для успешного замещения и обновления номенклатуры со ставками НДС в БП 3.0 необходимо:

← На главную