Как настроить вывод числа с лидирующим знаком плюс в формах списка 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Метод 1: Использование условного оформления динамического списка

Этот метод является наиболее «правильным» и стандартным для управляемых форм. Он позволяет изменить только визуальное представление данных, не затрагивая само значение числа. Это критически важно для сохранения возможности правильной сортировки и автоматического подсчета итогов в подвалах списка.

Рассмотрим пошагово процесс настройки в конфигураторе:

  1. Откроем форму списка нужного объекта (например, регистра сведений).
  2. Перейдем на вкладку «Список» и найдем свойство «Условное оформление».
  3. Добавим новый элемент оформления.
  4. В поле «Оформление» выберем параметр Формат. В открывшемся окне конструктора форматной строки в поле «Формат» введем выражение: ЧФ=+Ч. Это укажет системе принудительно выводить знак плюс для положительных чисел.
  5. В поле «Условие» укажем: Значение > 0 (где Значение — это имя вашей колонки с числом).
  6. В поле «Оформляемые поля» выберем именно ту колонку, в которой должно отображаться число со знаком.

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

Метод 2: Расширенный синтаксис форматной строки

Малоизвестный, но крайне эффективный способ заключается в использовании полной структуры форматной строки. Платформа 1С позволяет задать разные форматы для положительных, отрицательных и нулевых значений в одной строке, разделяя их точкой с запятой. Синтаксис выглядит так: ЧФ='<ФорматПоложительных>;<ФорматОтрицательных>;<ФорматНуля>'.

Разберем пример такой строки:

ЧФ='+ #0.00; - #0.00; 0.00'

Если мы установим такое значение в свойство «Формат» непосредственно в свойствах колонки пути к данным (без всякого условного оформления), система будет:

Этот метод еще более производителен, так как не требует от системы проверки условий оформления для каждой строки списка. Однако стоит учитывать, что в некоторых версиях платформы (особенно старых) такая сложная форматная строка может интерпретироваться неоднозначно, поэтому всегда проверяйте результат в режиме «1С:Предприятие».

Метод 3: Вычисляемые поля в запросе динамического списка

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


ВЫБРАТЬ
    Регистр.Сумма КАК СуммаЧислом,
    ВЫБОР
        КОГДА Регистр.Сумма > 0 ТОГДА "+"
        ИНАЧЕ ""
    КОНЕЦ КАК ЗнакСуммы
ИЗ
    РегистрСведений.НашРегистр КАК Регистр

После этого мы можем применить прием группировки колонок. В настройках формы объединим поле ЗнакСуммы и СуммаЧислом в одну группу с режимом отображения «В одной колонке». Таким образом, текстовый знак будет визуально прижат к числу. Однако помните: сортировка при клике на заголовок такой группы может работать непредсказуемо, так как она будет происходить по первому полю в группе.

Метод 4: Программная установка формата

Если вы создаете форму или добавляете колонки динамически из кода, вам потребуется программная установка оформления. Рассмотрим, как это сделать в процедуре ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    НовыйЭлемент = УсловноеОформление.Элементы.Добавить();
    
    // Устанавливаем формат
    ПолеФормата = НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("Формат", "ЧФ='+ #0'");
    
    // Настраиваем условие: Сумма > 0
    ЭлементУсловия = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Сумма");
    ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
    ЭлементУсловия.ПравоеЗначение = 0;
    
    // Указываем оформляемое поле
    ОформляемоеПоле = НовыйЭлемент.Поля.Элементы.Добавить();
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Сумма");
    
КонецПроцедуры

Этот программный метод гарантирует, что оформление будет применено корректно, даже если пользователь сбросит настройки формы к стандартным.

Важные нюансы и типичные ошибки

Проанализируем возможные проблемы, с которыми сталкиваются разработчики:

  1. Преобразование в текст: Часто новички пытаются сразу в запросе преобразовать число в строку с приклеенным плюсом. Никогда так не делайте для основных колонок списка. Строковая сортировка отличается от числовой: строка "+100" при сортировке окажется «меньше», чем строка "+2", так как сравнение идет посимвольно.
  2. Смещение цифр: При использовании знаков плюс и минус цифры в колонке могут «плавать» (не стоять ровно друг под другом), так как символ «+» может быть шире или уже символа «-». Чтобы колонки выглядели идеально ровно, рекомендуется в условном оформлении использовать моноширинный шрифт (например, Courier New) для этих полей.
  3. Производительность: Если в списке тысячи строк и десятки условных оформлений, это может замедлить прокрутку. Метод с прямой установкой форматной строки (Метод 2) работает быстрее, чем через условное оформление (Метод 1).

Выяснив причину того, почему стандартное форматирование не всегда подходит, мы можем сделать вывод: для большинства задач идеально подходит Условное оформление с параметром ЧФ=+Ч. Оно гибкое, понятное и сохраняет все математические свойства данных.

← На главную