В процессе разработки часто возникает задача визуального разделения информации в интерфейсе. Например, при выполнении групповой обработки документов пользователю важно сразу видеть результат: успешно обработанные строки должны быть выделены зеленым цветом, а ошибки — красным. Попытка изменить цвет обычного строкового реквизита целиком не дает нужного результата, так как в многострочном поле нам нужно раскрасить лишь отдельные фрагменты текста. В данной статье мы разберем несколько эффективных способов решения этой задачи в среде «1С:Предприятие 8».
Это самый простой и современный метод для управляемых форм, когда нужно вывести красиво оформленный текст в информационных целях. Объект ФорматированнаяСтрока позволяет комбинировать части текста с разными шрифтами, цветами и даже гиперссылками. Для изучения работы с этим механизмом можно использовать пример преобразования текста в форматированную строку.
Разберем алгоритм реализации:
Произвольный (или просто будем использовать программную переменную).Рассмотрим пример кода, который решает задачу автора темы:
// Создаем массив для хранения частей форматированной строки
ЧастиСтроки = Новый Массив;
// Добавляем успешное событие (зеленый цвет)
ЧастиСтроки.Добавить(Новый ФорматированнаяСтрока("По документу " + ДокументЗаказ + " полная оплата", , WebЦвета.Зеленый));
ЧастиСтроки.Добавить(Символы.ПС);
// Добавляем сообщение об ошибке (красный цвет)
ЧастиСтроки.Добавить(Новый ФорматированнаяСтрока(ДокументЗаказ + " не был записан.", , WebЦвета.Красный));
// Собираем итоговый объект и присваиваем его элементу формы
Элементы.ПолеДекорацииРезультат.Заголовок = Новый ФорматированнаяСтрока(ЧастиСтроки);
Важное ограничение: объект ФорматированнаяСтрока не предназначен для хранения в базе данных в обычных реквизитах типа «Строка». Он используется исключительно для визуализации данных на форме здесь и сейчас.
Если лог событий предполагается очень длинным или пользователю может потребоваться скопировать отдельные части текста в Excel, лучше всего использовать Поле табличного документа. Это наиболее профессиональный подход для вывода технических протоколов.
Проанализируем преимущества этого метода:
Выясним, как это реализовать программно:
// Очищаем табличный документ на форме
ТабДок = Элементы.РезультатЛога;
ТабДок.Очистить();
// Пример вывода успешной записи
Область = ТабДок.Область(ТабДок.ВысотаТаблицы + 1, 1);
Область.Текст = "Документ " + ДокументЗаказ + " успешно обработан";
Область.ЦветТекста = WebЦвета.Зеленый;
// Пример вывода ошибки
ОбластьОшибки = ТабДок.Область(ТабДок.ВысотаТаблицы + 1, 1);
ОбластьОшибки.Текст = "Ошибка при записи документа " + ДокументЗаказ;
ОбластьОшибки.ЦветТекста = WebЦвета.Красный;
Когда требуется максимально гибкий дизайн (например, использование разных шрифтов, отступов или даже иконок внутри лога), на помощь приходит Поле HTML-документа. Мы можем программно сформировать HTML-код и отобразить его пользователю.
Разберем по шагам, как сформировать такой текст:
Сначала подготовим строковую переменную, в которую будем «собирать» наш HTML-код. Используем стандартные теги span с атрибутом style для управления цветом.
ТекстHTML = "<html><body>";
ТекстHTML = ТекстHTML + "<div style='color: green;'>Успешно: Документ №123</div>";
ТекстHTML = ТекстHTML + "<div style='color: red;'>Ошибка: Недостаточно прав для проведения документа №124</div>";
ТекстHTML = ТекстHTML + "</body></html>";
// Присваиваем реквизиту формы, связанному с полем HTML
РеквизитТекстHTML = ТекстHTML;
Этот метод считается более «тяжелым» для платформы, но он незаменим, если вы хотите добиться безупречного внешнего вида отчета.
Если «ТекстРезультата» логически представляет собой список записей, то архитектурно правильнее будет использовать не текстовое поле, а таблицу значений на форме. В этом случае задача раскраски решается через механизм Условного оформления без сложного программного манипулирования строками.
Рассмотрим порядок действий:
Этот способ является самым производительным, так как платформа 1С оптимизирована для работы с табличными данными и условным оформлением. К тому же, это позволяет легко фильтровать лог, оставляя только ошибки или только успешные операции. Для автоматической генерации программного кода правил можно использовать обработку для декомпиляции условного оформления формы.
Выбор метода зависит от ваших конкретных целей:
Помним, что удобство пользователя напрямую зависит от читаемости предоставляемой информации. Использование цвета — отличный способ акцентировать внимание на критических ошибках, не заставляя человека вчитываться в каждую строку монохромного текста.