Переход на ставку НДС 20% стал серьезным вызовом для пользователей и разработчиков систем на платформе 1С 7.7. В отличие от современных версий, где многие процессы автоматизированы, в «семерке» значительная часть логики расчета налогов часто была прописана вручную в конфигурации или жестко завязана на конкретные значения в коде. В данной статье мы подробно разберем, как адаптировать программный код 1С 7.7 под новые требования и как подготовить онлайн-кассы к работе с новой ставкой.
Первым делом проанализируем, как в вашей базе реализован расчет налога. Во многих старых или сильно доработанных конфигурациях программисты использовали константы или жестко прописанные числа в формулах. Нам необходимо уйти от этой практики и перевести расчет на использование значения ставки, указанной непосредственно в справочнике или в документе. Разберем по шагам, на что стоит обратить внимание.
Проверим Глобальный модуль. Именно там чаще всего сосредоточены функции расчета налогов. Нам нужно найти вхождения числа «18» и убедиться, что они не используются для расчета НДС. Если вы обнаружите код, подобный приведенному ниже, его необходимо заменить:
// Старый некорректный код
СуммаНДС = Сумма * 18 / 118;
// Или так
СуммаНДС = Сумма * 0.18;
Вместо этого мы должны использовать обращение к реквизиту документа СтавкаНДС. Рассмотрим правильный подход к реализации универсального расчета:
// Пример универсального расчета в модуле документа
СтавкаЧислом = СтавкаНДС.Ставка.Получить(ДатаДок);
// Предполагаем, что СтавкаНДС - это справочник,
// а Ставка - периодический реквизит этого справочника
СуммаНДС = Округл(Сумма * СтавкаЧислом / (100 + СтавкаЧислом), 2);
Посмотрим, как правильно настроить справочник ставок. В 1С 7.7 справочник СтавкиНДС обычно содержит периодический реквизит Ставка. Нам не нужно создавать новый элемент справочника с названием «20%», если логика системы завязана на конкретные элементы (например, по коду или идентификатору). Правильнее будет изменить значение существующей ставки «18%» на «20%» с новой датой вступления в силу — 01.01.2019.
Важный нюанс: если вы просто измените название элемента, это может отразиться на старых документах в печатных формах. Поэтому убедимся, что наименование элемента также корректно обрабатывается. Разберем алгоритм действий:
Ставка.20 с датой 01.01.2019.Проанализируем макеты печатных форм (Счет-фактура, Торг-12, Счет). В старых конфигурациях 1С 7.7 в макетах табличной части в колонке «Ставка НДС» часто был просто написан текст «18%». Рассмотрим, как это исправить. Нам нужно заменить текст в ячейке на параметр (например, ПечСтавка) и заполнять его в модуле формирования печатной формы.
Выясним причину, по которой печатные формы могут выводить старые данные. Если в коде формирования таблицы указано что-то вроде Таб.ПрисоединитьСекцию("Строка|НДС18"), то придется переименовывать секции макета или делать условие по дате документа. Оптимальным решением будет создание универсальной секции, где ставка выводится переменной:
// В модуле печатной формы
ПечСтавка = СтрокаДокумента.СтавкаНДС.Наименование;
Таб.ВывестиСекцию("Строка");
Ситуация с онлайн-кассами (ККТ) сложнее, так как она требует не только изменений в 1С, но и обновления внутреннего программного обеспечения (прошивки) самих аппаратов. Рассмотрим ситуацию на примере оборудования АТОЛ.
Для корректной работы с НДС 20% производители ввели понятие платных обновлений. В частности, для АТОЛ требуется приобрести так называемый Код защиты №10 (КЗ10). Без этого кода, даже если вы обновите прошивку кассы до актуальной версии, ставка 20% не будет доступна. Касса просто «не поймет» команду от 1С на печать чека с новой ставкой.
Разберем процесс обновления кассы:
Выясним важный момент касательно форматов фискальных данных (ФФД). С 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 требует комплексного подхода: от аудита всех участков кода, где встречается расчет налога, до платного обновления прошивок ККТ. Помните, что ключевым моментом является отход от жесткого кодирования ставок в текстах модулей и макетах. Используйте периодические реквизиты справочников и универсальные функции расчета, чтобы будущие изменения законодательства не требовали повторной глобальной переделки системы.