Как отобразить ноль в табличной части для числового реквизита в 1С 7.7

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

В платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с особенностью графического движка: по умолчанию нулевые значения в числовых колонках табличных частей документов, справочников или журналов не отображаются. Вместо ожидаемого «0» пользователь видит пустую ячейку. Это может вводить в заблуждение, особенно когда важно отличить незаполненное значение от осознанно введенного нуля.

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

Причина скрытия нулей в 1С 7.7

Разберем ситуацию: в конфигураторе реквизит определен как Число. При выводе на форму в табличную часть 1С автоматически применяет стандартное форматирование. Исторически в интерфейсах 7.7 было принято «очищать» таблицу от лишних нулей для лучшей читаемости, чтобы значимые цифры выделялись на фоне пустоты. Однако программного переключателя «Отображать ноль» в свойствах колонки типа Число просто не существует. Поэтому нам придется использовать обходные пути.

Способ 1. Использование текстовой колонки с формулой

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

  1. Откройте форму документа или справочника в конфигураторе.
  2. В табличной части создайте новую колонку.
  3. В свойствах новой колонки на закладке «Общие» установите тип значения «Текст».
  4. Перейдите на закладку «Функция» или используйте поле «Формула» на закладке «Общие» (в зависимости от типа таблицы).
  5. Пропишите выражение, которое будет преобразовывать ваше число в строку.

Рассмотрим пример кода для поля «Формула»:


// Предположим, наш реквизит называется Сумма
Формат(Сумма, "Ч10.2")

Если стандартный формат все равно «съедает» ноль, можно использовать более жесткое условие в формуле:

?(Сумма = 0, "0.00", Формат(Сумма, "Ч10.2"))

Важный нюанс: Текстовая колонка предназначена только для вывода данных. Пользователь не сможет кликнуть по ней и ввести новое число. Чтобы сохранить возможность редактирования, старую числовую колонку делают невидимой (ширина 0) или размещают рядом, а текстовую используют только для красоты.

Способ 2. Настройка форматной строки

Выясним, как работают управляющие символы в функции Формат(). Платформа 7.7 имеет специфический синтаксис форматных строк, который позволяет управлять отображением знаков.

Проанализируем основные спецификаторы для чисел:

Если мы работаем с объектом ТаблицаЗначений, который выводится на форму, мы можем задать формат при программном создании колонок. Разберем пример:


ТЗ = СоздатьОбъект("ТаблицаЗначений");
// Синтаксис: НоваяКолонка(Идентификатор, Тип, Длина, Точность, Заголовок, Ширина, Формат)
ТЗ.НоваяКолонка("Сумма", "Число", 15, 2, "Сумма", 10, "Ч10.2");
ТЗ.НоваяСтрока();
ТЗ.Сумма = 0;
// В некоторых случаях даже это не заставит 1С показать 0 в числовом типе,
// поэтому лучше создавать колонку как текстовую

Способ 3. Подмена типа в Таблице Значений

Если вы используете ТаблицуЗначений на форме как произвольный элемент управления (не связанный напрямую с реквизитами документа), то самый простой способ увидеть «0» — это хранить данные в колонке с типом «Строка» или вообще без указания типа.

Рассмотрим ситуацию: если колонка не имеет строгого типа «Число», 1С выводит в нее ровно то, что вы туда записали. Посмотрим на пример заполнения:


ТЗ.НоваяКолонка("ОтображаемаяСумма"); // Тип не задан
ТЗ.НоваяСтрока();
НулевоеЗначение = 0;
ТЗ.ОтображаемаяСумма = Формат(НулевоеЗначение, "Ч10.2"); 
// Теперь в ячейке будет строковый ноль "0.00", который не исчезнет

Способ 4. Реализация редактируемого нуля (сложный метод)

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

  1. Создаем в ТЧ две колонки: ЧислоРеал (тип Число) и ЧислоТекст (тип Текст).
  2. В формуле колонки ЧислоТекст пишем: ПредставлениеЧисла().
  3. Создаем функцию в модуле формы:

Функция ПредставлениеЧисла()
    Возврат ?(ЧислоРеал = 0, "0", Строка(ЧислоРеал));
КонецФункции

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

Краткий итог по форматным строкам

Чтобы быстро сориентироваться, используйте эту шпаргалку для функции Формат(Значение, "Строка"):

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

← На главную