Налаштування обліку ПДВ на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування обліку ПДВ на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування обліку ПДВ у 1C-Bitrix

Інтернет-магазин показує ціну з ПДВ, рахунок формується без ПДВ, а 1C отримує третю суму — все це свідчить про те, що ПДВ налаштовано в трьох різних місцях без єдиного джерела істини.

Де зберігаються ставки ПДВ

Ставки ПДВ у Bitrix — записи в 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: ПДВ = ЦІНА * СТАВКА / (100 + СТАВКА)
// VAT_INCLUDED = N: ПДВ = ЦІНА * СТАВКА / 100

Bitrix зберігає фінальну суму ПДВ на позицію у b_sale_basket — поле VAT_RATE (ставка) та VAT_SUM (сума). При створенні замовлення ці значення копіюються в b_sale_order_basket.

Податкові виключення та 0%

Для товарів, звільнених від ПДВ, створюється окрема ставка з RATE = 0 у b_catalog_vat. Це важливо: не залишати VAT_ID = NULL, явно вказувати нульову ставку. При NULL різні версії Bitrix ведуть себе по-різному — одні застосовують дефолтну ставку магазину, інші пропускають ПДВ повністю.

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

Рахунок та друковані форми

Стандартна друкована форма рахунку у Bitrix (/bitrix/modules/sale/lang/uk/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();
}

Передача ПДВ у 1C

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