При разработке интерфейсов на платформе 1С:Предприятие 8.3 часто возникает желание отойти от стандартного оформления "Такси" или классического вида и сделать формы более контрастными. Одной из распространенных задач является изменение цвета границ (сетки) в таблице значений или динамическом списке. Например, пользователям может потребоваться четкая черная сетка вместо стандартной бледной разметки. Давайте разберем подробно, возможно ли это сделать штатными средствами, с какими ограничениями мы сталкиваемся и какие существуют альтернативные пути решения этой задачи.
В первую очередь обратимся к свойствам элемента формы и механизму условного оформления. Платформа предоставляет мощный инструмент для динамического изменения вида ячеек в зависимости от данных — Условное оформление. Давайте посмотрим, какие параметры мы можем менять программно или в конфигураторе.
Для элемента формы типа Таблица или ДинамическийСписок коллекция доступных параметров оформления (ОформлениеЯчейкиДинамическогоСписка или аналогичная для таблицы значений) содержит следующий фиксированный набор свойств:
Внимательно изучив этот список, мы приходим к неутешительному выводу: свойства, отвечающего за ЦветРамки (BorderColor), в данной коллекции нет. Это означает, что штатным способом через палитру свойств или через механизм условного оформления изменить цвет линий сетки конкретной таблицы невозможно.
Цвет границ таблиц в управляемом приложении определяется глобальным Стилем конфигурации. Он "зашит" в тему оформления (например, "Такси", "Аргентум" и т.д.) и применяется ко всем табличным элементам системы одинаково. Мы не можем изолированно перекрасить рамки одной конкретной таблицы, не затрагивая остальные элементы интерфейса и не создавая собственный глобальный стиль (что является крайне трудоемкой задачей и влияет на всю конфигурацию).
Если задача стоит категорично — "нужна таблица с черными рамками", — нам придется отказаться от стандартного элемента управления ТаблицаФормы и использовать ТабличныйДокумент.
Поле табличного документа, размещенное на форме, обладает гораздо более гибкими возможностями оформления, так как оно предназначено для создания печатных форм и отчетов. В нем мы имеем полный контроль над каждой границей каждой ячейки.
Рассмотрим алгоритм реализации такой "таблицы" на форме:
ТабличныйДокумент.В табличном документе свойство границы задается через объект Линия. Давайте посмотрим на пример кода, который создает область с черной рамкой вокруг каждой ячейки:
&НаСервере
Процедура СформироватьТаблицуСРамками()
ТабДок = Элементы.МойТабличныйДокумент; // Обращаемся к реквизиту формы
ТабДок.Очистить();
// Определяем стиль линии: Сплошная, Толстая (или Тонкая)
ЧернаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
// Пример данных для вывода
Для СчетчикСтрок = 1 По 10 Цикл
Для СчетчикКолонок = 1 По 5 Цикл
// Получаем область (ячейку) по координатам
ОбластьЯчейки = ТабДок.Область(СчетчикСтрок, СчетчикКолонок);
// Устанавливаем текст
ОбластьЯчейки.Текст = "R" + СчетчикСтрок + "C" + СчетчикКолонок;
// Устанавливаем рамку со всех сторон
// Параметры: Слева, Сверху, Справа, Снизу
ОбластьЯчейки.ГраницаСлева = ЧернаяЛиния;
ОбластьЯчейки.ГраницаСверху = ЧернаяЛиния;
ОбластьЯчейки.ГраницаСправа = ЧернаяЛиния;
ОбластьЯчейки.ГраницаСнизу = ЧернаяЛиния;
// Дополнительно можно задать цвет самой линии, если он отличается от авто
ОбластьЯчейки.ЦветРамки = WebЦвета.Черный;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Преимущества метода:
Недостатки:
ТабличныйДокумент не поддерживает типизацию данных в ячейках так же строго, как ТаблицаЗначений.Вторым способом, позволяющим реализовать произвольный дизайн, является использование 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 (особенно в концепции "Такси"). Платформа стремится к унификации. Разработчик описывает суть и структуру данных, а платформа сама решает, как их отрисовать максимально эффективно и удобно для пользователя в конкретной среде (веб-браузер, тонкий клиент, мобильное приложение).
Введение микроменеджмента пикселей (цвета рамок, точные отступы) противоречит этой идеологии, так как это усложняет адаптивность интерфейса. Поэтому надеяться на появление свойства ЦветРамки в стандартных таблицах в ближайших релизах не стоит.
Подведем итог нашему исследованию:
Выбирайте инструмент исходя из задачи: если нужна простота ввода данных — оставьте стандартный дизайн. Если нужна красивая печатная форма или дашборд с черными рамками — используйте табличный документ.