При отгрузке товаров в крупные торговые сети поставщики регулярно сталкиваются с ситуацией, когда итоговые суммы в первичных документах 1С не сходятся с расчетами учетной системы покупателя на несколько копеек или даже рублей. Типичный пример: поставщик отгружает штучный товар в количестве 1728 единиц по цене 100,13 руб. без налога при ставке НДС 18% (или 20%). В учетной системе поставщика итоговая сумма составляет 204 169,08 руб., а сеть требует предоставить документы на сумму 204 163,20 руб. Разберем методологию законодательства, выясним причины такого поведения сетей и рассмотрим технические способы решения проблемы в программе 1С.
Проанализируем, откуда берется эта разница. В основе проблемы лежат два принципиально разных математических алгоритма расчета налога:
Выясним, какой из двух подходов является юридически и методологически верным с точки зрения налогового законодательства РФ:
Таким образом, алгоритм, заложенный в типовые конфигурации 1С, является строго правильным по нормам Налогового кодекса. Однако торговые сети используют централизованные западные ERP-системы (например, SAP или Oracle), где первичной сущностью является цена товара на розничной полке (с уже включенным НДС). Кроме того, приемка товара в распределительных центрах автоматизирована через шлюзы электронного документооборота (EDI). Робот сверяет входящий УПД с заказом сети (ORDERS/DESADV), и при расхождении даже в одну копейку поставка автоматически блокируется.
При этом, согласно пункту 2 статьи 169 НК РФ и разъяснениям Минфина, ошибки округления в несколько копеек или рублей не препятствуют налоговым органам идентифицировать продавца, покупателя, ставку и сумму налога, поэтому не могут служить основанием для отказа в вычете НДС. Это дает возможность адаптировать расчеты под требования сети без риска налоговых санкций.
Прежде чем менять программный код, поднимем договор поставки и спецификацию цен с сетью. Рассмотрим два сценария:
В типовых конфигурациях платформы «1С:Предприятие 7.7» (включая конфигурацию «Производство + Услуги + Бухгалтерия») реквизиты Цена, Сумма и НДС имеют тип Число(10, 2) или Число(14, 2). Если сеть требует итоговую сумму 204 163,20 руб. за 1728 единиц, реальная цена без НДС составляет 204 163,20 / 1,18 / 1728 ≈ 100,127118 руб.
При сохранении цены с точностью до 2 знаков (100,13 руб.) ошибка неизбежна. Решением является расширение точности цен в метаданных конфигурации 1С 7.7:
Цены и табличных частях документов реализации (например, РасходнаяНакладная) изменим точность реквизита Цена с 2 до 4 знаков после запятой (длина 15, точность 4).Если мы не хотим менять общую логику для других клиентов и не планируем глобально перестраивать метаданные, реализуем расчет от суммы с НДС индивидуально для контрагента. Добавим в справочник Договоры или Контрагенты флаг (реквизит типа «Число» или «Булево») РасчетПоСети.
В модуле формы документа отгрузки при изменении количества или цены добавим процедуру расчета, которая сначала определяет итоговую сумму с налогом, а затем расчетным методом выделяет НДС и сумму без налога:
// Пример расчета строки документа по алгоритму торговой сети
Если Договор.РасчетПоСети = 1 Тогда
// 1. Вычисляем округленную цену с НДС
ЦенаСНДС = Окр(Цена * (1 + СтавкаНДС / 100), 2);
// 2. Рассчитываем итоговую сумму строки с НДС
СуммаСНДС = Окр(ЦенаСНДС * Количество, 2);
// 3. Выделяем НДС расчетным методом из итоговой суммы
СуммаНДС = Окр(СуммаСНДС * СтавкаНДС / (100 + СтавкаНДС), 2);
// 4. Получаем сумму без налога вычитанием
Сумма = СуммаСНДС - СуммаНДС;
Иначе
// Стандартный алгоритм 1С (по Налоговому кодексу РФ)
Сумма = Окр(Количество * Цена, 2);
СуммаНДС = Окр(Сумма * СтавкаНДС / 100, 2);
СуммаСНДС = Сумма + СуммаНДС;
КонецЕсли;
Такой подход обеспечивает идеальное совпадение строк документа с требованиями шлюза торговой сети, исключает отказы в автоматической приемке EDI и одновременно сохраняет корректный расчет по Налоговому кодексу для всех остальных покупателей предприятия.