При разработке интерфейсов на обычных формах 1С часто возникает задача вывода структурированной информации с цветовым выделением определенных данных. Одним из наиболее гибких инструментов для этого является HTML-поле. В отличие от обычного текстового поля, оно позволяет полноценно использовать возможности веб-верстки для оформления контента.
Для начала важно уяснить, что HTML-поле в 1С — это не просто область для текста, а полноценный объект, интерпретирующий разметку. Это значит, что метод УстановитьТекст ожидает на вход не обычную строку, а готовую HTML-структуру. Мы не можем «раскрасить» уже отображенный текст — нам необходимо подготовить строку с применением CSS-стилей и передать её в поле один раз или обновлять при необходимости.
Чтобы вывести таблицу с данными о наличии товаров на складе, где цвет цифр зависит от их значения, мы воспользуемся стандартными тегами разметки <table>, <tr> и <td>. Для управления цветом мы будем использовать атрибут style, который позволяет задавать свойства CSS непосредственно для элементов.
Давайте рассмотрим, как сформировать такую строку программно. Основная идея заключается в том, чтобы в цикле обхода данных формировать HTML-код, а после завершения цикла передать его в поле формы:
ТекстHTML = "
|<table>
|<tr><th>Номенклатура</th><th>Количество</th></tr>";
Для Каждого Строка Из ДанныеТоваров Цикл
Цвет = ?(Строка.Количество > 0, "green", "red");
ТекстHTML = ТекстHTML + "
|<tr>
|<td>" + Строка.Наименование + "</td>
|<td style='color: " + Цвет + "'>" + Строка.Количество + "</td>
|</tr>";
КонецЦикла;
ТекстHTML = ТекстHTML + "</table>";
ЭлементыФормы.ИмяВашегоПоляHTML.УстановитьТекст(ТекстHTML);
Работая с HTML в 1С, придерживайтесь следующих правил, чтобы избежать ошибок и упростить поддержку кода:
style в каждую ячейку, определите стили один раз в блоке <style> в начале строки. Это значительно оптимизирует размер строки и упростит изменение дизайна в будущем.<, > или &, обязательно пропускайте их через функцию СтрЗаменить, иначе HTML-разметка может быть повреждена.<html>, <head> и <body>.УстановитьТекст внутри цикла. Это вызывает перерисовку поля на каждой итерации, что может существенно замедлить работу формы. Сначала соберите весь текст в переменную, а затем установите его в поле один раз.Если после формирования строки вы видите, что таблица отображается не так, как ожидалось, выполните простую проверку:
.html.Используя этот подход, вы сможете превратить обычную статичную форму в современный и информативный интерфейс, где данные визуализируются наглядно и понятно для пользователя.