Изменение ставки налога на добавленную стоимость (НДС) с 18% до 20% в свое время потребовало от пользователей систем 1С оперативных действий. Для тех, кто использует актуальные версии конфигураций, переход прошел относительно безболезненно через стандартное обновление. Однако в реальной практике автоматизации бизнеса часто встречаются ситуации, когда в компании развернута старая, сильно кастомизированная и переписанная конфигурация — например, «1С:Управление торговлей 11.2» (УТ 11.2). Полное обновление такой базы до версии 11.4 может занять десятки часов кропотливой работы программиста, потребовать исправления сотен конфликтов объединения и вылиться в серьезные финансовые затраты.
В этой статье мы подробно рассмотрим, как решить задачу перехода на НДС 20% в УТ 11.2. Мы проанализируем ситуацию с технической точки зрения, разберем по шагам ручную доработку конфигурации, взвесим все «за» и «против» полного обновления, а также подробно остановимся на скрытых «подводных камнях», связанных с кассовыми аппаратами (ККТ) и обменом данными с «1С:Бухгалтерией».
---
Многие начинающие разработчики и пользователи удивляются, почему нельзя просто зайти в режим «1С:Предприятие» и отредактировать ставку налога. Дело в том, что в архитектуре старых версий 1С (включая УТ 11.2) ставки НДС реализованы не в виде справочника, а через системное перечисление. Значения перечислений жестко прописаны в метаданных конфигурации, и программный код системы ориентируется на конкретные имена этих значений (например, НДС18 или НДС18_120).
Выясним причину такого решения: это гарантирует высокую скорость математических расчетов в документах и исключает случайное изменение критически важных ставок пользователями. Но оборотной стороной медали является то, что при изменении законодательства разработчикам приходится вмешиваться в код конфигурации.
---
Если ваша база УТ 11.2 сильно доработана, а бюджет или время на полноценное обновление отсутствуют, можно внедрить поддержку новой ставки вручную. Рассмотрим подробнее этот процесс, разбитый на последовательные шаги.
Шаг 1. Модификация перечисления в Конфигураторе
Для начала нам необходимо запустить базу в режиме «Конфигуратор», открыть дерево метаданных и найти перечисление СтавкиНДС. Выполняем следующие действия:
НДС20 (синоним: 20%).НДС20_120 (синоним: 20%/120%) для оформления расчетных операций и авансовых платежей.Шаг 2. Глобальный поиск и адаптация программного кода
Простого добавления метаданных недостаточно — система еще не умеет производить математические расчеты с новыми значениями. Нам нужно научить конфигурацию распознавать созданную ставку. Для этого воспользуемся механизмом глобального поиска:
НДС18.НДС20.Посмотрим на пример доработки одной из ключевых функций в общем модуле ЦенообразованиеКлиентСервер. Нам необходимо скорректировать функцию получения числового значения ставки:
Функция ПолучитьСтавкуНДСЧислом(СтавкаНДС) Экспорт
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
Возврат 20;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18_120 Тогда
Возврат 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
Возврат 20;
// ... логика для остальных ставок
КонецЕсли;
КонецФункции
Аналогичным образом необходимо обработать функции расчета сумм налога в документах. Например, везде, где встречается деление на 118 или умножение на 18 для получения суммы налога из расчетной ставки, мы должны прописать аналогичное условие для коэффициентов 120 и 20:
// Пример расчета для ставки 20/120
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
СуммаНДС = Округлить(СуммаДокумента * 20 / 120, 2);
КонецЕсли;
Шаг 3. Установка новой ставки по умолчанию для номенклатуры
После успешного сохранения и компиляции измененного кода в Конфигураторе, нам необходимо зайти в режим «1С:Предприятие» и обновить реквизиты в карточках товаров. Чтобы не заходить в каждый элемент вручную, выполним групповую обработку:
Групповое изменение реквизитов (или аналогичный инструмент «Групповая установка свойств номенклатуре»).СтавкаНДС выбираем новое созданное значение 20%.---
Хотя ручная модификация кода в Конфигураторе действительно может занять у опытного разработчика около одного-двух часов, этот метод таит в себе серьезные опасности, которые могут нарушить стабильную работу смежных систем организации. Разберем эти риски подробнее.
Согласно требованиям Федерального закона № 54-ФЗ, при пробитии чека на онлайн-кассе в фискальный накопитель и ОФД должна передаваться корректная ставка налога. При подключении торгового оборудования ККТ программа 1С передает данные о товарных позициях в виде специального XML-пакета.
В модулях интеграции БСП (Библиотеки стандартных подсистем), отвечающих за работу с ККТ (например, в общем модуле МенеджерОборудованияКлиент), жестко запрограммировано сопоставление перечисления ставок НДС и идентификаторов налоговых групп, которые поддерживает касса. Если вы передадите в ККТ созданное «вручную» значение НДС20, модуль интеграции его попросту проигнорирует или вернет ошибку вида: «Неверная налоговая ставка». В худшем случае касса пробьет чек по умолчанию без налога или со старой ставкой 18%, что является прямым нарушением законодательства и грозит штрафами от налоговой службы. Чтобы избежать этой проблемы, программисту придется глубоко переписывать код сериализации XML для торгового оборудования.
Как правило, оперативный учет ведется в УТ, а регламентированный и бухгалтерский — в БП. Данные мигрируют между базами при помощи механизмов синхронизации (правил обмена на базе «Конвертации данных»).
В обновленной конфигурации «1С:Бухгалтерия» ставка 20% является предопределенным системным элементом. В вашей же нетиповой УТ 11.2 добавленное значение перечисления будет иметь совершенно другой внутренний идентификатор (UUID). При переносе документов правила обмена не смогут сопоставить ваше кастомное значение с типовым значением БП. В результате в перенесенных документах в бухгалтерии ставка налога либо очистится («Без НДС»), либо вернется к 18%. Для исправления этой ситуации придется редактировать правила конвертации данных (xml-файлы правил) в специализированной программе «Конвертация данных 2.0/3.0», прописывая ручное сопоставление узлов.
Регламентированные печатные формы (Универсальный передаточный документ (УПД), Счет-фактура) в старой УТ 11.2 не соответствуют новым постановлениям Правительства РФ. Даже если математически сумма налога будет рассчитана верно, сама печатная форма останется устаревшей. Более того, при использовании электронного документооборота (1С-ЭДО) старые схемы выгрузки документов в формате XML будут отклоняться сервером оператора ЭДО или налоговым органом.
---
Для того чтобы не «ломать» структуру основной конфигурации и не создавать сложностей при последующих обновлениях, оптимально использовать механизм расширений конфигурации. Этот способ позволяет внедрить изменения, оставив основную базу на полной поддержке.
Разберем по шагам, как реализовать изменения с помощью расширения:
СтавкиНДС.ЦенообразованиеКлиентСервер.&Вместо или &После, переопределяем расчетные функции. Посмотрим на пример реализации перехвата функции расчета в модуле расширения:
&Вместо("ПолучитьСтавкуНДСЧислом")
Функция Расш1_ПолучитьСтавкуНДСЧислом(СтавкаНДС)
// Сначала вызываем стандартную обработку для базовых ставок
Результат = ПродолжитьВызов(СтавкаНДС);
// Если результат не определен или это наша новая ставка
Если СтавкаНДС = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС20") Тогда
Возврат 20;
КонецЕсли;
Возврат Результат;
КонецФункции
Применение расширений минимизирует риски потери данных при будущих обновлениях: если компания все же решит перейти на УТ 11.4, расширение можно будет безболезненно отключить.
---
Несмотря на то, что «быстрые» патчи кода привлекательны своей дешевизной, единственным технически верным решением в долгосрочной перспективе является последовательное обновление конфигурации до актуальных релизов (в которых ставка НДС 20% реализована разработчиками фирмы «1С» штатно и протестирована во всех режимах).
Проанализируем ситуацию: почему процесс перехода с УТ 11.2 на 11.4 может затянуться?
Для минимизации трудозатрат разработчики часто используют специализированное ПО, например, «Обновлятор-1С». Эта утилита позволяет автоматизировать рутинный процесс накатывания десятков промежуточных релизов: она самостоятельно скачивает обновления, делает резервные копии, последовательно запускает конфигуратор в пакетном режиме и выполняет реструктуризацию таблиц базы данных.
---
Для того чтобы принять окончательное решение о способе реализации ставки НДС 20%, сопоставим рассмотренные методы по ключевым бизнес-параметрам:
| Критерий сравнения | Ручная допилка (Метод 1) | Использование расширения (Метод 2) | Полное обновление до УТ 11.4 (Метод 3) |
|---|---|---|---|
| Время реализации | Очень быстро (1–3 часа) | Быстро (3–6 часов) | Долго (от 8 часов до нескольких дней) |
| Стоимость работ | Минимальная | Средняя | Высокая |
| Стабильность ККТ и чеков | Низкая (требует ручных тестов) | Средняя (зависит от версии драйверов) | Абсолютная (из коробки) |
| Синхронизация с Бухгалтерией | Требует ручной правки правил обмена | Требует ручной правки правил обмена | Работает в штатном режиме |
| Сложность будущих обновлений | Критически высокая (база «зависает» на этой версии) | Низкая (расширение легко отключить) | Низкая (база возвращается в типовое русло) |
---
Подводя итог нашему детальному анализу, дадим практическую рекомендацию разработчикам и ИТ-директорам:
Если автоматизированная на базе УТ 11.2 компания является небольшой, использует исключительно ручной ввод первичных документов без обмена с БП, не применяет ККТ и не отправляет документы по ЭДО — ручная корректировка конфигурации (или внедрение расширения) станет отличным временным и экономичным решением.
Во всех остальных случаях (при наличии интеграций, синхронизации данных, онлайн-касс и планов развития бизнеса) попытка сэкономить на обновлении обернется регулярными сбоями и постоянными затратами на доработку «костылей». Единственным правильным решением здесь будет проведение планового обновления конфигурации до актуальной версии 11.4.