Оформление данных и форм в 1С 8.3: способы задать стиль
Содержание
Стиль в 1С 8.3 задают не одной настройкой, а несколькими разными механизмами — и важно сразу выбрать правильный. Цвет и шрифт строк в списке или отчёте меняет условное оформление, внешний вид отдельного поля из кода — свойства элемента формы, оформление бумаги — макет печатной формы, а единую палитру на всю конфигурацию — ветка Общие → Стили в Конфигураторе.
Ниже разбираю каждый способ: где он находится, что им можно, а что нельзя, и как не превратить базу в радугу, которая мешает работать. Примеры даю для платформы 8.3 с интерфейсом «Такси».
С чего начать: какой механизм выбрать
Прежде чем менять цвета, определитесь, что именно вы оформляете. От этого зависит инструмент — универсального «добавить стиль» в 1С нет.
- 🎨 Строки списка или ячейки отчёта по условию (просроченные — красным, проведённые — серым) → условное оформление.
- 🧩 Отдельное поле или надпись на форме из кода → свойства
ЦветТекста,ЦветФона,Шрифтэлемента формы. - 🖨️ Печатная форма, счёт, акт → оформление ячеек в макете.
- 🌈 Единая палитра и шрифты на всю конфигурацию → элементы стиля в ветке «Стили».
Элементы.Поле.ЦветТекста = .... Срабатывает динамически.Дальше — каждый механизм подробно.
Условное оформление списков и динамических таблиц
Условное оформление — самый частый запрос и самый простой инструмент: он меняет цвет, шрифт, видимость и доступность строк по условию, без единой строки кода. Кроме цвета им можно скрыть строку, сделать поле недоступным для редактирования или подставить свой текст подсказки — то есть это не только про «покрасить», но и про поведение списка.
В режиме 1С:Предприятие откройте список (например, журнал документов ), затем команду Ещё → Настроить список в командной панели. В открывшемся окне перейдите на закладку Условное оформление и нажмите Добавить. Элемент оформления состоит из трёх частей:
- Оформление — что меняем: цвет текста, цвет фона, шрифт, обводку.
- Условие — когда применяем: отбор по значению поля (
Проведён = Нет,СуммаДокумента > 100000). - Оформляемые поля — к каким колонкам применяем. Если список пуст — оформление ляжет на всю строку.
Порядок элементов важен. Платформа применяет их сверху вниз, и последний перекрывает предыдущие. Если просроченные должны быть красными поверх серого фона черновиков — поставьте правило про просрочку ниже.
Настройки списка пользователь сохраняет под своей учётной записью. Чтобы оформление было у всех, задавайте его в конфигураторе — у реквизита формы типа «Динамический список» есть собственное свойство условного оформления, открывается кнопкой с многоточием.
Как задать условное оформление программно
Иногда условие нельзя выразить простым отбором — тогда оформление собирают в коде, в обработчике ПриСозданииНаСервере модуля формы. Коллекция УсловноеОформление есть у динамического списка:
Элемент = Список.УсловноеОформление.Элементы.Добавить();
// Что оформляем
ОформлениеПоле = Элемент.Поля.Элементы.Добавить();
ОформлениеПоле.Поле = Новый ПолеКомпоновкиДанных("Номер");
// Условие
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Проведён");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
// Оформление
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.СерыйВеб);
Здесь WebЦвета — встроенная коллекция веб-цветов, из неё удобно брать готовые оттенки. Такой код выполняется один раз при открытии формы и далее работает сам.
Оформление отчётов на системе компоновки данных
Отчёты в 1С 8.3 строятся на СКД, и у неё свой, отдельный механизм оформления — не путайте его с настройками списка.
Откройте схему компоновки данных (в конфигураторе — макет типа «Схема компоновки данных») и перейдите на последнюю закладку настроек — Условное оформление. Строка оформления устроена так же: оформление, условие, оформляемые поля. Разница в том, что здесь доступны десятки параметров оформления — от цвета и шрифта до формата числа, отступа, положения текста и даже текста заголовка колонки.
Типичные задачи по оформлению отчёта:
- Выделить итоговые строки — условие по полю группировки или
Уровень() = 0, оформление: жирный шрифт, серый фон. - Покрасить отрицательные суммы красным — условие
Остаток < 0, оформление: цвет текста красный. - Скрыть служебную колонку в готовом отчёте — параметр «Видимость».
Если пользователь настроил свой вариант отчёта, он может переопределить ваше оформление в пользовательских настройках. Чтобы правило нельзя было отключить, в конфигураторе снимите у него флажок «Пользовательская настройка» (режим использования — «Недоступно»).
Полезно знать разницу между областями применения: одно и то же правило можно наложить на ячейку, на всю строку группировки или на колонку целиком. Управляет этим список оформляемых полей — если он пуст, оформление ложится на всю строку результата, если заполнен — только на перечисленные колонки. Так, например, красят красным только колонку «Долг», не трогая остальные цифры в строке.
СКД оформляет и диаграммы: палитра серий, цвет фона области, шрифт подписей задаются в свойствах поля диаграммы и в палитре схемы. Это тоже часть «стиля отчёта», хотя лежит не на закладке условного оформления, а в свойствах самой диаграммы.
Программное управление цветом и шрифтом в модулях
Когда вид поля должен меняться динамически — в ответ на выбор пользователя или данные, — цвет и шрифт задают прямо из модуля формы. У элементов формы для этого есть свойства.
Основные свойства элемента формы (поля, надписи, группы):
| Свойство | Что задаёт | Пример значения |
|---|---|---|
ЦветТекста | цвет символов | WebЦвета.Синий |
ЦветФона | заливку поля | ЦветаСтиля.ПолеФонаЦвет |
Шрифт | гарнитуру, размер, жирность | Новый Шрифт(, , Истина) |
Рамка | обводку | Новый Линия(ТипЛинииРамки.Сплошная) |
Пример — подсветить поле суммы красным, если она превысила лимит:
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
Если Объект.Сумма > 100000 Тогда
Элементы.Сумма.ЦветТекста = WebЦвета.Красный;
Иначе
Элементы.Сумма.ЦветТекста = Новый Цвет; // сброс к цвету по умолчанию
КонецЕсли;
КонецПроцедуры
Пустой Новый Цвет возвращает полю его штатный цвет — не прописывайте «чёрный» вручную, иначе поле перестанет уважать тему оформления и цвет для заблокированных полей.
Для цветов берите не «сырые» RGB, а ЦветаСтиля — коллекцию цветов текущего стиля платформы. Тогда поле будет выглядеть одинаково уместно и в светлом, и в другом варианте интерфейса, и вы не получите ядовитый оттенок, выбивающийся из общего вида.
Задавать цвет лучше в обработчиках, которые уже выполняются при открытии и изменении (ПриСозданииНаСервере, ...ПриИзменении), а не создавать ради этого отдельную команду.
Стилизация печатных форм и макетов
Печатная форма — это табличный документ, и её оформление целиком живёт в макете. Никакого условного оформления «на лету», как у списков, тут нет: цвет, шрифт и границы вы задаёте областям макета заранее, в конфигураторе.
Откройте макет документа (в дереве объекта — ветка Макеты), выделите ячейку или именованную область и в палитре свойств задайте:
- Шрифт — гарнитура, размер, жирность, подчёркивание.
- Цвет текста и Цвет фона — заливку шапки, выделение итогов.
- Границы — тип и толщину линий, по сторонам ячейки.
- Горизонтальное/вертикальное положение — выравнивание содержимого.
Если нужно, чтобы шапка счёта была серой, а строка «Итого» — жирной, достаточно один раз оформить эти области в макете — при печати оформление подставится автоматически.
Пара приёмов, которые экономят время:
- Оформляйте не отдельные ячейки, а именованные области (строка шапки, строка таблицы, подвал). Так проще менять вид и переиспользовать блок при выводе.
- Чтобы границы таблицы были одинаковыми, задайте их у области-образца строки, а не рисуйте вручную в каждой ячейке.
- Параметры и расшифровку (переход по двойному щелчку из печатной формы в документ) настраивают там же, в свойствах ячейки, на закладках «Макет» и «Расшифровка».
Когда оформление должно зависеть от данных (например, аннулированный документ печатать с водяным знаком или перечёркнутым), его досоздают в коде при выводе:
Область = ТабДок.Область("СтрокаИтого");
Область.ЦветФона = WebЦвета.СветлоСерый;
Область.Шрифт = Новый Шрифт(Область.Шрифт, , , Истина); // жирный
Если печатная форма принадлежит типовой конфигурации на поддержке, правьте её не напрямую, а через расширение конфигурации — так оформление сохранится при следующем обновлении. Расширения доступны с платформы 8.3.6.
Единая палитра: элементы стиля и вариант интерфейса
Чтобы не прописывать один и тот же синий в десятках форм, в 1С есть общие элементы стиля. Это ответ на запрос «сделать единое оформление» — он же цветовая схема уровня конфигурации.
В конфигураторе откройте ветку Общие → Стили и создайте объект «Стиль». Внутри него описываются элементы трёх видов:
- Цвет — именованный оттенок (например, «ЦветПредупреждения»).
- Шрифт — гарнитура и размер под конкретную роль (заголовок, примечание).
- Рамка — тип линии.
Дальше на эти элементы ссылаются и формы, и макеты, и код. В модуле собственный цвет стиля берут через коллекцию ЦветаСтиля по имени элемента:
Элементы.Статус.ЦветТекста = ЦветаСтиля.ЦветПредупреждения;
Поменяли оттенок в одном месте, в ветке «Стили», — он обновился везде, где на него сослались. Это главный приём, если оформление должно быть системным, а не точечным: не два десятка захардкоженных RGB по формам, а одна правка в палитре.
Отдельно стоит вариант интерфейса — он задаёт общий вид окон. В 1С 8.3 это «Такси», «Такси с панелью разделов слева» и «Формы в закладках». Пользователь переключает вариант в настройках программы, а разработчик задаёт его по умолчанию в свойствах конфигурации (свойство «Вариант интерфейса»). Полноценной смены «тёмной/светлой темы», как в браузере, штатная платформа 8.3 не даёт — цветовую гамму определяет выбранный вариант интерфейса и описанные вами элементы стиля.
Частые ошибки при оформлении
Собрал промахи, которые встречаются чаще всего и которых нет в шагах выше.
- Путают условное оформление списка и СКД. Это два разных механизма. Настройка в журнале документов не влияет на отчёт, и наоборот.
- Правят типовую печатную форму напрямую. При обновлении конфигурации изменения слетают. Решение — расширение конфигурации .
- Жёстко прописывают RGB-цвет в коде. Форма выбивается из общего вида и плохо смотрится в другом варианте интерфейса. Берите
ЦветаСтиля. - Забывают закрыть условному оформлению пользовательскую настройку. Пользователь отключает ваше правило галочкой — и «фирменное» выделение исчезает.
- Перебор с цветом. Пять цветов в одном списке мешают читать данные. Оформление должно выделять исключения (просрочку, ошибки), а не раскрашивать всё.
Частые вопросы
Можно ли покрасить строки списка без программирования?
Чем условное оформление списка отличается от оформления в СКД?
Как вернуть полю цвет по умолчанию после подсветки?
Элементы.Поле.ЦветТекста = Новый Цвет;. Платформа подставит штатный цвет текущего стиля. Прописывать чёрный вручную не нужно.