Многие пользователи конфигурации 1С:Розница при переходе на актуальные релизы (начиная с 2.3.9 и выше) сталкиваются с загадочным поведением программы: при оформлении заказов или чеков, особенно при вводе дробного количества товара, в документе внезапно появляются автоматические скидки на все позиции. При этом в разделе маркетинговых акций могут отсутствовать действующие скидки, а те, что есть, имеют совершенно другие условия и номиналы. В этой статье мы подробно разберем, откуда берутся эти «фантомные» скидки, как работает механизм округления и где именно в интерфейсе программы скрываются настройки, влияющие на расчет итоговой суммы.
Прежде всего, давайте проанализируем внутреннюю логику программы. В 1С:Розница округление суммы чека технически реализовано не как простое изменение итоговой цифры, а именно через механизм автоматической скидки. Программа рассчитывает математически точную сумму по формуле Цена * Количество. Если в результате получается число с тысячными долями копейки (что часто бывает при умножении цены на дробный вес, например, 0.334 кг), система должна привести итог к формату, который «поймет» кассовый аппарат и законодательство (54-ФЗ).
Рассмотрим ситуацию подробнее: согласно требованиям фискализации, каждая строка в чеке должна содержать конечную сумму с учетом всех корректировок. Если вы настроили округление чека до целого рубля, программа не может просто «отбросить» копейки в итоговой сумме документа — она обязана распределить эту разницу по всем строкам чека пропорционально их стоимости. Именно поэтому вы видите сотые доли рубля в колонке «Скидка» даже в тех строках, на которые не распространяются никакие маркетинговые акции.
Выясним причину, по которой скидки появляются даже при отсутствии активных маркетинговых мероприятий. Основной «виновник» чаще всего находится не в справочнике скидок, а в настройках конкретной торговой точки. Разберем по шагам, как проверить и изменить эту настройку:
Если в данном поле установлено значение (например, 0.50 или 1.00), система будет автоматически генерировать корректирующую скидку для каждого чека, сумма которого не кратна указанному значению. Важно понимать: даже если вы удалите все маркетинговые акции, эта настройка продолжит работать, так как она считается системным правилом оформления продаж в данном магазине, а не временной акцией.
Проанализируем ситуацию, упомянутую в обсуждении: переход с «доисторического» релиза 2019 года на современную версию. Начиная с версии 2.3.9, разработчики 1С полностью переработали внутренний «Расчетчик скидок». Это было сделано для повышения производительности и гибкости настройки сложных акций, однако при обновлении данных могут возникать побочные эффекты.
Иногда при обновлении со старых версий происходит некорректный перенос признаков активности скидок в системных регистрах. Даже если в пользовательском интерфейсе акция помечена как «недействующая» или вовсе удалена, в регистре сведений ДействующиеСкидкиНаценки может сохраниться запись, заставляющая программу производить расчет. В таких случаях рекомендуется проверить состояние регистров через «Функции для технического специалиста» (ранее «Все функции»).
Посмотрим на пример с весовым товаром. В системе 1С точность хранения суммы составляет два знака после запятой. Однако при работе с дробным количеством (3 знака после запятой) и ценой, которая не делится ровно на граммы, возникают ошибки округления. Рассмотрим, как программа справляется с этим:
Если включена настройка «Округлять цену при вводе количества», программа принудительно создает корректирующую скидку, чтобы математическое равенство (Цена - Скидка) * Количество = Сумма сошлось до копейки. Если этого не сделать, кассовый аппарат выдаст ошибку «Сумма строк не совпадает с итогом чека».
Для решения этой проблемы мы можем использовать следующий алгоритм действий:
Иногда источником «лишних» скидок является не сама 1С:Розница, а настройки драйвера кассового аппарата. В современных драйверах (например, АТОЛ или Штрих-М) существует встроенная функция округления. Если в драйвере включено округление до рубля, а 1С передает сумму с копейками, касса самостоятельно отбросит копейки и вернет в программу информацию о том, что чек пробит на меньшую сумму. 1С зафиксирует это расхождение и запишет его в колонку «Скидка», чтобы отразить реальное состояние взаиморасчетов. Рекомендуется синхронизировать настройки округления в 1С и в драйвере ККТ, либо полностью отключить округление на стороне кассы, доверив расчеты программе.
Если вы обнаружили автоматические скидки на все строки заказа, которые не создавали вручную, выполните следующие действия:
СостояниеСкидокНаценок, чтобы исключить влияние старых данных после обновления.Таким образом, в большинстве случаев «несуществующие» скидки являются следствием системных настроек округления, призванных обеспечить математическую точность документа при передаче данных в фискальный накопитель. Правильная настройка этих параметров позволит вам избежать путаницы в учете и отчетности.