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

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

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

Анализ стандартных возможностей оформления

В первую очередь обратимся к свойствам элемента формы и механизму условного оформления. Платформа предоставляет мощный инструмент для динамического изменения вида ячеек в зависимости от данных — Условное оформление. Давайте посмотрим, какие параметры мы можем менять программно или в конфигураторе.

Для элемента формы типа Таблица или ДинамическийСписок коллекция доступных параметров оформления (ОформлениеЯчейкиДинамическогоСписка или аналогичная для таблицы значений) содержит следующий фиксированный набор свойств:

  1. ЦветФона (BackColor) — позволяет залить ячейку или строку определенным цветом.
  2. ЦветТекста (TextColor) — меняет цвет шрифта.
  3. Шрифт (Font) — управляет начертанием, размером и типом шрифта.
  4. ГоризонтальноеПоложение (HorizontalAlign) — выравнивание текста.
  5. Видимость (Visible) — скрытие или отображение.
  6. Доступность (Enabled) — возможность редактирования.
  7. Отображать (Show) — управление отображением (флажки и пр.).
  8. Текст (Text) — подмена отображаемого текста.
  9. Формат (Format) — форматная строка для чисел и дат.

Внимательно изучив этот список, мы приходим к неутешительному выводу: свойства, отвечающего за ЦветРамки (BorderColor), в данной коллекции нет. Это означает, что штатным способом через палитру свойств или через механизм условного оформления изменить цвет линий сетки конкретной таблицы невозможно.

Цвет границ таблиц в управляемом приложении определяется глобальным Стилем конфигурации. Он "зашит" в тему оформления (например, "Такси", "Аргентум" и т.д.) и применяется ко всем табличным элементам системы одинаково. Мы не можем изолированно перекрасить рамки одной конкретной таблицы, не затрагивая остальные элементы интерфейса и не создавая собственный глобальный стиль (что является крайне трудоемкой задачей и влияет на всю конфигурацию).

Решение №1: Использование Табличного документа

Если задача стоит категорично — "нужна таблица с черными рамками", — нам придется отказаться от стандартного элемента управления ТаблицаФормы и использовать ТабличныйДокумент.

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

Рассмотрим алгоритм реализации такой "таблицы" на форме:

  1. Добавим на форму реквизит с типом ТабличныйДокумент.
  2. Вынесем этот реквизит на форму как элемент управления (Поле табличного документа).
  3. Напишем процедуру, которая будет программно заполнять этот документ данными и отрисовывать границы.

В табличном документе свойство границы задается через объект Линия. Давайте посмотрим на пример кода, который создает область с черной рамкой вокруг каждой ячейки:


&НаСервере
Процедура СформироватьТаблицуСРамками()
    
    ТабДок = Элементы.МойТабличныйДокумент; // Обращаемся к реквизиту формы
    ТабДок.Очистить();
    
    // Определяем стиль линии: Сплошная, Толстая (или Тонкая)
    ЧернаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
    
    // Пример данных для вывода
    Для СчетчикСтрок = 1 По 10 Цикл
        Для СчетчикКолонок = 1 По 5 Цикл
            
            // Получаем область (ячейку) по координатам
            ОбластьЯчейки = ТабДок.Область(СчетчикСтрок, СчетчикКолонок);
            
            // Устанавливаем текст
            ОбластьЯчейки.Текст = "R" + СчетчикСтрок + "C" + СчетчикКолонок;
            
            // Устанавливаем рамку со всех сторон
            // Параметры: Слева, Сверху, Справа, Снизу
            ОбластьЯчейки.ГраницаСлева = ЧернаяЛиния;
            ОбластьЯчейки.ГраницаСверху = ЧернаяЛиния;
            ОбластьЯчейки.ГраницаСправа = ЧернаяЛиния;
            ОбластьЯчейки.ГраницаСнизу = ЧернаяЛиния;
            
            // Дополнительно можно задать цвет самой линии, если он отличается от авто
            ОбластьЯчейки.ЦветРамки = WebЦвета.Черный;
            
        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры

Преимущества метода:

Недостатки:

Решение №2: Использование Поля HTML документа

Вторым способом, позволяющим реализовать произвольный дизайн, является использование HTML. Современная платформа 1С прекрасно работает с веб-технологиями через элемент формы ПолеHTMLДокумента.

Суть метода заключается в том, что мы генерируем HTML-код, описывающий таблицу, и применяем к ней CSS-стили. Это позволяет сделать таблицу абсолютно любого вида, включая разноцветные рамки, закругления, тени и анимацию.

Давайте разберем пример формирования такой таблицы:


&НаСервере
Процедура ОтобразитьHTMLТаблицу()
    
    ТекстHTML = "
    |<html>
    |<head>
    |<style>
    |   table {
    |       width: 100%;
    |       border-collapse: collapse;
    |   }
    |   td, th {
    |       border: 1px solid black; /* Черная рамка толщиной 1 пиксель */
    |       padding: 5px;
    |       text-align: left;
    |   }
    |   th {
    |       background-color: #f2f2f2;
    |   }
    |</style>
    |</head>
    |<body>
    |
    |<table>
    |  <tr>
    |    <th>Товар</th>
    |    <th>Количество</th>
    |    <th>Цена</th>
    |  </tr>";
    
    // Обход данных из нашей ТаблицыЗначений (ТЗДанные - реквизит формы)
    Для Каждого Стр Из ТЗДанные Цикл
        ТекстHTML = ТекстHTML + "
        |  <tr>
        |    <td>" + Стр.Товар + "</td>
        |    <td>" + Стр.Количество + "</td>
        |    <td>" + Стр.Цена + "</td>
        |  </tr>";
    КонецЦикла;
    
    ТекстHTML = ТекстHTML + "
    |</table>
    |</body>
    |</html>";
    
    // Присваиваем полученный код реквизиту строки, связанному с Полем HTML
    HTMLТекст = ТекстHTML;
    
КонецПроцедуры

Важные нюансы:

С помощью свойства CSS border мы задаем цвет рамки. В примере выше используется значение black. Вы можете использовать любой HEX-код цвета (например, #FF0000 для красного).

Однако, как и в случае с табличным документом, мы теряем "родную" функциональность таблицы 1С:

Почему не стоит ждать изменения платформы?

В обсуждениях часто возникает вопрос: "Когда 1С добавит это свойство?". Важно понимать философию интерфейса 1С:Предприятие 8.3 (особенно в концепции "Такси"). Платформа стремится к унификации. Разработчик описывает суть и структуру данных, а платформа сама решает, как их отрисовать максимально эффективно и удобно для пользователя в конкретной среде (веб-браузер, тонкий клиент, мобильное приложение).

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

Выводы

Подведем итог нашему исследованию:

  1. Изменить цвет рамки у стандартной таблицы (ТаблицаЗначений, ДинамическийСписок) на управляемой форме невозможно. Условное оформление не поддерживает это свойство.
  2. Если требование дизайна критично, используйте Табличный документ. Это наиболее "родной" способ для 1С, позволяющий управлять границами каждой ячейки.
  3. Для сложных визуальных решений используйте Поле HTML документа с CSS-стилизацией, но будьте готовы к трудоемкой реализации интерактивности (редактирования данных).

Выбирайте инструмент исходя из задачи: если нужна простота ввода данных — оставьте стандартный дизайн. Если нужна красивая печатная форма или дашборд с черными рамками — используйте табличный документ.

← На главную