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

Разработка и Конфигурация · 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 равен нулю, форматируют как целое, иначе с тремя знаками.

bsl
Функция ПредставлениеКоличества(Количество)
	Если Количество = Цел(Количество) Тогда
		Возврат Формат(Количество, "ЧДЦ=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»

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

Пустая строка вместо нуля

Типичные ошибки
01
Преобразование количества в строку в запросе отчёта — ломаются итоги, группировки и сортировка по числу.
02
Изменение точности реквизита без анализа данных — существующие дробные значения округляются при реструктуризации, учёт искажается.
03
Настройка формата ячейки макета, когда в параметр уже передана строка — формат не применяется, нули остаются.
04
Шаблон без ЧН=0 — нулевое количество выводится пустотой, в документах это выглядит как пропуск данных.
05
Правка типового модуля печати вместо внешней печатной формы — доработка теряется при ближайшем обновлении конфигурации.

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

Можно ли убрать нули в типовой печатной форме без доработки конфигурации?

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

Почему после Формат(Количество, "ЧДЦ=3") нули всё равно выводятся?

Потому что ЧДЦ=3 фиксирует ровно три знака после запятой, дополняя их нулями. Чтобы незначащие нули отбрасывались, используйте проверку на целое число с двумя вариантами форматирования или преобразование Строка(), которое выводит число без дополняющих нулей.

Как убрать нули только для штучных товаров, а для весовых оставить?

Добавьте в функцию форматирования условие по единице измерения: если единица — штуки (или входит в список целочисленных единиц), форматируйте с ЧДЦ=0, иначе с ЧДЦ=3. Единицу измерения берите из той же строки табличной части, что и количество.

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

Нет. Функция Формат(), формат ячейки макета и оформление поля СКД меняют только представление значения при выводе. Данные в базе остаются прежними. Меняют данные только ВЫРАЗИТЬ в запросе, округление в коде и изменение точности реквизита.

Нули появились после выгрузки в Excel — где их убирать?

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

Что делать, если нули мешают в наборе «5,000 шт» с единицей измерения?

Форматируйте число и единицу измерения отдельно, а затем собирайте строку конкатенацией: Формат(Количество, "ЧДЦ=0; ЧН=0; ЧГ=") + " " + ЕдиницаИзмерения. Не пытайтесь убрать нули из уже склеенной строки функциями замены — это ломает значения вроде «10,000».

Итог

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

Нули в количестве — следствие точности реквизита, а не ошибка данных. Убирайте их форматированием: Формат() в коде печатных форм, формат ячейки в макете, оформление поля в СКД. Не преобразуйте количество в строку там, где нужны итоги, и не меняйте точность реквизита без анализа хранимых данных — это единственные по-настоящему рискованные приёмы.