Как настроить отображение сетки и вертикальных линий в таблице значений 1С

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

В современных конфигурациях 1С, работающих на управляемых формах (особенно в интерфейсе «Такси»), разработчики часто сталкиваются с тем, что привычная сетка таблицы (вертикальные линии между колонками) отсутствует или практически не видна. Это связано с концепцией «чистого интерфейса», которую продвигает фирма 1С. Однако для работы с большими объемами данных или сложными расчетами четкое визуальное разделение колонок бывает критически важным. В данной статье мы разберем несколько способов, как вернуть или имитировать сетку в таблице значений.

Анализ стандартных свойств элемента формы Таблица

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

  1. ГоризонтальныеЛинии — управляет отображением линий между строками. В интерфейсе «Такси» они обычно включены по умолчанию и имеют светло-серый цвет.
  2. ВертикальныеЛинии — именно это свойство отвечает за сетку между колонками.

Проблема заключается в том, что даже при установке флажка ВертикальныеЛинии в значение Истина, в интерфейсе «Такси» они могут быть невидимы. Платформа отрисовывает их цветом, который почти сливается с фоном формы. Чтобы проверить работоспособность, мы можем попробовать изменить Режим варианта интерфейса в свойствах конфигурации на «Компактный». В этом режиме плотность элементов выше, а линии отрисовываются более отчетливо. Для быстрого переключения плотности элементов можно использовать инструмент для смены интерфейса пользователя между компактным и обычным режимами.

Имитация сетки через условное оформление

Если стандартные линии не обеспечивают нужной контрастности, мы можем прибегнуть к методу «вертикальной зебры». Этот способ позволяет визуально отделить одну колонку от другой, закрашивая их через одну разными оттенками фона. Проанализируем, как это реализовать через УсловноеОформление формы. При необходимости автоматизировать этот процесс можно использовать обработку для автоматической генерации кода условного оформления.

Разберем по шагам процесс настройки:

  1. Перейдем на закладку «Условное оформление» в редакторе формы.
  2. Добавим новый элемент оформления.
  3. В поле «Оформление» установим параметр ЦветФона (например, очень светлый серый или бежевый).
  4. В поле «Оформляемые поля» выберем конкретные колонки, которые мы хотим выделить (например, все четные колонки).
  5. Условие в данном случае можно не ставить, так как нам нужно постоянное выделение определенных столбцов.

Если состав колонок динамический, мы можем настроить это программно в процедуре ПриСозданииНаСервере. Посмотрим на пример кода:


// Программная раскраска четных колонок для имитации сетки
Для Сч = 0 По Элементы.ТаблицаДанных.ПодчиненныеЭлементы.Количество() - 1 Цикл
    Если Сч % 2 = 0 Тогда
        ТекущаяКолонка = Элементы.ТаблицаДанных.ПодчиненныеЭлементы[Сч];
        
        ЭлементОформления = УсловноеОформление.Элементы.Добавить();
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаФайла);
        
        ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
        ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ТекущаяКолонка.Имя);
    КонецЕсли;
КонецЦикла;

Использование Поля табличного документа

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

Рассмотрим преимущества этого подхода:

Однако проанализируем и недостатки: вам придется самостоятельно описывать обработку событий, таких как выбор значения (Выбор) или изменение данных пользователем. Это требует большего объема кода. Для вывода данных из вашей ТаблицыЗначений в табличный документ используйте следующий алгоритм:


ТабДок = Элементы.ПолеТабличногоДокумента;
ТабДок.Очистить();

// Рисуем сетку для всей области данных
Область = ТабДок.Область(1, 1, ТЗ.Количество() + 1, ТЗ.Колонки.Количество());
Область.Обвести(Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1));

// Заполнение данными...

Использование внешних компонент (ВК)

Существует возможность управлять свойствами системных окон Windows через внешние компоненты. Некоторые разработчики используют их для поиска объекта Grid внутри окна 1С и принудительной установки стилей отрисовки. Мы рекомендуем использовать этот метод с осторожностью, так как он сильно зависит от версии платформы и может привести к нестабильной работе клиентского приложения при обновлении 1С.

Особенности интерфейса Такси и системные ограничения

Важно понимать причину, по которой сетка в 1С стала менее заметной. Выясним причину: это сделано для уменьшения «визуального шума». Проанализируем ситуацию с точки зрения эргономики: при большом количестве мелких ячеек обилие черных линий утомляет глаза пользователя. Поэтому, если ваша задача — просто сделать таблицу «читаемой», лучше воспользоваться настройкой ЦветТекстаЗаголовка или легким выделением фона, чем пытаться программно «рисовать» черные границы.

Если же наличие сетки — это принципиальное требование заказчика, наиболее стабильным и «правильным» с точки зрения архитектуры 1С решением будет использование Поля табличного документа. Это гарантирует, что при любом обновлении платформы или смене темы оформления ваша сетка останется на месте и будет выглядеть именно так, как вы задумали.

Подведем итог: для простых случаев используем свойства ВертикальныеЛинии и ГоризонтальныеЛинии в сочетании с Компактным режимом. Для сложных интерфейсов — переходим на Табличный документ.

← На главную