Почему в 1С:Управление торговлей 11.5 ставки НДС перенесли в справочник и как с этим работать

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Налоговый учет
← На главную

С выходом версии 1С:Управление торговлей 11.5 (а также соответствующих версий ERP 2.5 и Комплексной автоматизации 2.5) разработчики и пользователи столкнулись с фундаментальным изменением: объект СтавкиНДС, который многие годы был перечислением, превратился в полноценный справочник. В этой статье мы подробно разберем, чем вызвано такое решение, какие преимущества оно дает и как теперь правильно писать код для работы с налогами.

Причины перехода: зачем перечисление заменили справочником

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

  1. Гибкость законодательства: Законодательство в области налогообложения меняется динамично. Введение новых ставок (например, переход с 18% на 20%) или появление специфических ставок для УСН (5%, 7% с 2025 года) ранее требовало изменения структуры метаданных конфигурации. Теперь же новую ставку можно добавить просто как элемент справочника в режиме «1С:Предприятие» без обновления программы.
  2. Числовые расчеты: В перечислении ставка — это просто «имя». Чтобы получить число 20 из значения НДС20, программистам приходилось писать громоздкие конструкции или использовать дополнительные функции. В справочнике СтавкиНДС теперь есть явный числовой реквизит Ставка, который можно напрямую использовать в математических формулах.
  3. Поддержка международного учета: Конфигурации 1С активно используются за пределами РФ. В разных странах (Казахстан, Беларусь, ОАЭ) свои процентные ставки. Использование справочника позволяет локализовать систему под любые требования без переработки ядра конфигурации.
  4. Раздельный учет и аналитика: Справочник позволяет хранить дополнительные признаки, такие как коды для налоговой декларации, принадлежность к расчетным ставкам (например, 20/120) и специфические настройки для «Налогового мониторинга».

Различие между «НДС 0%» и «Без НДС»

Проанализируем ситуацию с точки зрения методологии учета. Часто пользователи путают эти понятия, но для системы (и для налоговой) это принципиально разные сущности, что теперь наглядно отражено в свойствах элементов справочника:

НДС 0% — это применение налоговой ставки 0. Организация остается плательщиком НДС, подает декларацию и, что самое важное, имеет право на налоговый вычет по входящему НДС. Это характерно для экспортных операций.

Без НДС — это операции, которые вообще не подлежат налогообложению (освобождены по ст. 149 НК РФ или применение УСН). В этом случае входящий НДС нельзя принять к вычету, он должен быть включен в стоимость товаров или списан на расходы.

Благодаря тому, что ставки НДС теперь являются справочником, в системе проще реализовать логику «восстановления» или «распределения» НДС, опираясь на реквизиты конкретного элемента справочника.

Программная работа со справочником «Ставки НДС»

Рассмотрим, как изменился подход к написанию кода. Раньше мы обращались к ставкам так: Перечисления.СтавкиНДС.НДС20. Теперь такой подход работать не будет (или будет вести к обращению к устаревшим метаданным). Выясним, как правильно находить нужные значения.

Для сохранения стабильности разработчики 1С создали в справочнике предопределенные элементы. Это позволяет обращаться к ним привычным способом через точку. Рассмотрим пример получения ссылки на ставку 20%:


// Правильное обращение в новых версиях УТ 11.5 / ERP 2.5
СтавкаСсылка = Справочники.СтавкиНДС.НДС20;

// Получение числового значения ставки для расчета суммы
ЧисловаяСтавка = СтавкаСсылка.Ставка; // Вернет 20
СуммаНДС = СуммаБезНДС * (ЧисловаяСтавка / 100);

Пример функции для сопоставления ставок при интеграции

Часто возникает задача загрузки данных из внешних систем или старых конфигураций, где НДС еще представлен в виде перечисления или текста. Проанализируем пример функции, которая помогает сопоставить текстовое название или значение из перечисления со справочником в УТ 11.5:


&НаСервере
Функция НайтиСтавкуНДСПоНаименованию(ЗначениеСтавки)
    
    // ЗначениеСтавки может быть строкой или значением старого перечисления
    Наименование = СокрЛП(Строка(ЗначениеСтавки));
    
    // Используем предопределенные элементы справочника для надежности
    Если Найти(Наименование, "20/120") > 0 Тогда
        Возврат Справочники.СтавкиНДС.НДС20_120;
    ИначеЕсли Найти(Наименование, "20") > 0 Тогда
        Возврат Справочники.СтавкиНДС.НДС20;
    ИначеЕсли Найти(Наименование, "10/110") > 0 Тогда
        Возврат Справочники.СтавкиНДС.НДС10_110;
    ИначеЕсли Найти(Наименование, "10") > 0 Тогда
        Возврат Справочники.СтавкиНДС.НДС10;
    ИначеЕсли Найти(Наименование, "0") > 0 Тогда
        Возврат Справочники.СтавкиНДС.НДС0;
    ИначеЕсли ВРег(Наименование) = "БЕЗ НДС" Тогда
        Возврат Справочники.СтавкиНДС.БезНДС;
    КонецЕсли;
    
    // Если ставка не найдена среди стандартных, можно попытаться найти по наименованию
    СсылкаНаСтавку = Справочники.СтавкиНДС.НайтиПоНаименованию(Наименование);
    
    Если СсылкаНаСтавку.Пустая() Тогда
        ВызватьИсключение "Не удалось определить ставку НДС для значения: " + Наименование;
    КонецЕсли;
    
    Возврат СсылкаНаСтавку;
    
КонецФункции

Использование общих модулей

В типовых решениях 1С (УТ, ERP, КА) для работы со ставками НДС предусмотрены специальные общие модули, такие как СтавкиНДСКлиентСервер. Рекомендуется использовать именно их функции, так как они учитывают логику периодичности и актуальности ставок. Посмотрим на пример вычисления суммы НДС через типовой механизм:


// Пример использования типового функционала для расчета суммы НДС
ДанныеНДС = СтавкиНДСКлиентСервер.ПолучитьПараметрыНДС(СтавкаНДС);
СуммаНДС = СтавкиНДСКлиентСервер.РассчитатьСуммуНДС(СуммаДокумента, ДанныеНДС.Процент, ДанныеНДС.СтавкаНДСВключенаВСуму);

Этот подход является наиболее правильным, так как он скрывает внутреннюю структуру справочника и защищает ваш код от будущих изменений архитектуры 1С.

Заключение

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

← На главную