Настройка учета НДС на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка учета НДС на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка учета НДС на 1С-Битрикс

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

Где хранятся ставки НДС

Ставки НДС в Битриксе — записи в b_catalog_vat. Каждая запись: ID, NAME (например, "НДС 20%"), RATE (число, 20), ACTIVE. Привязка ставки к товару — поле VAT_ID в b_iblock_element_property или напрямую в b_catalog_product через поле VAT_ID.

Включение НДС в цену управляется полем VAT_INCLUDED в b_catalog_product: Y — цена включает НДС, N — НДС сверху. Это поле часто игнорируют при настройке, и тогда система считает НДС дважды или не считает вообще.

Получение ставки для товара:

$product = \Bitrix\Catalog\ProductTable::getById($productId)->fetch();
$vat = \Bitrix\Catalog\VatTable::getById($product['VAT_ID'])->fetch();
// $vat['RATE'] — числовое значение ставки
// $product['VAT_INCLUDED'] — включён ли НДС в цену

Отображение НДС в корзине и заказе

Компонент bitrix:sale.basket.basket отображает НДС если в его параметрах включён SHOW_VAT. Но даже при включённом параметре сумма НДС может считаться неверно — это происходит когда часть товаров имеет VAT_INCLUDED = Y, а часть N.

Правильный расчёт суммы НДС для позиции корзины:

// VAT_INCLUDED = Y: НДС = PRICE * RATE / (100 + RATE)
// VAT_INCLUDED = N: НДС = PRICE * RATE / 100

Битрикс хранит финальную сумму НДС по позиции в b_sale_basket — поле VAT_RATE (ставка) и VAT_SUM (сумма). При создании заказа эти значения копируются в b_sale_order_basket.

Налоговые исключения и 0%

Для товаров, освобождённых от НДС, создаётся отдельная ставка с RATE = 0 в b_catalog_vat. Это важно: не оставлять VAT_ID = NULL, а явно указывать нулевую ставку. При NULL разные версии Битрикса ведут себя по-разному — одни применяют дефолтную ставку магазина, другие пропускают НДС совсем.

Дефолтная ставка магазина задаётся в b_option, модуль sale, параметр default_vat_rate. Именно она используется как fallback.

Счёт и печатные формы

Стандартная печатная форма счёта в Битриксе (/bitrix/modules/sale/lang/ru/documents/) берёт данные из b_sale_order и связанных таблиц. НДС в счёте отображается корректно только если в заказе заполнены VAT_RATE и VAT_SUM по каждой позиции.

Для кастомных печатных форм (PDF через mpdf или tcpdf) нужно явно вычислять суммы:

$basket = \Bitrix\Sale\Basket::loadItemsForOrder($order);
$totalVat = 0;
foreach ($basket as $item) {
    $totalVat += $item->getField('VAT_SUM') * $item->getQuantity();
}

Передача НДС в 1С

При выгрузке заказов в 1С через CommerceML (sale.crm.order) НДС передаётся в элементе <ЦенаЗаЕдиницу> с атрибутом ЦенаВключаетНДС и отдельным элементом <Налог>. Если в 1С суммы расходятся с сайтом, первое что проверяется — соответствие VAT_INCLUDED на стороне Битрикса и настроек номенклатуры в 1С. Второй источник расхождений — округление: Битрикс округляет до 2 знаков на позицию, 1С может считать суммарно по всему заказу, давая разницу в копейки.