Как изменить ставку НДС по умолчанию на 20% в Альфа-Авто 5 и не испортить исторические данные?

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

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

В этой статье мы подробно разберем, как устроена логика работы со ставками НДС в «Альфа-Авто», почему ручное изменение предопределенных элементов в конфигураторе является грубой ошибкой, и как правильно выполнить переход на новую ставку по умолчанию (например, 20%) штатными и альтернативными методами.

Архитектура хранения и подстановки НДС в «Альфа-Авто»

Прежде чем вносить изменения, давайте разберем, как система определяет, какую ставку НДС использовать при создании новой номенклатуры или оформлении документов. В конфигурации «Альфа-Авто» редакции 5 существует справочник СтавкиНДС. В этом справочнике разработчиками «1С-Рарус» заложен предопределенный элемент с программным именем ОсновнаяСтавкаНДС.

При создании нового элемента номенклатуры, карточки услуги или нового документа (например, заказ-наряда, поступления или реализации товаров) система программно обращается к этому предопределенному элементу:


// Пример логики подстановки ставки по умолчанию в Альфа-Авто
НоваяСтрока.СтавкаНДС = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;

Таким образом, ставка по умолчанию жестко привязана к конкретному предопределенному элементу в базе данных. Именно это вызывает сложности при необходимости изменить значение по умолчанию с одной ставки на другую.

В чем опасность «простого» решения (почему нельзя просто изменить предопределенный элемент)

Рассмотрим ситуацию, с которой часто сталкиваются начинающие разработчики. В поисках быстрого решения они открывают Конфигуратор, находят справочник СтавкиНДС, переходят в предопределенные элементы и меняют значение (или наименование) элемента ОсновнаяСтавкаНДС с «18%» на «20%». Затем в режиме «1С:Предприятие» они корректируют числовую ставку в этой записи на 20.

Выясним причину, почему так делать категорически нельзя:

  1. Разрушение историчности данных. Все документы за прошлые годы (закрытые периоды), в которых использовалась ставка 18%, физически ссылались по внутреннему идентификатору (UUID) именно на этот предопределенный элемент ОсновнаяСтавкаНДС.
  2. Автоматическое изменение старых документов. Как только вы измените значение этого элемента на 20%, во всех старых проведенных документах ставка НДС автоматически станет равной 20%. При попытке перепечатать старый заказ-наряд, акт или накладную вы получите неверные суммы налога.
  3. Проблемы с синхронизацией. При первой же повторной выгрузке исторических документов в «1С:Бухгалтерию» данные перезапишутся с искаженными суммами НДС, что приведет к расхождениям в сданной отчетности.

Поэтому главная задача при смене основной ставки — сохранить старое значение 18% для исторических документов и сделать так, чтобы все новые объекты создавались со значением 20%.

Способ 1. Официальный переход через обновление конфигурации (рекомендуемый)

Самый безопасный и правильный способ решить задачу — обновить конфигурацию «Альфа-Авто» до актуального релиза (для перехода на ставку 20% версия конфигурации должна быть не ниже 5.1.15.09). Начиная с этих релизов, разработчики из «1С-Рарус» внедрили специальный механизм автоматизированного перехода.

Разберем по шагам, как работает штатная обработка «Обновление ставки НДС», запускаемая при обновлении информационной базы:

  1. Программа автоматически создает в справочнике СтавкиНДС новый непредопределенный элемент с наименованием «18%» и числовым значением ставки 18.
  2. Запускается транзакционный поиск по всей базе данных. Во всех проведенных и закрытых документах прошлых периодов ссылки на старый предопределенный элемент ОсновнаяСтавкаНДС заменяются ссылкой на вновь созданный элемент «18%». При этом запись документов производится в режиме отключения проверок (ОбменДанными.Загрузка = Истина), чтобы не нарушить последовательность проведения и не заблокировать базу.
  3. После того как исторические данные «отвязаны» от предопределенного элемента, сам элемент ОсновнаяСтавкаНДС переименовывается в «20%», а его числовое значение меняется на 20.

В результате этой процедуры старые документы продолжают использовать ставку 18% через новый обычный элемент справочника, а все новые документы и номенклатура по умолчанию получают ставку 20%, так как она осталась привязана к предопределенному элементу ОсновнаяСтавкаНДС.

