При работе в 1С:Управление торговлей 11 (УТ 11) многие пользователи и технические специалисты сталкиваются с проблемой «некрасивых» сумм в документах продажи. Даже если мы устанавливаем ровные процентные скидки, итоговая сумма документа часто содержит копейки, что неудобно для наличного расчета или просто противоречит маркетинговой политике компании. В этой статье мы подробно разберем все способы настройки округления: от стандартных инструментов маркетинга до использования формул и программной корректировки кода.
Разберем самый простой и предусмотренный разработчиками механизм. В системе существует специальный тип автоматической скидки, который предназначен исключительно для округления. Рассмотрим последовательность действий для его настройки:
Проанализируем типичную ошибку: если эта скидка находится в группе с вариантом «Сложение» или «Максимум» вместе с другими процентными скидками, результат может быть непредсказуемым. Рекомендуется помещать скидку на округление в самую нижнюю позицию дерева скидок с вариантом применения Последовательно. Это гарантирует, что система сначала рассчитает все процентные и суммовые скидки, а в самом конце «подчистит» оставшиеся копейки.
В современных релизах 1С:Управление торговлей появился мощный инструмент — расчет скидки по формуле. Это позволяет заложить логику округления непосредственно в алгоритм расчета конкретной скидки, не дожидаясь применения итогового округления ко всему документу. Для этой задачи есть расширение для автоматического расчета цен по формулам в УТ 11.
Рассмотрим пример. Допустим, нам нужно предоставить скидку 5%, но так, чтобы сама сумма скидки всегда была целым числом. Выясним, как это реализовать через конструктор формул:
Окр.Пример формулы для расчета округленной скидки:
Окр(Сумма * 0.05, 0)
Разберем параметры функции Окр:
Этот метод наиболее предпочтителен, так как он не требует изменения типовой конфигурации и корректно отрабатывает во всех документах продажи.
В старых версиях УТ 11 пользователи часто жаловались на то, что поле округления доступно только для специального типа скидки, а для обычных процентных скидок оно скрыто или не работает. Если бизнес-процесс требует жесткого округления именно каждой строки при расчете процента, можно прибегнуть к модификации кода. Внимание: данный метод требует внесения изменений в конфигурацию (рекомендуется использовать расширения).
Рассмотрим пошагово, какие изменения нужно внести:
1. В модуле формы элемента справочника СкидкиНаценки найдем процедуру, управляющую видимостью элементов. Нам нужно сделать видимой группу округления для процентных скидок (поможет конструктор правил заполнения и обработки данных без программирования). Найдем блок, отвечающий за СпособыПредоставленияСкидокНаценок.Процент, и убедимся, что свойство Элементы.ГруппаОкругление.Видимость установлено в значение Истина.
2. Далее проанализируем серверную часть. В общем модуле СкидкиНаценкиСервер (или аналогичном в вашей версии, например, в функции РассчитатьДеревоСкидок) необходимо вставить логику, которая будет применять точность округления, указанную в карточке скидки.
Пример кода для вставки перед финальным присвоением суммы скидки:
Если СтрокаСкидкиНаценки.СкидкаНаценка.ТочностьОкругления <> 0.01 Тогда
СтрокаСкидкиНаценки.Сумма = ЦенообразованиеКлиентСервер.ОкруглитьЦену(
СтрокаСкидкиНаценки.Сумма,
СтрокаСкидкиНаценки.СкидкаНаценка.ТочностьОкругления,
СтрокаСкидкиНаценки.СкидкаНаценка.ОкруглятьВБольшуюСторону
);
КонецЕсли;
Этот код проверяет, задана ли в настройках скидки точность, отличная от стандартной (копейки), и если да — вызывает типовую функцию ОкруглитьЦену, которая корректно преобразует результат.
Разберем ситуацию, когда настройки заданы правильно, но в документе все равно остаются копейки. Посмотрим на основные причины:
Иногда проблему проще решить на уровне Видов цен, а не скидок. Посмотрим, как это сделать:
В настройках Вида цены (раздел CRM и маркетинг — Настройки и справочники) существует вкладка Правила округления цены. Если ваша скидка — это не маркетинговая акция, а просто переход на другой уровень цен (например, «Оптовая цена» как «Розничная - 10%»), настройте округление именно в правилах расчета этой цены. Тогда система будет подставлять в документ уже «чистые» значения без копеек, и вам не придется бороться с распределением скидок в чеке или заказе.
Подводя итог, отметим, что для современных версий 1С:Управление торговлей 11.5 наиболее правильным и безопасным методом является использование скидок по формулам. Это сохраняет поддержку конфигурации и дает максимальную гибкость в управлении копейками в ваших торговых документах.