К статье
Практический материал

Учет и Финансы · 9 мин

Как округлить до 5 рублей в 1С

Как округлить сумму до 5 рублей в 1С: формула Окр(), настройка округления цен в типовых конфигурациях, примеры кода и типичные ошибки.

Задача округлить цену или сумму до 5 рублей встречается в 1С регулярно: розничные цены приводят к «красивым» значениям, кассовые расчёты упрощают из-за нехватки мелочи, а итоги документов подгоняют под кратность. Подход зависит от того, где именно нужно округление — в коде, в формуле ценообразования или в настройках конфигурации.

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

Ниже разобраны оба пути: программный (через встроенный язык 1С) и настроечный (через механизмы ценообразования типовых конфигураций), а также проверка результата и типичные ошибки.

Как работает округление до кратности в 1С

Встроенный язык 1С предоставляет функцию Окр(Число, Разрядность, РежимОкругления). Первый параметр — округляемое значение, второй — количество знаков после запятой (или отрицательное значение для округления до десятков, сотен), третий — режим: по арифметическим правилам, в большую или меньшую сторону.

Чтобы округлить до 5 рублей, значение сначала приводят к «пятирублёвой шкале»: Окр(Сумма / 5, 0) * 5. Например, сумма 123 рубля превратится в 125, а 122 — в 120. Деление на 5 переводит задачу в обычное округление до целых, а умножение возвращает исходный масштаб.

Если требуется округлять строго вверх (например, чтобы не продавать себе в убыток) или строго вниз, используют третий параметр функции Окр(): РежимОкругления.Окр15как20 для округления вверх и РежимОкругления.Окр15как10 для округления вниз.

Формула округления до 5 рублей в коде

Базовый вариант для модуля или произвольного алгоритма выглядит так:

СуммаОкругленная = Окр(Сумма / 5, 0) * 5;

Для округления всегда вверх до ближайших 5 рублей:

СуммаОкругленная = Окр(Сумма / 5, 0, РежимОкругления.Окр15как20) * 5;

Проверьте логику на граничных значениях: 122,49 должно дать 120 при обычном округлении, 122,51 — 125, а ровно 122,50 по умолчанию округлится до 125 (арифметическое правило «половина вверх»). Если бухгалтерия требует иного поведения на половинках, это нужно оговорить отдельно и выбрать подходящий режим.

bsl
Функция ОкруглитьДо5(Сумма)
    Возврат Окр(Сумма / 5, 0) * 5;
КонецФункции

Если округление применяется к цене с копейками, сначала решите, что делать с дробной частью: округлять исходную цену 99,95 до 100 или сначала отбрасывать копейки. Порядок операций влияет на результат, поэтому зафиксируйте его в регламенте или комментарии к коду.

Округление цен в типовых конфигурациях без программирования

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

После настройки правила округление применяется автоматически при расчёте цен по формуле или при установке цен документом «Установка цен номенклатуры». Ручные правки цены в документе могут обходить правило — проверьте это на тестовом примере.

Настройка округления цен в типовой конфигурации
  1. 1
    Откройте карточку вида цен или правила ценообразования в разделе ценообразования
  2. 2
    Найдите параметры округления: порядок округления и направление (вверх, вниз, арифметически)
  3. 3
    Установите округление до 5 рублей и сохраните настройку
  4. 4
    Пересчитайте цены документом установки цен на тестовой номенклатуре
  5. 5
    Проверьте несколько значений с копейками и половинками (например, 122,50)

В «1С:Бухгалтерии» штатного механизма округления цен номенклатуры до произвольной кратности, как правило, нет — там округление обычно решают через обработку, доработку или ручную корректировку. Уточняйте возможности конкретной редакции в её описании или у внедренца.

Округление итогов документа и кассовых расчётов

Отдельный сценарий — округление не цены, а итоговой суммы чека или счёта. В розничных конфигурациях для этого существуют настройки округления суммы чека, иногда с автоматическим отнесением разницы на скидку или отдельную статью. Разница округления — это не «исчезающие» деньги: она должна где-то отражаться в учёте, иначе расходятся товарные и денежные остатки.

При самостоятельной доработке документа разницу между исходной и округлённой суммой корректно проводить отдельной строкой (скидка/надбавка округления), а не молча менять итог. Это сохраняет проверяемость расчётов и не ломает отчёты по НДС и выручке.

Проверка результата и контрольные точки

