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

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

Переход на ставку НДС 20% стал серьезным вызовом для пользователей и разработчиков систем на платформе 1С 7.7. В отличие от современных версий, где многие процессы автоматизированы, в «семерке» значительная часть логики расчета налогов часто была прописана вручную в конфигурации или жестко завязана на конкретные значения в коде. В данной статье мы подробно разберем, как адаптировать программный код 1С 7.7 под новые требования и как подготовить онлайн-кассы к работе с новой ставкой.

Анализ текущего состояния конфигурации 1С 7.7

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

Проверим Глобальный модуль. Именно там чаще всего сосредоточены функции расчета налогов. Нам нужно найти вхождения числа «18» и убедиться, что они не используются для расчета НДС. Если вы обнаружите код, подобный приведенному ниже, его необходимо заменить:


// Старый некорректный код
СуммаНДС = Сумма * 18 / 118;
// Или так
СуммаНДС = Сумма * 0.18;

Вместо этого мы должны использовать обращение к реквизиту документа СтавкаНДС. Рассмотрим правильный подход к реализации универсального расчета:


// Пример универсального расчета в модуле документа
СтавкаЧислом = СтавкаНДС.Ставка.Получить(ДатаДок); 
// Предполагаем, что СтавкаНДС - это справочник, 
// а Ставка - периодический реквизит этого справочника
СуммаНДС = Округл(Сумма * СтавкаЧислом / (100 + СтавкаЧислом), 2);

Обновление справочника «Ставки НДС»

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

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

  1. Откроем справочник Ставки НДС.
  2. Найдем элемент, который использовался как «18%».
  3. Перейдем к истории значения реквизита Ставка.
  4. Установим новое значение 20 с датой 01.01.2019.
  5. Аналогично поступим с текстовым наименованием, если оно используется в печатных формах.

Корректировка печатных форм

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

Выясним причину, по которой печатные формы могут выводить старые данные. Если в коде формирования таблицы указано что-то вроде Таб.ПрисоединитьСекцию("Строка|НДС18"), то придется переименовывать секции макета или делать условие по дате документа. Оптимальным решением будет создание универсальной секции, где ставка выводится переменной:


// В модуле печатной формы
ПечСтавка = СтрокаДокумента.СтавкаНДС.Наименование;
Таб.ВывестиСекцию("Строка");

Подготовка кассового оборудования (АТОЛ, Штрих-М)

Ситуация с онлайн-кассами (ККТ) сложнее, так как она требует не только изменений в 1С, но и обновления внутреннего программного обеспечения (прошивки) самих аппаратов. Рассмотрим ситуацию на примере оборудования АТОЛ.

Для корректной работы с НДС 20% производители ввели понятие платных обновлений. В частности, для АТОЛ требуется приобрести так называемый Код защиты №10 (КЗ10). Без этого кода, даже если вы обновите прошивку кассы до актуальной версии, ставка 20% не будет доступна. Касса просто «не поймет» команду от 1С на печать чека с новой ставкой.

Разберем процесс обновления кассы:

  1. Обновление драйвера: Убедимся, что в 1С 7.7 используется актуальная версия драйвера ККТ (например, ДТО 10.х или последняя стабильная 8.х). Старые драйверы могут некорректно передавать теги, соответствующие новой ставке.
  2. Прошивка ККТ: Обратимся в авторизованный сервисный центр для загрузки в кассу прошивки, поддерживающей ФФД 1.05 и НДС 20%.
  3. Ввод кода защиты: После прошивки необходимо через утилиту налогового инспектора (или тест драйвера) ввести купленный КЗ10.
  4. Настройка таблиц в кассе: Проверим, чтобы в таблицах налогов ККТ индекс, соответствующий ставке 20%, совпадал с тем, который передает 1С.

Особенности переходного периода и ФФД 1.05

Выясним важный момент касательно форматов фискальных данных (ФФД). С 1 января 2019 года прекратила действие версия ФФД 1.0. Все кассы должны были быть переведены на ФФД 1.05. Это критично, так как старый формат не поддерживает корректную передачу новых тегов НДС.

Рассмотрим проблему возвратов. Если товар был продан в 2018 году по ставке 18%, а возвращается в 2019 году, то возврат должен быть оформлен по той ставке, по которой совершалась продажа (18%). Однако многие новые прошивки касс «автоматически» превращают 18% в 20% в полночь 1 января. В таких случаях программистам 1С 7.7 приходится реализовывать сложные обходные пути для корректного формирования чека возврата, чтобы налоговая не предъявила претензий по расхождению сумм.

Рекомендации по доработке кода для работы с ККТ

При передаче данных в кассу из 1С 7.7 используется объект драйвера. Проанализируем типичный фрагмент кода обработки обслуживания ККТ и внесем изменения для поддержки индекса новой ставки:


// В обработке обслуживания кассы
Если Товар.СтавкаНДС.Ставка.Получить(ДатаДок) = 20 Тогда
    // Предположим, что индекс 1 в кассе теперь отвечает за 20%
    Объект.TaxType = 1; 
ИначеЕсли Товар.СтавкаНДС.Ставка.Получить(ДатаДок) = 18 Тогда
    // Для возвратов старых периодов может понадобиться другой индекс
    Объект.TaxType = 2; 
КонецЕсли;

Важно: обязательно согласуйте индексы налогов в настройках 1С и в таблицах самой кассы. Обычно индекс «1» закрепляется за основной ставкой (которая была 18, а стала 20).

Заключение

Переход на НДС 20% в 1С 7.7 требует комплексного подхода: от аудита всех участков кода, где встречается расчет налога, до платного обновления прошивок ККТ. Помните, что ключевым моментом является отход от жесткого кодирования ставок в текстах модулей и макетах. Используйте периодические реквизиты справочников и универсальные функции расчета, чтобы будущие изменения законодательства не требовали повторной глобальной переделки системы.

← На главную