С появлением новой основной ставки НДС в размере 22%, которая начнет действовать с 1 января 2026 года, многие пользователи 1С сталкиваются с проблемой при фискализации чеков. Ошибка "Некорректная сумма налога" при пробитии чека, особенно в старых или сильно доработанных конфигурациях, таких как "1С:Управление торговлей 10.3", указывает на то, что система не готова к работе с новой ставкой. Эта проблема требует комплексного подхода, включающего обновление как программного обеспечения 1С, так и кассового оборудования.
Рассмотрим пошагово, какие действия необходимо предпринять, чтобы обеспечить корректную работу с НДС 22% и избежать данной ошибки.
Первым и самым важным шагом является обеспечение того, что ваша система 1С способна работать с новой налоговой ставкой. Компания "1С" выпускает обновления для своих типовых конфигураций заранее. Если вы используете типовую конфигурацию, такую как "1С:Бухгалтерия предприятия", "1С:Управление торговлей", "1С:ERP" или "1С:Розница", вам необходимо обновить ее до актуального релиза.
Кассовая техника является критически важным звеном в цепочке фискализации. Даже если 1С правильно рассчитывает налог, касса может не понимать новую ставку, если ее программное обеспечение устарело.
Для конфигураций, которые не имеют официальных обновлений для НДС 22% (как "УТ 10.3"), или для сильно измененных конфигураций, ручная доработка кода становится неизбежной. Это основной источник проблемы, как выяснилось в обсуждаемой теме.
В первую очередь, вам необходимо убедиться, что в вашей конфигурации существуют необходимые перечисления для новой ставки. Как правило, это Перечисления.СтавкиНДС.НДС22 и Перечисления.СтавкиНДС.НДС22_122 (для расчетной ставки). Если их нет, их нужно добавить в метаданные конфигурации.
Далее мы рассмотрим ключевые места в коде, где необходимо внести изменения:
Начните с глобального поиска по всей конфигурации. Ищите все вхождения строк, связанных с НДС 20%, например: "НДС20", "НДС20_120", "20 / 120", "SumTAX20", "SumTAX120". Ваша задача — по аналогии с существующей логикой для НДС 20% добавить такую же логику для НДС 22%.
Мы советуем сосредоточиться на общих модулях, которые отвечают за расчет НДС, формирование документов и взаимодействие с торговым оборудованием. Пользователи, столкнувшиеся с проблемой, подтвердили, что основные пропуски были именно в таких модулях.
МенеджерОборудованияКлиентСервер.ПолучитьСтавкуНДСДляФискализацииЧека:
Это один из самых критичных модулей, который был пропущен несколькими участниками обсуждения. Данная функция отвечает за преобразование внутренней ставки НДС 1С в формат, понятный фискальному регистратору. Если эта функция не содержит логики для 22%, касса получит некорректное значение, что приведет к ошибке.
Мы должны найти и изменить эту функцию, добавив обработку для Перечисления.СтавкиНДС.НДС22 и Перечисления.СтавкиНДС.НДС22_122. Примерный фрагмент кода может выглядеть следующим образом:
Функция ПолучитьСтавкуНДСДляФискализацииЧека(СтавкаНДС) Экспорт
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
Возврат "НДС0";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Возврат "НДС10";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат "НДС20";
// *** Важное добавление для НДС 22% ***
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
Возврат "НДС22"; // Это значение должно соответствовать ожиданиям драйвера ККТ
// *** Конец добавления ***
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДСБезНДС Тогда
Возврат "БезНДС";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
Возврат "НДС10_110";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
Возврат "НДС20_120";
// *** Важное добавление для расчетной ставки НДС 22/122 ***
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС22_122 Тогда
Возврат "НДС22_122"; // Идентификатор для расчетной ставки
// *** Конец добавления ***
КонецЕсли;
Возврат "БезНДС"; // Возвращаем значение по умолчанию, если ставка не найдена
КонецФункции
Обратите внимание, что возвращаемые строковые значения ("НДС22", "НДС22_122") должны соответствовать тем идентификаторам, которые ожидает ваш драйвер ККТ. В большинстве случаев они совпадают с названиями перечислений.
СформироватьТекстНефискальногоДокумента:
Еще одно место, где необходимо внести правки, как выяснилось в ходе обсуждения. Этот модуль часто используется для формирования печатных форм нефискальных документов или предварительных просмотров чеков. Если здесь не учтена новая ставка НДС, это также может привести к некорректному отображению или ошибкам, если данные из этого модуля используются в дальнейшем для фискализации.
Мы рекомендуем добавить логику для НДС 22% в этот модуль, особенно в тех блоках, где производится расчет или вывод информации о налогах.
Процедура СформироватьТекстНефискальногоДокумента(ДокументОбъект, Макет)
// ... существующий код формирования документа ...
Для Каждого СтрокаТабличнойЧасти Из ДокументОбъект.ТабличнаяЧасть Цикл
// ... другие поля строки ...
Если СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.НДС22 Тогда
// Пример расчета и добавления строки с НДС 22%
СуммаНДС = Окр(СтрокаТабличнойЧасти.Сумма * 22 / 122, 2);
Макет.ДобавитьСтроку("НДС 22% от " + СтрокаТабличнойЧасти.Сумма + ": " + Формат(СуммаНДС, "ЧЦ=15; ЧДЦ=2"));
ИначеЕсли СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
// Существующая логика для НДС 20%
СуммаНДС = Окр(СтрокаТабличнойЧасти.Сумма * 20 / 120, 2);
Макет.ДобавитьСтроку("НДС 20% от " + СтрокаТабличнойЧасти.Сумма + ": " + Формат(СуммаНДС, "ЧЦ=15; ЧДЦ=2"));
КонецЕсли;
// ...
КонецЦикла;
// ... оставшийся код модуля ...
КонецПроцедуры
Как было упомянуто, в некоторых случаях может потребоваться проверить и другие функции, такие как ПолучитьСтавкуНДС(СтавкаНДС), а также убедиться, что структуры данных, передаваемые в драйвер ККТ (например, параметры чека), корректно формируют поля для SumTAX22 и SumTAX122, если они требуются вашим драйвером.
Мы рекомендуем использовать отладчик 1С для пошагового прохода по коду в момент пробития чека. Это позволит точно определить, в каком месте происходит ошибка и какие значения передаются в драйвер ККТ.
Если ваша система использует XDTO-пакеты для обмена данными, особенно в контексте электронного документооборота (ЭДО), убедитесь, что эти пакеты также обновлены для поддержки новой ставки НДС. Некорректные схемы могут вызвать ошибки при передаче данных.
После всех обновлений и доработок кода, критически важно провести тщательное тестирование. Мы не можем недооценивать важность этого этапа, чтобы убедиться в корректности всех расчетов и фискализации.
Переход на новую ставку НДС 22% имеет свои нюансы, которые мы должны учитывать:
Решение проблемы "Некорректная сумма налога" требует внимательной и последовательной работы по обновлению и доработке всех компонентов системы, отвечающих за расчет и фискализацию НДС. Мы должны помнить, что комплексный подход и тщательное тестирование — залог успешного перехода на новые налоговые ставки.