После внедрения формулы или настройки прогоните проверку на характерных значениях: суммы с копейками, ровные половинки шага (x2,50), отрицательные значения (возвраты) и ноль. Возвраты — частый источник ошибок: округление отрицательной суммы вверх может дать неожиданный знак разницы.

Контрольные точки

Как проверить результат

Сумма 122,49 после округления
Норма

120 при обычном округлении

Тревожный признак

125 или 122

Сумма 122,50
Норма

125 при арифметическом правиле

Тревожный признак

120 без явного указания режима

Итог документа после округления
Норма

Кратен 5, разница отражена отдельной строкой

Тревожный признак

Итог изменён молча, отчёты расходятся

Возврат с отрицательной суммой
Норма

Округление симметрично продаже

Тревожный признак

Знак разницы перевёрнут

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

Типичные ошибки при округлении до 5 рублей

Типичные ошибки
01
Использование Окр(Сумма, 0) вместо деления на 5 — округляет до целых рублей, а не до кратности 5
02
Округление цены до расчёта скидки вместо после — итог перестаёт быть кратным 5
03
Игнорирование отрицательных сумм в возвратах — разница округления получает неверный знак
04
Молчаливое изменение итога документа без отражения разницы — расходятся отчёты и взаиморасчёты
05
Правка типового модуля вместо расширения или обработки — доработка теряется при обновлении конфигурации

Ещё одна распространённая ситуация: округление настроено в ценообразовании, но менеджеры вручную правят цены в документах, и кратность «разъезжается». Если требование кратности жёсткое, ограничьте ручное редактирование цен правами или добавьте контроль при проведении.

Как выбрать подходящий способ

Маршрут решения

Как выбрать действие

Нужно округлять отпускные цены в УТ или РозницеНастройте правило округления в виде цен — без доработок
Нужно округление в собственном алгоритме или обработкеИспользуйте формулу Окр(Сумма/5, 0, Режим) * 5
Округляется итог чека или счётаИспользуйте штатное округление чека или отражайте разницу отдельной строкой
Конфигурация типовая и обновляетсяДоработку делайте через расширение или внешнюю обработку, не правя типовой код

Для разовой задачи (например, пересчитать цены в таблице) достаточно внешней обработки с формулой. Для постоянного бизнес-процесса предпочтительнее штатные механизмы ценообразования — они прозрачнее для пользователей и устойчивее к обновлениям.

Итог

Что важно запомнить

Округление до 5 рублей — это Окр(Сумма/5, 0, Режим) * 5 в коде или настройка правила округления в виде цен. Выбирайте режим (вверх, вниз, арифметически) осознанно, отражайте разницу округления в учёте и проверяйте результат на половинках, копейках и возвратах.

Частые вопросы

Как округлить до 5 рублей всегда в меньшую сторону?

Используйте режим округления вниз: Окр(Сумма / 5, 0, РежимОкругления.Окр15как10) * 5. Тогда 124,99 даст 120, а не 125. Этот вариант применяют, когда нельзя завышать цену для клиента.

Можно ли округлить до 5 рублей в запросе 1С?

В языке запросов 1С есть функция ВЫРАЗИТЬ для приведения типа и ограниченные вычисления, но полноценного аналога Окр() с режимами нет. Практичнее округлять уже выбранные данные в коде после выполнения запроса либо использовать выражение с целочисленным делением, если оно доступно в вашей версии платформы.

Почему после округления цены итог документа не кратен 5?

Потому что итог — это сумма произведений «цена × количество» с учётом скидок. Кратность цены не гарантирует кратность итога. Если нужен кратный итог, округлять надо именно итоговую сумму документа, а разницу отражать отдельно.

Что делать с копейками перед округлением до 5 рублей?

Определите правило заранее: либо округлять исходное значение с копейками напрямую (99,95 → 100), либо сначала отбрасывать дробную часть. Оба варианта корректны, но дают разные результаты на граничных значениях — зафиксируйте выбранный порядок в регламенте.

Пропадёт ли настройка округления после обновления конфигурации?

Настройки в виде цен и штатные механизмы при обновлении сохраняются. А вот прямые правки типовых модулей могут быть затёрты обновлением — поэтому доработки оформляйте через расширения конфигурации или внешние обработки.

Как округлить до 10 или 50 рублей той же формулой?

Замените шаг: Окр(Сумма / 10, 0) 10 для десятков, Окр(Сумма / 50, 0) 50 для пятидесяток. Формула универсальна — меняется только значение кратности.