Копейка между Битрикс24 и 1С: почему суммы счетов не сходятся
Облако Битрикс24 · смарт-счета · обмен с 1С · 2026
Суммы счетов в Битрикс24 и в 1С расходятся на копейки. Не везде, но регулярно, и виноватой по привычке считают 1С: Битрикс же показывает «правильную» сумму.
Разбор 7753 товарных строк показал обратное. 1С считает правильно. Копейки рождаются в Битрикс24, и в документации об этом нет ни слова.
Откуда берутся копейки
Смарт-счета Битрикс24 не округляют цену до копейки, когда сохраняют товарную строку. В базе лежат цены вида 805.23809523, 232.66285715, 3784.725. Из 7753 строк на этом портале цена без налога длиннее копейки у 6996, это 90%.
Как такая цена появляется:
- Менеджер вводит сумму строки, а не цену. Битрикс24 делит сумму на количество и хранит частное как есть:
4 × 1625.00000001 = 6500.00. - Процентная скидка. Она была в 7737 строках из 7753, и почти любая скидка в процентах дает цену с хвостом.
- Ставка 5%. Цену с налогом делят на 1,05, а это почти всегда бесконечная дробь.
1С так хранить не может: в документе цена в рублях и копейках. При обмене она усекает цену до копейки, а ошибка умножается на количество. При количестве 214 одна строка дает расхождение до 43 копеек. Худший счет на портале разошелся на 94 копейки.
Битрикс24 считает один документ двумя способами
Вторая причина тоньше. Внутри одного счета Битрикс24 округляет по-разному:
- сумму счета считает от итога: сложил все строки, округлил один раз в конце;
- налог считает построчно: округлил НДС каждой строки, потом сложил.
На 405 счетах, где эти способы дают разный результат, налог совпал с построчным расчетом в 404. Формулы пришлось восстанавливать по коду ядра (CCrmProductRow::preparePrices) и проверять на всех 7753 строках: в документации REST поля цены описаны без формул.
Почему подгонять 1С нельзя
Первая мысль обычно такая: настроить округление в 1С, чтобы сходилось с Битриксом. Но 1С здесь права по закону.
- Налоговый кодекс (п. 2 ст. 168) требует считать НДС по каждой позиции. Значит, верна построчная сумма налога.
- Правила заполнения счета-фактуры (постановление № 1137) требуют рубли и копейки. Округлять до рублей нельзя.
Получается, что «чинить» 1С значит сломать ей правильный расчет ради совпадения с неправильным.
Что не помогает
Это проверено, чтобы не тратить время:
- «Правила округления цен» в Битрикс24. Это механизм торгового каталога, к товарным строкам CRM-счета он не применяется.
- Настройки точности и правка типа поля в базе. Работает только на коробке, а здесь облако: доступа к файлам и базе нет.
- Округление в 1С. Противоречит норме, см. выше.
Что передавать в 1С
Решение на стороне обмена:
- Передавать сумму строки, а не цену. Сумма строки в Битрикс24 правильная, кривая только цена, полученная делением.
- Итог документа считать как сумму округленных строк. Это не поле «Сумма» (
opportunity) из карточки счета: оно посчитано от итога. - НДС считать построчно, как требует закон.
- Если итог задан жестко, копейку разницы отнести на одну строку, с самой большой суммой. Не размазывать по всем строкам. В 1С:Управление торговлей 11 для этого есть специальный тип скидки, «СкидкаНаценкаОкругление».
Две ловушки по дороге
Метод crm.item.productrow.list отдает не больше 50 строк. Он постраничный, и без обхода страниц строки счета молча обрезаются на пятидесятой. На этом портале так обрезались 4 счета, до 58 строк в каждом. В первом проходе они дали «необъяснимый» НДС, а после дозагрузки строк сошлись. Если ваша интеграция с 1С забирает строки этим методом, проверьте, обходит ли она страницы. Иначе в 1С уходят неполные счета.
Флаг «налог включен в цену» не всегда правдив. Нашелся счет на 51 строку, где флаг снят, а цена уже с налогом: 441 при цене без налога 420, ровно 420 × 1,05. Принимающая система начислит НДС второй раз, и расхождение будет уже не копеечным, а в 5%.
Денис Елисеев, администратор и интегратор Битрикс24 Telegram