Введение
НДС (налог на добавленную стоимость). Думаю, каждый из нас сталкивался с этим налогом — не только как программист, но и как обычный покупатель в магазине.
НДС встречается при покупке товара, получении услуги, короче — почти в любом взаимодействии «поставщик — клиент». И даже когда в чеке написано «Без НДС», это не значит, что налога нет. Чаще всего это означает, что поставщик применяет специальный налоговый режим (УСН, патент) или освобождён от обязанностей плательщика НДС — тогда он просто не выставляет вам налог. Либо это действительно нулевая ставка (например, для экспортёров), но это особый случай.
Так или иначе, ни одно предприятие не обходится без этого налога. А если вы бухгалтер или программист на предприятии, понимание НДС становится важнейшей частью ваших профессиональных знаний.
Ключевые термины, которые обязан понимать программист и бухгалтер: исходящий НДС — это налог, который вы начислили своим покупателям; входящий НДС — налог, который вы заплатили своим поставщикам; вычет или возмещение — сумма, на которую можно уменьшить исходящий НДС; налоговая база — сумма без НДС, с которой считается налог.
Ставки НДС бывают:
- 22% (основная)
- 10% (пониженная для продовольственных, детских товаров, медицинских изделий и книжной продукции)
- 0% для экспорта и международных перевозок, а также освобождение от уплаты НДС по статье 145 НК РФ для тех, у кого выручка меньше 2 миллионов рублей за квартал, и УСН (упрощённая система), при которой налог не начисляется, но и не принимается к вычет
Важно окончательно понять разницу между надписью «Без НДС» и нулевой ставкой. Если контрагент на УСН, то в договоре пишут «Без НДС», в счёте-фактуре (если он вообще выставляет) в графе НДС стоит «Без НДС», и такой входящий НДС принять к вычету нельзя.
Если контрагент на общей системе и операция облагается по ставке 0%, то в счёте-фактуре в графе «Ставка НДС» стоит «0%», а в графе «Сумма НДС» — 0, и такую счёт-фактуру можно принять к вычету, но нужно подтвердить право на нулевую ставку в течение 180 дней. Поэтому при разработке программист должен учитывать, что реквизиты: «Без НДС» (освобождение или УСН — не даёт права на вычет) и «0%» (даёт право на вычет при выполнении условий) - разные ставки.
Для программиста, который работает с 1С, есть несколько критических моментов:
Формулы расчёта: начислить НДС на сумму нетто — это сумма без НДС умножить на ставку. То есть, нужно выделить НДС из суммы с НДС — это сумма брутто умножить на ставку и разделить на 100 плюс ставка.
Например, из 120 рублей при ставке 20% получается 120 × 20 / 120 = 20 рублей, частая ошибка новичков — просто умножить на 0,2, получается 24 рубля.
На практике эта ошибка также встречается очень часто и у опытных программистов, так как многие не знакомы с бухгалтерией.
Также при расчете НДС нужно учитывать, входит ли налог в стоимость или нет, так как при расчете формула от этого меняется.
Подробнее о расчете налога
Как ни странно, но формула для расчета НДС не совсем однозначна, так как налог может входить в стоимость товара или услуги, а может накладываться сверху на сумму. Подобное в 1С можно увидеть в счетах на оплату покупателю.


