Как правильно реализовать переход на ставку НДС 20% в 1С 7.7 «Торговля и склад»

Программист 1С v7.7 Налоговый учет Торговля и дистрибуция
← На главную

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

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

Стандартная логика ТиС 7.7 предполагает, что ставка НДС берется из карточки товара в момент подбора позиции в документ. Если мы просто воспользуемся обработкой и заменим 18% на 20% во всем справочнике Номенклатура, то при попытке перевыбрать товар в старом документе (например, от декабря 2018 года) программа подставит новую ставку, что приведет к искажению налоговых данных.

Сделать реквизит СтавкаНДС периодическим в 7.7 — это трудоемкая задача, требующая переписки множества отчетов и алгоритмов проведения. Поэтому оптимальным решением является внедрение программной логики, которая будет динамически определять нужную ставку в зависимости от даты документа. Проанализируем способы реализации этой логики.

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

Чтобы система сама понимала, какую ставку подставить, необходимо внести изменения в общие процедуры пересчета налогов. Наиболее подходящее место для этого — процедура глПересчетТаблЧасти или функции, вызываемые при выборе номенклатуры. Разберем программный код, который позволит автоматизировать этот процесс.

Проанализируем пример функции в Глобальном модуле, которая возвращает актуальную ставку в зависимости от даты:


Функция глПолучитьСтавкуНДС(ВыбДатаДок, Номенклатура) Экспорт
    // Если дата документа 01.01.2019 или позже
    Если ВыбДатаДок >= Дата("01.01.2019") Тогда
        Если Номенклатура.СтавкаНДС = Перечисление.СтавкиНДС.НДС18 Тогда
            // Если в справочнике еще стоит 18, возвращаем 20
            Возврат Перечисление.СтавкиНДС.НДС20;
        Иначе
            Возврат Номенклатура.СтавкаНДС;
        КонецЕсли;
    Иначе    
        // Для документов старого периода (до 2019 года)
        Если Номенклатура.СтавкаНДС = Перечисление.СтавкиНДС.НДС20 Тогда
            // Если в справочнике уже стоит 20, возвращаем 18
            Возврат Перечисление.СтавкиНДС.НДС18;
        Иначе
            Возврат Номенклатура.СтавкаНДС;
        КонецЕсли;
    КонецЕсли;
КонецФункции

Далее в процедуре глПересчетТаблЧасти, которая отвечает за обновление строк при изменении товара, заменим прямое обращение к реквизиту справочника на вызов нашей функции:


// Вместо прямого присвоения:
// Конт.СтавкаНДС = Номенклатура.СтавкаНДС;

// Используем логику с привязкой к дате:
Конт.СтавкаНДС = глПолучитьСтавкуНДС(Конт.ДатаДок, Номенклатура);

Такой подход позволяет не торопиться с массовым обновлением справочника Номенклатура и гарантирует, что в документах 2018 года всегда будет 18%, а в 2019-м — 20%.

Способ 2. Массовая замена ставки НДС в справочнике

Если вы решили все же обновить справочник (например, когда работа с документами прошлого года полностью завершена), лучше использовать специализированную обработку. Это позволит избежать ручного редактирования каждой карточки. Рассмотрим пример кода для такой обработки, который выполняет замену с проверкой текущего значения:


Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы(0); // Выбираем все элементы без учета иерархии

Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда
        Продолжить;
    КонецЕсли;
    
    // Проверяем, установлена ли сейчас ставка 18%
    Если Спр.СтавкаНДС = Перечисление.СтавкиНДС.НДС18 Тогда
        Спр.СтавкаНДС = Перечисление.СтавкиНДС.НДС20;
        Спр.Записать();
        Состояние("Обработана номенклатура: " + Спр.Наименование);
    КонецЕсли;
КонецЦикла;
Предупреждение("Замена ставок НДС успешно завершена!");

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

Работа с возвратами и корректировками

Особое внимание стоит уделить возвратам товаров. Если покупатель возвращает товар в 2019 году, который был куплен в 2018 году, ставка в документе возврата должна соответствовать ставке отгрузки (то есть 18%).

Разберем, как действовать в этом случае:

  1. Использование документа-основания: В ТиС 7.7 при вводе возврата на основании реализации программа автоматически копирует ставку НДС из исходного документа. Это самый правильный путь.
  2. Ручная корректировка: Если возврат оформляется без основания, пользователю необходимо вручную выбрать ставку 18% в табличной части документа. Для этого убедитесь, что в правах доступа пользователя не запрещено редактирование НДС в документах.
  3. Методический аспект: Начиная с 2019 года, согласно рекомендациям налоговых органов, возвраты часто оформляются через корректировочные счета-фактуры. В ТиС 7.7 для этого предусмотрен механизм «Корректировка долга» или специальные доработки печатных форм СФ.

Рекомендации по настройке пользователей

Помимо изменения справочника и кода, не забудьте обновить значения «по умолчанию» для пользователей. В ТиС 7.7 ставка НДС часто прописывается в настройках пользователя, чтобы она автоматически подставлялась в новые документы.

Выясним, где это находится:

  1. Меню Сервис — Настройка пользователя.
  2. Вкладка Значения по умолчанию.
  3. Найдите поле Основная ставка НДС и выберите там 20%.

Это действие избавит сотрудников от необходимости менять ставку вручную при создании каждого нового счета или реализации.

Почему не стоит делать реквизит периодическим?

Рассмотрим причины, по которым архитекторы 1С и опытные программисты не рекомендуют делать СтавкаНДС периодическим реквизитом:

Таким образом, использование глобальной функции с логикой по дате документа является самым безопасным и «малокровным» способом адаптации старой системы к новым налоговым реалиям.

← На главную