Способ 2. Ручной перенос данных для сильно измененных («дописанных») конфигураций

Если ваша база данных «Альфа-Авто» сильно кастомизирована, находится на поддержке с изменениями, и оперативно обновить ее до типового релиза 5.1.15.09+ невозможно, вам придется повторить алгоритм штатного обновления вручную.

Рассмотрим подробнее, как это реализовать с помощью написания внешней обработки:

  1. Создайте в справочнике СтавкиНДС в режиме «1С:Предприятие» новый элемент с наименованием «18%» (числовая ставка — 18).
  2. Напишите и запустите внешнюю обработку, которая выполнит замену во всех исторических документах. Код обработки должен выглядеть следующим образом:

// Пример кода для замены ставок в документах прошлых периодов
ВыборкаДокументов = Документы.ЗаказНаряд.Выбрать(ДатаНачалаПериода, ДатаКонцаПериода);
СтараяПредопределенная = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;
НоваяНепредопределенная18 = Справочники.СтавкиНДС.НайтиПоНаименованию("18%");

Пока ВыборкаДокументов.Следующий() Цикл
    ОбъектДок = ВыборкаДокументов.ПолучитьОбъект();
    Модифицирован = Ложь;
    
    // Перебираем табличную часть с товарами/работами
    Для Каждого СтрокаТЧ Из ОбъектДок.Товары Цикл
        Если СтрокаТЧ.СтавкаНДС = СтараяПредопределенная Тогда
            СтрокаТЧ.СтавкаНДС = НоваяНепредопределенная18;
            Модифицирован = Истина;
        EndIf;
    КонецЦикла;
    
    Если Модифицирован Тогда
        ОбъектДок.ОбменДанными.Загрузка = Истина; // Отключаем проведение и проверки
        ОбъектДок.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
КонецЦикла;

Важно: Аналогичную замену необходимо произвести во всех типах документов, где присутствует реквизит ставки НДС (ПоступлениеТоваров, РеализацияТоваров, ЧекККМ и др.), а также в карточках справочника Номенклатура.

Только после того, как во всей базе данных за прошлые периоды не останется ни одной ссылки на Справочники.СтавкиНДС.ОсновнаяСтавкаНДС, вы можете зайти в Конфигуратор и безопасно изменить параметры предопределенного элемента ОсновнаяСтавкаНДС на 20%.

Способ 3. Изменение обращений в программном коде (без переноса данных)

Существует еще один альтернативный вариант, который часто применяют программисты, чтобы избежать массовой перезаписи исторических документов. Он заключается в создании нового предопределенного элемента для новой ставки и перенаправлении обращений в коде конфигурации.

Проанализируем этот алгоритм:

  1. В Конфигураторе откройте свойства справочника СтавкиНДС, перейдите на вкладку «Прочее» и нажмите кнопку «Предопределенные».
  2. Оставьте старый элемент ОсновнаяСтавкаНДС нетронутым (он по-прежнему отвечает за 18% и используется в старых документах).
  3. Добавьте новый предопределенный элемент с именем СтавкаНДС20.
  4. В режиме «1С:Предприятие» задайте для этого нового элемента наименование «20%» и ставку 20.
  5. Произведите глобальный поиск по конфигурации по ключевому слову ОсновнаяСтавкаНДС. Во всех местах, где этот элемент используется для подстановки по умолчанию в новые объекты, замените его на ваш новый предопределенный элемент:

// Было:
// СтавкаПоУмолчанию = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;

// Стало:
СтавкаПоУмолчанию = Справочники.СтавкиНДС.СтавкаНДС20;

Этот способ хорош тем, что вам не нужно перезаписывать миллионы строк в исторических документах. Однако он требует аккуратности при поиске и замене кода в конфигурации, особенно в общих модулях и модулях менеджеров документов.

Настройка ККТ и соответствия ставок

Помните, что простого изменения ставки НДС внутри базы данных «Альфа-Авто» недостаточно для корректного ведения торговой деятельности. Обязательно проверьте настройки интеграции с торговым оборудованием (фискальными регистраторами):

Используя приведенные инструкции, вы сможете корректно перевести вашу базу «Альфа-Авто» 5 на работу с новой ставкой НДС, сохранив при этом полную целостность ведения учета за предыдущие периоды.

← На главную