Разработка и Конфигурация · 10 мин
Как в 1С убрать цифры после запятой
Как убрать цифры после запятой в 1С: функция Окр(), форматная строка, настройка разрядности цен и валюты. Пошаговые инструкции для пользователя и разработчика.
Лишние знаки после запятой в 1С появляются в двух ситуациях: при расчётах (цены с копейками, количество с долями) и при выводе данных на экран или печать. Способ убрать дробную часть зависит от того, где возникла проблема: в формуле модуля, в настройках конфигурации или в формате отображения поля. Важно понимать разницу между округлением значения и визуальным скрытием цифр — это принципиально разные операции с разными последствиями для учёта.
Если округлить значение функцией, число реально изменится в базе данных. Если применить форматную строку, значение останется прежним, изменится только его отображение. Ошибка в выборе метода приводит к расхождениям в отчётах: сумма на экране не совпадает с суммой в проводках, а копеечные разницы копятся и мешают закрытию периода.
В статье разобраны основные инструменты: функция Окр() во встроенном языке, форматная строка ЧДЦ, настройка разрядности цен и валюты в типовых конфигурациях, а также округление в запросах и печатных формах.
Различие между округлением значения и форматом отображения
Округление значения — это математическая операция. Было 156,78, стало 157. Новое значение записывается в реквизит документа, регистр или переменную и участвует во всех последующих расчётах. Такой подход нужен, когда дробная часть недопустима по правилам учёта: например, количество штучного товара не может быть дробным.
Формат отображения меняет только картинку на экране или в печатной форме. В базе по-прежнему хранится 156,78, но пользователь видит 157. Это удобно для компактных отчётов и управленческих форм, однако опасно тем, что итоги «на глаз» не сойдутся: три строки по 0,5 отобразятся как 1, 1 и 1, а сумма покажет 2 вместо ожидаемых 3.
Правило выбора простое: если дробная часть не должна существовать по смыслу учёта — округляйте значение. Если дробная часть нужна для точности расчётов, но мешает восприятию — применяйте формат. Смешивать подходы в одном документе не стоит.
Как выбрать действие
Функция Окр() во встроенном языке 1С
Основной инструмент разработчика — функция Окр(Число, Разрядность, РежимОкругления). Чтобы убрать все знаки после запятой, вторым параметром передают 0: Окр(Сумма, 0). Результат — целое число, округлённое по выбранному правилу.
Третий параметр управляет направлением округления. Значение РежимОкругления.Окр15как20 округляет 0,5 вверх (классическое «бухгалтерское» правило), а Окр15как10 округляет 0,5 до ближайшего чётного. В типовых конфигурациях чаще применяется первый вариант, он привычен пользователям и совпадает с ожиданиями при проверке на калькуляторе.
Если нужно не округлить, а просто отбросить дробную часть, используйте функцию Цел(): Цел(156,99) вернёт 156. Для округления всегда вверх применяют конструкцию вида Цел(Число) + ?(Число > Цел(Число), 1, 0) — прямой функции «вверх» в платформе нет.
СуммаБезКопеек = Окр(СуммаСКопейками, 0, РежимОкругления.Окр15как20); // 156,78 -> 157
ЦелаяЧасть = Цел(СуммаСКопейками); // 156,78 -> 156, дробная часть отброшенаТипичное место применения — расчёт цен и скидок в документах. Скидка 13% от 999 рублей даёт длинную дробь; если её не округлить до записи в табличную часть, итог по документу будет с копейками, а при оплате возникнет расхождение с фактической суммой.
Форматная строка: убираем цифры только на экране
Функция Формат() и свойство «Формат» у полей формы управляют представлением числа. Конструкция Формат(Сумма, "ЧДЦ=0") выводит число без дробной части, при этом само значение не меняется. Дополнительно полезны параметры ЧН=0 (показывать ноль вместо пустоты) и ЧГ=0 (убрать разделитель групп разрядов).
В формах и отчётах на СКД формат задаётся без кода: откройте свойства поля, найдите параметр «Формат» и укажите ЧДЦ=0. В макетах печатных форм формат прописывается либо в свойствах параметра ячейки, либо при выводе через Формат() в коде.
- 1Откройте настройки отчёта и перейдите на закладку с выбранными полями
- 2Найдите нужное числовое поле и откройте его свойства (Оформление)
- 3В параметре Формат укажите ЧДЦ=0
- 4Сформируйте отчёт и проверьте: дробная часть скрыта, итоги считаются от полных значений
Помните о побочном эффекте: пользователь, выгрузивший отчёт в Excel, увидит в ячейках полные значения с дробной частью, если выгрузка идёт данных, а не текста. Если требуется, чтобы и в выгрузке были целые числа, округляйте значения в запросе или коде до вывода.
Округление в запросах
В языке запросов 1С есть функция ВЫРАЗИТЬ, которая приводит число к заданной разрядности: ВЫРАЗИТЬ(Сумма КАК ЧИСЛО(15, 0)). Важно понимать, что приведение типа в запросе выполняет округление по правилам платформы, а не простое усечение, поэтому 156,78 превратится в 157.
Если нужно именно отбросить дробную часть, в чистом запросе прямой функции нет — приходится либо обрабатывать результат в коде после выборки, либо использовать приёмы с вычитанием остатка от деления. На практике проще выбрать данные как есть и пройтись по ним функцией Окр() или Цел() в модуле.
При округлении в запросе следите за итогами: если округлить каждую строку до целого, сумма округлённых строк может отличаться от округлённой суммы исходных строк на несколько единиц. Для отчётов, где итог должен совпадать с бухгалтерскими данными, округляйте итоговое значение, а не строки.
Настройка разрядности в типовых конфигурациях
В типовых решениях (Управление торговлей, ERP, Комплексная автоматизация) точность цен и сумм настраивается централизованно. В карточке валюты задаётся количество дробных знаков для сумм, а в параметрах учёта — разрядность цен. Если во всех документах появились лишние знаки после запятой, первым делом проверьте эти настройки, а не код.
Для валюты: откройте справочник валют, найдите нужную и проверьте параметры отображения и точности. Для цен в торговых конфигурациях путь обычно ведёт через настройки параметров учёта или раздел ценообразования, где задаётся количество знаков после запятой для цен и скидок.
В «Бухгалтерии предприятия» суммы в проводках жёстко хранятся с копейками — это требование учёта, и убрать их нельзя. Но можно управлять отображением в отчётах: многие типовые отчёты позволяют настроить формат чисел через оформление, а печатные формы при необходимости дорабатываются с округлением.
Округление в печатных формах и при обмене данными
В печатных формах дробная часть убирается двумя путями. Первый — в свойствах параметра ячейки макета указать формат ЧДЦ=0, тогда площадка просто не выведет знаки после запятой. Второй — округлить значение функцией Окр() перед передачей в макет, что надёжнее при последующей выгрузке в Excel или PDF.
При обмене данными (выгрузка прайсов, интеграция с сайтом, ЭДО) округляйте значения явно в коде перед формированием файла. Внешние системы часто не принимают дробные количества или требуют строго два знака в ценах; лишние цифры приводят к отказам загрузки на принимающей стороне.
Проверка результата и ограничения
После внесения изменений проверьте три вещи: как значение выглядит на экране, как оно хранится в базе и как выводится в печатную форму. Быстрый способ проверить хранение — открыть запись через консоль запросов или вывести значение в сообщение без форматирования: если видите дробную часть, значит, был применён только формат.
Учтите ограничение точности платформы: числовые реквизиты имеют фиксированную общую длину и разрядность дробной части, заданные в конфигураторе. Округлить «грубее», чем задано в типе, можно всегда, а вот хранить больше знаков, чем позволяет тип, нельзя — лишние цифры отсекаются при записи.
Как проверить результат
Выводится целое число без форматирования
Без формата видна дробная часть — применён только формат отображения
Сумма строк сходится с итогом
Итог отличается на несколько единиц — округлены строки вместо итога
В 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 выгружается само значение. Чтобы в файле были целые числа, округлите данные функцией Окр() до выгрузки либо выгружайте отформатированное текстовое представление.