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

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

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

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

Это один из самых мощных и гибких инструментов платформы. Условное оформление позволяет изменять визуальное представление данных, не меняя сами данные в реквизитах. Разберем, как программно настроить замену текста для колонки таблицы или отдельного поля.

Проанализируем ситуацию: у нас есть числовое поле, и мы хотим, чтобы при значении «0» выводился текст «Ничего не будет», а при «1» — «Уходи и дверь закрой». В коде это будет выглядеть следующим образом:


// Пример настройки условного оформления в процедуре ПриСозданииНаСервере
ЭлементОформления = УсловноеОформление.Элементы.Добавить();

// Устанавливаем условие: когда значение поля равно 1
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(ЭлементОформления.Отбор, "ИмяРеквизитаФормы", 1, ВидСравненияКомпоновкиДанных.Равно);

// Задаем текст, который увидит пользователь
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "Уходи и дверь закрой");

// Указываем, к какому полю применить оформление
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ИмяПоляФормы");

Важно помнить, что если поле связано с данными объектного типа (например, числом), то через Оформление["ИмяКолонки"].УстановитьЗначениеПараметра("Текст", "...") можно управлять выводом только внутри строк табличных частей или динамических списков.

Метод 2. Использование списка выбора (ChoiceList)

Выясним, как сделать подмену текста наиболее естественным способом для полей ввода. Если набор значений заранее известен, лучше всего использовать свойство РежимВыбораИзСписка. В этом случае поле данных остается, например, числовым, но интерфейс отображает строковое «представление» этого числа.

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

  1. Установите у элемента формы (Поле ввода) свойство РежимВыбораИзСписка в значение Истина.
  2. Заполните список выбора значениями и их текстовыми описаниями.

Программно это реализуется так:


// В процедуре ПриСозданииНаСервере
Список = Элементы.ИмяПоляФормы.СписокВыбора;
Список.Добавить(0, "Ничего не будет");
Список.Добавить(1, "Уходи и дверь закрой");

Теперь, когда в реквизите будет лежать число 0, пользователь увидит в поле текст «Ничего не будет». Это чистый и эффективный способ, не требующий создания лишних строковых реквизитов.

Метод 3. Свойства «Подсказка ввода» и формат «ЧН»

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

Для числовых данных удобно использовать параметр формата ЧН (Число Ноль). Если в строке формата указать ЧН='Пусто', то вместо нуля система всегда будет отображать заданное слово. Это настраивается в свойстве «Формат» элемента формы.

Если же поле текстовое или ссылочное и оно не заполнено, используйте свойство ПодсказкаВвода (InputHint). Этот текст будет отображаться серым цветом, пока пользователь не начнет вводить данные или не выберет значение. Это отлично помогает ориентировать пользователя в интерфейсе без использования программного кода.

Метод 4. ОбработкаПолученияПредставления в модуле менеджера

Если ваше поле формы связано со ссылочным типом (Справочник, Документ), мы можем переопределить отображаемый текст для всех форм системы сразу. Для этого используется обработчик ОбработкаПолученияПредставления в модуле менеджера соответствующего объекта.

Разберем пример, где для справочника «Сотрудники» нам нужно всегда выводить фамилию вместе с табельным номером:


// В модуле менеджера справочника Сотрудники
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Представление = Данные.Наименование + " (таб. №" + Данные.Код + ")";
КонецПроцедуры

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

Метод 5. Использование вычисляемых полей в динамических списках

Часто произвольный текст нужно вывести в реестре документов или справочнике. В этом случае правильнее всего использовать Произвольный запрос в динамическом списке. Мы можем создать виртуальную колонку прямо в тексте запроса.

Проанализируем пример запроса:


ВЫБРАТЬ
    Ссылка,
    Дата,
    Номер,
    ВЫБОР
        КОГДА ПометкаУдаления ТОГДА "Объект в корзине"
        ИНАЧЕ "Актуальный документ"
    КОНЕЦ КАК СтатусТекстом
ИЗ
    Документ.РеализацияТоваровУслуг

Добавив такую колонку, мы получаем готовое текстовое описание, которое можно сортировать и фильтровать, как любое обычное поле.

Метод 6. Форматированная строка для сложного оформления

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

Рассмотрим, как собрать сложную строку программно:


ЦветТекста = Новый Цвет(255, 0, 0); // Красный
ТекстДляВывода = Новый ФорматированнаяСтрока("Внимание: ", , ЦветТекста, , "https://mysite.com");
ЭтаФорма.РеквизитТекст = ТекстДляВывода;

Резюмируем: для простых подмен в таблицах используйте Условное оформление. Для полей ввода с фиксированным набором значений — Списки выбора. Если нужно глобально изменить наименование объекта — используйте Модуль менеджера. Создание дополнительных «строковых» реквизитов-дублей — это крайняя мера, которой стоит избегать для сохранения чистоты архитектуры вашего решения.

← На главную