Как настроить округление скидок в 1С:Управление торговлей 11 и избавиться от лишних копеек

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе в 1С:Управление торговлей 11 (УТ 11) многие пользователи и технические специалисты сталкиваются с проблемой «некрасивых» сумм в документах продажи. Даже если мы устанавливаем ровные процентные скидки, итоговая сумма документа часто содержит копейки, что неудобно для наличного расчета или просто противоречит маркетинговой политике компании. В этой статье мы подробно разберем все способы настройки округления: от стандартных инструментов маркетинга до использования формул и программной корректировки кода.

Способ 1. Использование стандартной скидки типа «Округление суммы документа»

Разберем самый простой и предусмотренный разработчиками механизм. В системе существует специальный тип автоматической скидки, который предназначен исключительно для округления. Рассмотрим последовательность действий для его настройки:

  1. Перейдем в раздел CRM и маркетинг — Скидки (наценки) — для этой задачи есть обработка для упрощения настройки маркетинга и скидок в 1С:УТ 11.
  2. Нажмем кнопку Создать и выберем тип скидки Округление суммы документа.
  3. В открывшейся форме укажем Точность округления. Например, значение «1» будет означать округление до рубля, «10» — до десяти рублей, а «0.1» — до десяти копеек.
  4. Выберем правило: округлять по арифметическим правилам или всегда в пользу клиента.
  5. Важным моментом является настройка Варианта совместного применения.

Проанализируем типичную ошибку: если эта скидка находится в группе с вариантом «Сложение» или «Максимум» вместе с другими процентными скидками, результат может быть непредсказуемым. Рекомендуется помещать скидку на округление в самую нижнюю позицию дерева скидок с вариантом применения Последовательно. Это гарантирует, что система сначала рассчитает все процентные и суммовые скидки, а в самом конце «подчистит» оставшиеся копейки.

Способ 2. Применение произвольных формул (для версий УТ 11.4 и выше)

В современных релизах 1С:Управление торговлей появился мощный инструмент — расчет скидки по формуле. Это позволяет заложить логику округления непосредственно в алгоритм расчета конкретной скидки, не дожидаясь применения итогового округления ко всему документу. Для этой задачи есть расширение для автоматического расчета цен по формулам в УТ 11.

Рассмотрим пример. Допустим, нам нужно предоставить скидку 5%, но так, чтобы сама сумма скидки всегда была целым числом. Выясним, как это реализовать через конструктор формул:

  1. При создании скидки выберем способ предоставления Результат вычисления по формуле.
  2. В редакторе формул используем стандартную математическую функцию Окр.

Пример формулы для расчета округленной скидки:

Окр(Сумма * 0.05, 0)

Разберем параметры функции Окр:

Этот метод наиболее предпочтителен, так как он не требует изменения типовой конфигурации и корректно отрабатывает во всех документах продажи.

Способ 3. Программная доработка механизмов округления (для версий 11.0 – 11.3)

В старых версиях УТ 11 пользователи часто жаловались на то, что поле округления доступно только для специального типа скидки, а для обычных процентных скидок оно скрыто или не работает. Если бизнес-процесс требует жесткого округления именно каждой строки при расчете процента, можно прибегнуть к модификации кода. Внимание: данный метод требует внесения изменений в конфигурацию (рекомендуется использовать расширения).

Рассмотрим пошагово, какие изменения нужно внести:

1. В модуле формы элемента справочника СкидкиНаценки найдем процедуру, управляющую видимостью элементов. Нам нужно сделать видимой группу округления для процентных скидок (поможет конструктор правил заполнения и обработки данных без программирования). Найдем блок, отвечающий за СпособыПредоставленияСкидокНаценок.Процент, и убедимся, что свойство Элементы.ГруппаОкругление.Видимость установлено в значение Истина.

2. Далее проанализируем серверную часть. В общем модуле СкидкиНаценкиСервер (или аналогичном в вашей версии, например, в функции РассчитатьДеревоСкидок) необходимо вставить логику, которая будет применять точность округления, указанную в карточке скидки.

Пример кода для вставки перед финальным присвоением суммы скидки:


Если СтрокаСкидкиНаценки.СкидкаНаценка.ТочностьОкругления <> 0.01 Тогда
    СтрокаСкидкиНаценки.Сумма = ЦенообразованиеКлиентСервер.ОкруглитьЦену(
        СтрокаСкидкиНаценки.Сумма,
        СтрокаСкидкиНаценки.СкидкаНаценка.ТочностьОкругления,
        СтрокаСкидкиНаценки.СкидкаНаценка.ОкруглятьВБольшуюСторону
    );
КонецЕсли;

Этот код проверяет, задана ли в настройках скидки точность, отличная от стандартной (копейки), и если да — вызывает типовую функцию ОкруглитьЦену, которая корректно преобразует результат.

Почему округление может «не срабатывать»?

Разберем ситуацию, когда настройки заданы правильно, но в документе все равно остаются копейки. Посмотрим на основные причины:

  1. Распределение скидки по строкам. Если скидка назначена на документ в целом, 1С должна распределить её сумму между всеми позициями номенклатуры. Из-за разного количества товара (например, весовой товар с тремя знаками после запятой) при делении суммы возникают бесконечные дроби. Система округляет каждую строку до 2 знаков, и при сложении этих строк в итоге может получиться погрешность в +/- 1 копейку.
  2. Влияние НДС. Проанализируем настройки налогообложения (поможет расширение для автоматического расчета цен с корректным учетом НДС). Если в соглашении с клиентом указано «НДС сверху», то после округления цены с учетом скидки налог начислится поверх, снова создав дробную часть. Если «НДС в сумме», то округление работает стабильнее.
  3. Психологическое округление. Не путайте математическое округление с «психологическим». В настройках скидок УТ 11 есть опция, позволяющая приводить цены к виду «99 копеек» или «без 5 рублей». Если порог срабатывания настроен неверно, скидка может просто не примениться к мелким суммам.

Рекомендации по настройке ценообразования

Иногда проблему проще решить на уровне Видов цен, а не скидок. Посмотрим, как это сделать:

В настройках Вида цены (раздел CRM и маркетинг — Настройки и справочники) существует вкладка Правила округления цены. Если ваша скидка — это не маркетинговая акция, а просто переход на другой уровень цен (например, «Оптовая цена» как «Розничная - 10%»), настройте округление именно в правилах расчета этой цены. Тогда система будет подставлять в документ уже «чистые» значения без копеек, и вам не придется бороться с распределением скидок в чеке или заказе.

Подводя итог, отметим, что для современных версий 1С:Управление торговлей 11.5 наиболее правильным и безопасным методом является использование скидок по формулам. Это сохраняет поддержку конфигурации и дает максимальную гибкость в управлении копейками в ваших торговых документах.

← На главную