При формировании печатных форм и отчетов часто возникает необходимость динамически выделить итоговую строку, группу ячеек или отдельную секцию жирной рамкой прямо из программного кода (в модуле менеджера или модуле объекта), не перегружая исходный макет жестко заданным оформлением. Разберем подробно, как управлять границами ячеек программно с помощью средств платформы 1С:Предприятие.
Для управления стилем и толщиной границы ячейки в платформе 1С используется объект Линия. Конструктор этого объекта принимает два основных параметра: тип линии и её толщину.
Рассмотрим синтаксис конструктора:
Новый Линия(ТипЛинии, Толщина)
Параметры конструктора:
ТипЛинииЯчейкиТабличногоДокумента. Доступны значения: Сплошная, Точечная, Штриховая, ШтрихПунктирная, ШтрихПунктирнаяСДвумяТочками, Двойная, СплошнаяСТочками, НетЛинии.Посмотрим на пример создания жирной сплошной линии:
ЖирнаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2);
Когда требуется обрамить область ячеек целиком со всех четырех сторон, наиболее удобным и лаконичным решением является вызов метода Обвести() у объекта ОбластьЯчеекТабличногоДокумента.
Синтаксис метода:
Область.Обвести(<ГраницаСлева>, <ГраницаСверху>, <ГраницаСправа>, <ГраницаСнизу>)
Разберем практический пример выделения области строк жирной рамкой:
ЖирнаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2);
// Получаем нужную область ячеек из результирующего табличного документа
ОбластьИтоги = ТабДок.Область("R10C1:R10C5");
// Обводим область по всему внешнему периметру
ОбластьИтоги.Обвести(ЖирнаяЛиния, ЖирнаяЛиния, ЖирнаяЛиния, ЖирнаяЛиния);
Если с одной из сторон менять оформление не требуется, соответствующий параметр можно пропустить или передать значение Неопределено.
Если необходимо подчеркнуть строку только снизу или выделить только верхнюю грань ячеек, прямое обращение к свойствам области позволяет сделать код более точным и читаемым.
У объекта ОбластьЯчеекТабличногоДокумента доступны свойства:
ГраницаСверхуГраницаСнизуГраницаСлеваГраницаСправаПосмотрим на пример подчеркивания строки:
ЖирнаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 3);
// Подчеркиваем текущую выведенную строку снизу
ОбластьСтроки = ТабДок.Область(ТабДок.ВысотаТаблицы, 1, ТабДок.ВысотаТаблицы, 5);
ОбластьСтроки.ГраницаСнизу = ЖирнаяЛиния;
Если в макете уже была установлена граница, но по условию алгоритма её требуется убрать, создается линия со специальным типом НетЛинии.
Разберем пример очистки рамок:
ЛинияОтсутствует = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии);
// Снимаем все границы с области
Область.Обвести(ЛинияОтсутствует, ЛинияОтсутствует, ЛинияОтсутствует, ЛинияОтсутствует);
// Либо сбрасываем только нижнюю границу
Область.ГраницаСнизу = ЛинияОтсутствует;
Проанализируем две различные стратегии применения стилей в модуле печати:
Макет.ПолучитьОбласть("СтрокаДанные"), то каждый последующий вызов ТабДок.Вывести(ОбластьСтроки) будет выводить строку с уже примененным стилем линий.ТабличныйДокумент с помощью ТабДок.Область(...).Важный совет по производительности: избегайте изменения границ ячеек по одной в цикле. Всегда адресуйте границы прямоугольными блоками или строками целиком — это значительно ускоряет формирование объемных табличных документов.