Как изменить представление числа на текст в табличной части управляемой формы 1С?

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

Часто при разработке интерфейсов на управляемых формах (УФ) в 1С возникает необходимость изменить визуальное представление данных в табличной части. Например, в базе хранятся числовые значения, но для удобства пользователя мы хотим выводить осмысленный текст: вместо 0 отображать пустую строку, вместо 1 — слово «Начало», а вместо 2 — «Конец». Рассмотрим подробнее, как правильно решить эту задачу.

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

Способ 1: Настройка условного оформления интерактивно в конфигураторе

Главное правило, которое нужно запомнить: условное оформление настраивается в свойствах самой формы, а не у элемента табличной части. Выполним настройку интерактивно:

  1. Откройте управляемую форму в конфигураторе.
  2. В палитре свойств формы (самый верхний корневой элемент дерева элементов) найдите свойство УсловноеОформление и нажмите ссылку «Открыть».
  3. Нажмите кнопку «Добавить», чтобы создать новое правило оформления (например, для значения 1).
  4. Перейдите на вкладку Оформление, найдите параметр Текст, установите флажок и впишите строку Начало.
  5. Перейдите на вкладку Условие и добавьте новый отбор: выберите поле Объект.ИмяТабличнойЧасти.ИмяРеквизита, вид сравнения установите Равно, а значение — 1.
  6. На вкладке Оформляемые поля добавьте ту колонку вашей табличной части на форме, в которой нужно подменить отображение текста.
  7. Повторите шаги с 3 по 6 для создания правила для значения 2 с заменой текста на Конец.

Способ 2: Как скрыть ноль без условного оформления

Если наша задача состоит только в том, чтобы вместо 0 выводилась пустая строка "", создавать отдельное правило условного оформления не обязательно. Гораздо проще и оптимальнее использовать стандартную форматную строку. Посмотрим на пример:

  1. Выделите нужный элемент (колонку табличной части) на форме.
  2. В палитре свойств найдите поле Формат.
  3. Нажмите кнопку выбора и перейдите на вкладку «Число».
  4. В поле Представление нуля (которое соответствует параметру форматной строки ЧН=) просто поставьте пробел или оставьте его пустым. Следите за тем, чтобы галочка использования параметра была включена. В виде форматной строки это будет выглядеть как ЧН= .

Способ 3: Программная настройка условного оформления

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Добавляем новый элемент условного оформления
    ЭлементОформления = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
    
    // 1. Настраиваем само оформление: устанавливаем параметр "Текст"
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "Начало");
    
    // 2. Устанавливаем условие (Значение колонки = 1)
    ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ИмяТабличнойЧасти.ИмяКолонки");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = 1;
    
    // 3. Указываем оформляемое поле (элемент колонки на форме)
    ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ИмяТабличнойЧастиИмяКолонки"); 
    
КонецПроцедуры

Аналогичный блок кода добавляется и для значения 2 с текстом «Конец».

Способ 4: Альтернативный подход (архитектурный)

Выясним причину использования числовых значений. С архитектурной точки зрения платформы 1С:Предприятие, если у вас есть конечный и строго фиксированный набор состояний (например, статусы «Начало» и «Конец»), использование примитивного типа Число для их хранения считается плохой практикой.

Вместо этого настоятельно рекомендуется создать в дереве метаданных конфигурации новый объект типа Перечисление (например, Перечисление.Этапы) со значениями Начало и Конец. В этом случае:

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

← На главную