Разработка и Конфигурация · 11 мин
Как убрать нули из количества в 1С
Как убрать лишние нули в количестве в 1С: настройка формата в печатных формах, округление в документах, изменение точности в коде и типовых конфигурациях.
Лишние нули в количестве — одна из самых частых претензий к печатным формам и отчётам 1С: вместо «5» выводится «5,000», вместо «12,5» — «12,500». Причина почти всегда одна: поле количества имеет тип «Число» с фиксированной точностью (обычно три знака после запятой), и платформа по умолчанию отображает все дробные разряды, даже если они нулевые.
Способ убрать нули зависит от того, где именно они мешают: в печатной форме документа, на экране в табличной части, в отчёте на СКД или при выгрузке данных. Ниже разобраны все основные сценарии — от простой настройки формата без изменения конфигурации до правки запросов и макетов в конфигураторе.
Важно понимать: отображение нулей и хранение данных — разные вещи. В большинстве случаев нули убираются только визуально, само значение в базе не меняется, и это безопасно. Опасность возникает лишь тогда, когда вместо форматирования начинают менять точность реквизита или округлять данные в запросах — это уже влияет на расчёты.
Откуда берутся нули в количестве
Реквизит «Количество» в типовых конфигурациях 1С (УТ, ERP, Бухгалтерия, УНФ) объявлен как число длиной 15–25 знаков с точностью 3 знака после запятой. Это нужно для товаров, которые учитываются в дробных единицах: метры, килограммы, литры. Платформа при выводе такого числа показывает все три знака, поэтому целое количество отображается как «5,000».
На экране в табличных частях документов отображение обычно уже настроено разработчиками типовой конфигурации, и нули там не мешают. Проблема чаще всего всплывает в трёх местах: самодельные или доработанные печатные формы, отчёты, собранные на СКД без настройки оформления, и выгрузки в Excel или текстовые файлы, куда число попадает строкой «как есть».
Убрать нули в печатной форме через функцию Формат()
Если печатная форма формируется программно (в модуле менеджера документа или во внешней печатной форме), самый надёжный способ — обернуть вывод количества в функцию Формат(). Она преобразует число в строку по заданному шаблону, и лишние нули исчезают.
Базовый вариант выглядит так:
Область.Параметры.Количество = Формат(СтрокаТаблицы.Количество, "ЧДЦ=3; ЧН=0; ЧГ=");
Здесь ЧДЦ=3 задаёт максимум три знака после запятой, ЧН=0 выводит ноль вместо пустой строки для нулевых значений, а ЧГ= убирает разделитель групп разрядов (пробел между тысячами). Однако шаблон ЧДЦ=3 всё равно выведет «5,000». Чтобы нули в конце дробной части отбрасывались, нужен другой подход — выводить число без фиксированной длины дробной части:
Представление = Строка(СтрокаТаблицы.Количество);
Либо с контролем максимальной точности через форматную строку с «мягким» числом разрядов: в таком случае часто используют приём с проверкой — если остаток от деления на 1 равен нулю, форматируют как целое, иначе с тремя знаками.
Функция ПредставлениеКоличества(Количество)
Если Количество = Цел(Количество) Тогда
Возврат Формат(Количество, "ЧДЦ=0; ЧН=0; ЧГ=");
Иначе
Возврат Формат(Количество, "ЧДЦ=3; ЧН=0; ЧГ=");
КонецЕсли;
КонецФункцииТакая функция выводит «5» для целых значений и «12,5» или «0,125» для дробных. Это самый предсказуемый вариант для печатных форм, где к оформлению предъявляют требования и бухгалтерия, и склад.
Настройка формата прямо в макете табличного документа
Если макет печатной формы — табличный документ, формат можно задать без кода, прямо в свойствах ячейки. Откройте макет в конфигураторе, выделите ячейку с параметром количества, откройте палитру свойств и найдите свойство «Формат».
В поле формата укажите конструкцию вида ЧДЦ=3; ЧН=0; ЧГ= или выберите нужные параметры через диалог конструктора форматной строки. Обратите внимание: формат ячейки применяется, только если в параметр подставляется число, а не уже готовая строка. Если в коде значение предварительно преобразуется через Строка() или Формат(), настройка ячейки игнорируется.
Убрать нули в отчётах на СКД и в динамических списках
В отчётах на системе компоновки данных формат поля настраивается без программирования. Откройте настройки отчёта, перейдите на вкладку «Наборы данных» в схеме компоновки (или в пользовательском режиме — «Настройки» → расширенные), найдите поле «Количество» и для него задайте оформление: параметр «Формат» со значением ЧДЦ=3; ЧН=0; ЧГ=.
Если отчёт типовой и схема недоступна для редактирования пользователем, формат можно задать в режиме «Ещё» → «Изменить вариант отчёта» → «Оформление» для конкретного поля. В ряде конфигураций этот путь доступен только при включённых технических правах на изменение вариантов отчётов.
Когда требуется именно отбрасывать незначащие нули (а не фиксировать два знака), в выражении поля набора данных иногда применяют вычисляемое поле со строковым представлением. Это рабочий, но тяжёлый приём: поле перестаёт быть числом, ломается итоговая агрегация и сортировка. Используйте его только если итоги по этой колонке не нужны.
Округление и точность в запросах
Иногда нули нужно убрать не визуально, а фактически — например, при обмене с внешней системой, которая принимает количество только с двумя знаками. Тогда в запросе применяют функцию ВЫРАЗИТЬ:
ВЫРАЗИТЬ(Таблица.Количество КАК ЧИСЛО(15, 2)) КАК Количество
Это округлит значение до двух знаков уже на уровне выборки. Учтите, что округление идёт по арифметическим правилам, и при расхождении сумм (количество × цена) с исходными данными возможны копеечные разницы в итогах.
Для отбрасывания дробной части без округления используют конструкцию с вычитанием остатка или приведение к ЧИСЛО(15, 0) — но это уже изменение данных, а не их представления. Перед таким приёмом убедитесь, что потеря дробной части допустима для учёта: для штучного товара — да, для весового — почти всегда нет.
Изменение точности реквизита: когда это оправдано
Радикальный вариант — изменить точность реквизита «Количество» в конфигураторе с 3 до 0 или 2. После этого нули исчезнут везде, потому что платформа физически перестанет хранить лишние разряды. Но это самый рискованный путь.
Во-первых, в типовой конфигурации изменение метаданных снимает объекты с полной поддержки и усложняет обновления. Во-вторых, при реструктуризации существующие дробные значения будут округлены — если в базе есть товары с количеством 0,5 или 1,25, данные исказятся. В-третьих, точность часто задана не в самом реквизите, а в определяемом типе или общем реквизите, и менять её нужно централизованно, что затрагивает десятки объектов.
Сравнение вариантов
Подходит для доработанных и внешних печатных форм. Гибко, безопасно, не трогает данные. Требует доступа к модулю формирования печати.
Простой вариант без кода. Работает только если в параметр передаётся число, а не строка.
Правильный способ для отчётов. Не ломает итоги и сортировку, доступен без изменения конфигурации.
Для обменов и выгрузок с жёсткими требованиями к разрядности. Меняет сами значения — возможны расхождения итогов.
Решает проблему глобально, но рискованно: реструктуризация округлит данные, усложнится обновление типовой конфигурации.
Проверка результата и типичные ошибки
После доработки проверьте вывод на трёх контрольных значениях: целое количество (например, 7 — должно выводиться «7», а не «7,000»), дробное с незначащими нулями (2,5 — должно быть «2,5», а не «2,500») и дробное с полной точностью (0,125 — должно выводиться без потери разрядов). Также проверьте нулевое количество: при шаблоне без ЧН=0 ноль может отобразиться пустой строкой, что в печатной форме выглядит как ошибка.
Как проверить результат
Выводится без дробной части: «5»
Выводится «5,000» или пустая ячейка
«2,5» или «0,125» с сохранением значащих разрядов
«2,500» или обрезанное «0,12»
Итоги считаются и совпадают с данными до доработки
Итоги пустые или расходятся — поле преобразовано в строку
Отображается «0»
Пустая строка вместо нуля
Частые вопросы
Можно ли убрать нули в типовой печатной форме без доработки конфигурации?
В большинстве типовых конфигураций — нет, формат представления количества зашит в модуле формирования печатной формы. Корректный путь — подключить внешнюю печатную форму через механизм «Дополнительные отчеты и обработки», скопировав типовую и изменив форматирование количества. Тогда доработка переживёт обновления.
Почему после Формат(Количество, "ЧДЦ=3") нули всё равно выводятся?
Потому что ЧДЦ=3 фиксирует ровно три знака после запятой, дополняя их нулями. Чтобы незначащие нули отбрасывались, используйте проверку на целое число с двумя вариантами форматирования или преобразование Строка(), которое выводит число без дополняющих нулей.
Как убрать нули только для штучных товаров, а для весовых оставить?
Добавьте в функцию форматирования условие по единице измерения: если единица — штуки (или входит в список целочисленных единиц), форматируйте с ЧДЦ=0, иначе с ЧДЦ=3. Единицу измерения берите из той же строки табличной части, что и количество.
Влияет ли изменение формата на данные в базе?
Нет. Функция Формат(), формат ячейки макета и оформление поля СКД меняют только представление значения при выводе. Данные в базе остаются прежними. Меняют данные только ВЫРАЗИТЬ в запросе, округление в коде и изменение точности реквизита.
Нули появились после выгрузки в Excel — где их убирать?
Если выгрузка формируется кодом 1С, форматируйте значение перед записью в ячейку. Если файл создаётся из табличного документа, настройте формат ячейки макета. Если же форматирование делает сам Excel, задайте числовой формат столбца уже в нём — исходные данные 1С при этом ни при чём.
Что делать, если нули мешают в наборе «5,000 шт» с единицей измерения?
Форматируйте число и единицу измерения отдельно, а затем собирайте строку конкатенацией: Формат(Количество, "ЧДЦ=0; ЧН=0; ЧГ=") + " " + ЕдиницаИзмерения. Не пытайтесь убрать нули из уже склеенной строки функциями замены — это ломает значения вроде «10,000».
Что важно запомнить
Нули в количестве — следствие точности реквизита, а не ошибка данных. Убирайте их форматированием: Формат() в коде печатных форм, формат ячейки в макете, оформление поля в СКД. Не преобразуйте количество в строку там, где нужны итоги, и не меняйте точность реквизита без анализа хранимых данных — это единственные по-настоящему рискованные приёмы.