Здесь мы разберем подробнее (для простоты расчета возьмем налог 20%):
-
НДС не входит в стоимость (цена указана без НДС)
Это ситуация, когда в договоре или в цене написано «без НДС» или «+ НДС сверху». Поставщик называет сумму, которую он хочет получить за товар, а НДС начисляется дополнительно.
Формулы:
Сумма с НДС = Сумма без НДС × (1 + Ставка_НДС/100)
Сумма НДС = Сумма без НДС × (Ставка_НДС/100)
Например, ставка 20%. Товар стоит 1000 руб. без НДС. Тогда НДС = 1000 × 0,20 = 200 руб. Общая стоимость для покупателя = 1200 руб.
В бухгалтерии и программах: такая операция означает, что продавец обязан выставить счёт-фактуру на 1200 руб., в том числе НДС 200 руб. Покупатель (если он плательщик НДС) может принять 200 руб. к вычету. -
НДС входит в стоимость (цена указана с НДС)
В магазинах и многих розничных ценах сумма уже включает НДС. То есть покупатель видит итоговую цену, внутри которой уже сидит налог. Нужно уметь выделять НДС из суммы, чтобы знать, сколько перечислить государству и какую сумму принять к вычету.
Формулы:
Сумма НДС = Сумма_с_НДС × (Ставка_НДС / (100 + Ставка_НДС))
Сумма без НДС = Сумма_с_НДС / (1 + Ставка_НДС/100)
Пример: сумма с НДС 1200 руб., ставка 20%. НДС = 1200 × (20/120) = 1200 / 6 = 200 руб. Сумма без НДС = 1200 / 1,2 = 1000 руб.
Для ставки 10%: НДС = Сумма_с_НДС × (10/110) = Сумма_с_НДС / 11. Сумма без НДС = Сумма_с_НДС / 1,1.
Многие новички просто умножают сумму с НДС на 0,2 (при ставке 20%). Это неправильно.
Например: 1200 × 0,2 = 240 руб., тогда как верный НДС – 200 руб. Ошибка возникает потому, что 0,2 – это 20% от базы без НДС, а не от суммы с НДС. Правильная формула для выделения:
НДС = Сумма с НДС × (Ставка / (100 + Ставка)).
Для 20% это умножение на 20/120, или на 1/6. Для 10% – на 10/110, или на 1/11.
Отсюда случается большое множество ошибок при расчетах.
Расчет налога на добавленную стоимость в 1С
Расчет НДС в 1С — это процесс, построенный на принципе "разницы между исходящим и входящим налогом".
Чтобы правильно посчитать НДС в коде, не нужно придумывать костылей. Необходимо воспользоваться тем что предоставляет сама 1С.
В 1С: Бухгалтерии есть общий модуль, в котором есть все для взаимодействия с налоговой.
Пример правильного расчета налога на добавленную стоимость в 1С:
СсылкаДокумента.РасшифровкаПлатежа[0].СуммаПлатежа = СсылкаДокумента.СуммаДокумента;
СтавкаНДС = УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(СсылкаДокумента.РасшифровкаПлатежа[0].СтавкаНДС);
НДСВключеноВСтоимость = Истина;
СуммаНДС = УчетНДСКлиентСервер.РассчитатьСуммуНДС(СсылкаДокумента.РасшифровкаПлатежа[0].СуммаПлатежа, НДСВключеноВСтоимость, СтавкаНДС);
СсылкаДокумента.РасшифровкаПлатежа[0].СуммаНДС = СуммаНДС;
В нашем распоряжении есть сумма документа, налог на добавленную стоимость которой нам нужно посчитать, вот в этой строке;
СсылкаДокумента.РасшифровкаПлатежа[0].СуммаПлатежа = СсылкаДокумента.СуммаДокумента;
Есть ставка НДС, по которой нам нужно посчитать налог:
СсылкаДокумента.РасшифровкаПлатежа[0].СтавкаНДС
Далее подробнее рассмотрим выполняемые действия.
С помощью общего модуля "УчетНДСВызовСервераПовтИсп" и Функции "ПолучитьСтавкуНДС" получаем число для расчета ставки НДС. Передаем туда в параметрах выбранное значение из перечисления "СтавкиНДС".
СтавкаНДС = УчетНДСВызовСервераПовтИсп.ПолучитьСтавкуНДС(СсылкаДокумента.РасшифровкаПлатежа[0].СтавкаНДС);
Далее определяем включен ли НДС в стоимость товара с помощью переменной (Положение флага этой переменной зависит от условий и контекста задачи, может быть как истина, так и ложь. Тем кто не знает, лучше уточнить у бухгалтера.)
НДСВключеноВСтоимость = Истина;
Теперь получаем рассчитанную сумму НДС из функции БСП. Передаем в параметрах сумму документа из которой нужно высчитать НДС, флаг включения НДС в стоимость суммы и числовое значение ставки.
СуммаНДС = УчетНДСКлиентСервер.РассчитатьСуммуНДС(СсылкаДокумента.РасшифровкаПлатежа[0].СуммаПлатежа, НДСВключеноВСтоимость, СтавкаНДС);
Далее просто вставляем полученную сумму из функции в сумму НДС в документе.
СсылкаДокумента.РасшифровкаПлатежа[0].СуммаНДС = СуммаНДС;
Заключение
НДС — это не просто налог, а один из самых сложных и одновременно важнейших элементов финансовой системы любого бизнеса в России. Для бухгалтера и программиста понимание его сути, механизма расчёта и особенностей отражения в учётных системах становится не просто теоретическим знанием, а насущной практической необходимостью. Мы разобрали, что НДС возникает в каждой сделке между поставщиком и клиентом, и даже формулировка «Без НДС» не означает полного отсутствия налога, а лишь указывает на специальный налоговый режим или освобождение, что кардинально меняет права на вычет. Ошибка в трактовке «Без НДС» и нулевой ставки может обернуться для компании не только финансовыми потерями, но и претензиями налоговой инспекции, поэтому программист обязан чётко разделять эти два понятия.
Ключевые формулы расчёта — начисление НДС сверху и выделение НДС из суммы — должны быть отточены до автоматизма. Мы убедились, что простое умножение суммы с НДС на 0,2 вместо правильного деления на 6 (для ставки 20%) — это классическая ошибка, которая встречается даже у опытных разработчиков, не знакомых с бухгалтерской спецификой. Цена такой ошибки может быть катастрофической: завышенный или заниженный налог, неправильно сформированная книга продаж или покупок, некорректная декларация. Именно поэтому программист, работающий с учётными системами, должен не просто механически запоминать формулы, но и понимать их экономический смысл: когда налог входит в стоимость, мы применяем расчётную ставку (20/120 или 10/110), когда начисляется сверху — прямую (20% или 10%).
Переходя к практической реализации в 1С, мы увидели, что платформа предоставляет готовые, проверенные механизмы для работы с НДС через общие модули «УчетНДСВызовСервераПовтИсп» и «УчетНДСКлиентСервер». Использование функции «РассчитатьСуммуНДС» с корректной передачей параметров — это не просто рекомендация, а требование к надёжному коду. Попытки написать собственные «велосипеды» для расчёта НДС почти всегда приводят к ошибкам, связанным с округлением, различными ставками, периодами действия и особенностями учёта авансов. Разработчик должен помнить, что в 1С уже заложены все актуальные правила налогового законодательства, включая перенос вычетов, раздельный учёт и восстановление НДС по авансам, поэтому лучший подход — использовать стандартные инструменты платформы.
Кроме того, важным аспектом является взаимодействие программиста с бухгалтером. Флаг «НДС включён в стоимость» и правильный выбор ставки НДС из перечисления должны устанавливаться на основе учётной политики предприятия и конкретного документа. Нельзя полагаться только на собственные предположения — любой спорный момент необходимо уточнять у бухгалтера или налогового консультанта. Это особенно актуально при работе с авансами, корректировочными счетами-фактурами и операциями, облагаемыми по ставке 0% с последующим подтверждением.
Подводя итог, можно уверенно сказать: грамотная работа с НДС в 1С — это симбиоз чёткого знания налогового кодекса, владения математическими формулами и умения использовать стандартные механизмы платформы. Для бухгалтера это правильное отражение операций и своевременная сдача отчётности без ошибок. Для программиста — написание надёжного, поддерживаемого кода, который не «сломается» при изменении ставки или появлении нового типа операции. Вместе они составляют основу финансового здоровья компании, позволяя минимизировать налоговые риски и избегать штрафов. Игнорирование хотя бы одного из рассмотренных нюансов — от неправильного выделения НДС до неверной настройки раздельного учёта — может привести к доначислению налога, пеням и серьёзным репутационным потерям. Поэтому каждый, кто хочет называться профессионалом в области бухгалтерского учёта или программирования экономических систем, обязан изучить и постоянно углублять свои знания по НДС, а самое главное — уметь применять их на практике в конкретной учётной системе, будь то 1С или другая платформа.
Вступайте в нашу телеграмм-группу Инфостарт