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

Разработка и Конфигурация · 10 мин

Как в 1С убрать цифры после запятой

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

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

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

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

Различие между округлением значения и форматом отображения

Округление значения — это математическая операция. Было 156,78, стало 157. Новое значение записывается в реквизит документа, регистр или переменную и участвует во всех последующих расчётах. Такой подход нужен, когда дробная часть недопустима по правилам учёта: например, количество штучного товара не может быть дробным.

Формат отображения меняет только картинку на экране или в печатной форме. В базе по-прежнему хранится 156,78, но пользователь видит 157. Это удобно для компактных отчётов и управленческих форм, однако опасно тем, что итоги «на глаз» не сойдутся: три строки по 0,5 отобразятся как 1, 1 и 1, а сумма покажет 2 вместо ожидаемых 3.

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

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

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

Дробная часть недопустима по правилам учёта (штуки, целые рубли)Округляйте значение функцией Окр() до записи в базу
Точность нужна в расчётах, но мешает на экранеИспользуйте форматную строку ЧДЦ=0 без изменения данных
Копейки мешают во всех документах и отчётахПроверьте настройку разрядности валюты и цен в параметрах конфигурации

Функция Окр() во встроенном языке 1С

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

Третий параметр управляет направлением округления. Значение РежимОкругления.Окр15как20 округляет 0,5 вверх (классическое «бухгалтерское» правило), а Окр15как10 округляет 0,5 до ближайшего чётного. В типовых конфигурациях чаще применяется первый вариант, он привычен пользователям и совпадает с ожиданиями при проверке на калькуляторе.

Если нужно не округлить, а просто отбросить дробную часть, используйте функцию Цел(): Цел(156,99) вернёт 156. Для округления всегда вверх применяют конструкцию вида Цел(Число) + ?(Число > Цел(Число), 1, 0) — прямой функции «вверх» в платформе нет.

bsl
СуммаБезКопеек = Окр(СуммаСКопейками, 0, РежимОкругления.Окр15как20); // 156,78 -> 157
ЦелаяЧасть = Цел(СуммаСКопейками); // 156,78 -> 156, дробная часть отброшена

Типичное место применения — расчёт цен и скидок в документах. Скидка 13% от 999 рублей даёт длинную дробь; если её не округлить до записи в табличную часть, итог по документу будет с копейками, а при оплате возникнет расхождение с фактической суммой.

Форматная строка: убираем цифры только на экране

Функция Формат() и свойство «Формат» у полей формы управляют представлением числа. Конструкция Формат(Сумма, "ЧДЦ=0") выводит число без дробной части, при этом само значение не меняется. Дополнительно полезны параметры ЧН=0 (показывать ноль вместо пустоты) и ЧГ=0 (убрать разделитель групп разрядов).

В формах и отчётах на СКД формат задаётся без кода: откройте свойства поля, найдите параметр «Формат» и укажите ЧДЦ=0. В макетах печатных форм формат прописывается либо в свойствах параметра ячейки, либо при выводе через Формат() в коде.

Как задать формат поля в отчёте СКД
  1. 1
    Откройте настройки отчёта и перейдите на закладку с выбранными полями
  2. 2
    Найдите нужное числовое поле и откройте его свойства (Оформление)
  3. 3
    В параметре Формат укажите ЧДЦ=0
  4. 4
    Сформируйте отчёт и проверьте: дробная часть скрыта, итоги считаются от полных значений

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

Округление в запросах

В языке запросов 1С есть функция ВЫРАЗИТЬ, которая приводит число к заданной разрядности: ВЫРАЗИТЬ(Сумма КАК ЧИСЛО(15, 0)). Важно понимать, что приведение типа в запросе выполняет округление по правилам платформы, а не простое усечение, поэтому 156,78 превратится в 157.

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

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

Настройка разрядности в типовых конфигурациях

В типовых решениях (Управление торговлей, ERP, Комплексная автоматизация) точность цен и сумм настраивается централизованно. В карточке валюты задаётся количество дробных знаков для сумм, а в параметрах учёта — разрядность цен. Если во всех документах появились лишние знаки после запятой, первым делом проверьте эти настройки, а не код.

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

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

Округление в печатных формах и при обмене данными

В печатных формах дробная часть убирается двумя путями. Первый — в свойствах параметра ячейки макета указать формат ЧДЦ=0, тогда площадка просто не выведет знаки после запятой. Второй — округлить значение функцией Окр() перед передачей в макет, что надёжнее при последующей выгрузке в Excel или PDF.

При обмене данными (выгрузка прайсов, интеграция с сайтом, ЭДО) округляйте значения явно в коде перед формированием файла. Внешние системы часто не принимают дробные количества или требуют строго два знака в ценах; лишние цифры приводят к отказам загрузки на принимающей стороне.

Типичные ошибки
01
Скрытие копеек форматом вместо округления — итоги документа не сходятся с оплатой
02
Округление каждой строки отчёта — сумма строк расходится с итогом на несколько рублей
03
Изменение разрядности типа реквизита без копии базы — дробные части теряются безвозвратно
04
Использование Цел() вместо Окр() там, где нужно математическое округление — 156,99 превращается в 156 вместо 157

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

После внесения изменений проверьте три вещи: как значение выглядит на экране, как оно хранится в базе и как выводится в печатную форму. Быстрый способ проверить хранение — открыть запись через консоль запросов или вывести значение в сообщение без форматирования: если видите дробную часть, значит, был применён только формат.

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

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

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

Значение в базе
Норма

Выводится целое число без форматирования

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

Без формата видна дробная часть — применён только формат отображения

Итоги отчёта
Норма

Сумма строк сходится с итогом

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

Итог отличается на несколько единиц — округлены строки вместо итога

Печатная форма и выгрузка
Норма

В Excel и PDF те же целые значения

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

В выгрузке видны копейки — значения не округлены до вывода

Итог

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

Окр(Число, 0) меняет само значение, формат ЧДЦ=0 — только его отображение. Выбирайте метод по смыслу учёта, округляйте итоги, а не строки, и никогда не сужайте разрядность типов на рабочей базе без резервной копии.

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

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

Прямой функции в платформе нет. Используйте конструкцию: Результат = Цел(Число) + ?(Число > Цел(Число), 1, 0). Для отрицательных чисел логику нужно скорректировать, поэтому проверяйте формулу на граничных примерах.

Почему после применения ЧДЦ=0 итоги отчёта не сходятся?

Формат скрывает дробную часть только визуально. Строки 0,5 и 0,5 отображаются как 1 и 1, но их сумма 1,0 показывается как 1, а не 2. Если визуальное совпадение критично, округляйте значения в запросе или коде.

Можно ли убрать копейки во всех документах сразу без доработок?

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

Чем Цел() отличается от Окр()?

Цел() просто отбрасывает дробную часть: 156,99 станет 156. Окр(Число, 0) округляет по математическим правилам: 156,99 станет 157. Для денежных сумм почти всегда нужен Окр(), иначе возникают систематические занижения.

Как убрать знаки после запятой в уже проведённых документах?

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

Почему в выгрузке в Excel видны копейки, хотя на экране их нет?

Потому что на экране применён формат отображения, а в Excel выгружается само значение. Чтобы в файле были целые числа, округлите данные функцией Окр() до выгрузки либо выгружайте отформатированное текстовое представление.