В процессе разработки интерфейсов на платформе 1С:Предприятие 8.3 программисты часто сталкиваются со стандартным ограничением: механизм «Условного оформления» позволяет изменить цвет фона или текста только для всей ячейки целиком. Однако в ряде задач, например, при реализации полнотекстового поиска или выделении ключевых слов, требуется окрасить лишь фрагмент строки. Давайте разберем, какие существуют способы обхода этого ограничения, проанализируем их плюсы и минусы, и выберем оптимальный вариант для вашей задачи.
Это наиболее гибкий и мощный способ, который позволяет превратить обычную ячейку таблицы в мини-браузер. Вместо обычного строкового типа данных мы будем использовать возможности верстки. Рассмотрим подробнее, как это реализовать.
Во-первых, в составе колонок вашей таблицы (будь то ТаблицаЗначений или ДинамическийСписок) необходимо изменить тип элемента формы, отображающего данные. Вместо «Поля надписи» или «Поля ввода» выберите Поле HTML-документа.
Во-вторых, при подготовке данных для таблицы нам нужно сформировать строку, содержащую HTML-теги. Проанализируем пример формирования такой строки:
// Пример формирования текста с выделением
ТекстПеред = "Остаток на складе: ";
ВыделенныйТекст = "150 шт.";
ТекстПосле = " (в резерве 10)";
ЯчейкаHTML = "<html><body style='margin:0; padding:2px; font-family:Arial; font-size:10pt;'>"
+ ТекстПеред
+ "<span style='color:red; font-weight:bold;'>" + ВыделенныйТекст + "</span>"
+ ТекстПосле
+ "</body></html>";
Важные нюансы метода:
body.Если ваша задача — выделить, например, только префикс артикула или статус в начале строки, мы можем пойти на хитрость. Вместо одной колонки мы создадим две или три, которые для пользователя будут выглядеть как единое целое. Выясним, как добиться такого эффекта.
Разберем алгоритм действий по шагам:
ТаблицыЗначений на сервере).Этот метод является самым производительным, так как не нагружает систему сложным рендерингом и позволяет использовать стандартные механизмы платформы.
В ходе обсуждения на форумах часто упоминается использование картинок. Обычная картинка в ячейке 1С часто вписывается в квадрат, что мешает оформлению длинного текста. Однако, используя формат SVG, мы можем программно создать фон для ячейки, который будет масштабироваться под ее размер.
Проанализируем ситуацию: нам нужно подкрасить только первые 5 символов. Мы можем сгенерировать строку в формате base64, представляющую собой SVG-изображение с прямоугольником нужного цвета. Чтобы изображение растягивалось, используйте параметр preserveAspectRatio="none" в заголовке SVG-кода.
// Примерная структура SVG для фона части ячейки
// <svg width="100" height="20" preserveAspectRatio="none" ...>
// <rect x="0" y="0" width="30" height="20" fill="yellow" />
// </svg>
Эту картинку можно установить в свойство ячейки КартинкаФона. Текст 1С будет наложен поверх этой картинки. Это позволяет сохранить возможность поиска и копирования текста, в отличие от метода с полным HTML.
Рассмотрим еще один интересный вариант — использование символов Unicode или иконочных шрифтов типа FontAwesome. Если вам нужно не просто изменить цвет, а акцентировать внимание на части текста, можно программно добавлять спецсимволы (маркеры, точки, стрелки) непосредственно в строку.
Пример использования символов юникода:
ТекстЯчейки = "● " + "Важный статус " + " (обычный текст)";
// Символ ● (код 25CF) будет отображаться в ячейке.
// С помощью условного оформления можно покрасить всю строку,
// если в ней присутствует этот символ.
Подводя итоги нашего анализа, можно выделить следующие рекомендации:
Выбор конкретного метода зависит от архитектуры вашей формы и требований к производительности. Надеемся, что рассмотренные подходы помогут вам создать удобный и визуально понятный интерфейс для ваших пользователей.