Цвет текста, фона и ячеек в 1С: настройка и код
Содержание
Поменять цвет в 1С можно четырьмя способами: настроить условное оформление списка или отчёта без кода, задать цвет в макете печатной формы, прописать его в коде формы или изменить стиль всей конфигурации. Выбор зависит от того, что красим и кто это делает: обычный пользователь или программист.
Для пользователя доступно условное оформление в списках и вариантах отчётов. Для разработчика — свойства элементов формы, оформление табличного документа и объекты стиля. Ниже — по порядку, от простого к сложному.
Какой способ выбрать
| Что нужно покрасить | Кто делает | Где |
|---|---|---|
| Строки списка по условию (просрочено, долг, остаток) | Пользователь | Настройка списка, условное оформление |
| Строки и ячейки отчёта | Пользователь | Изменение варианта отчёта |
| Поле или кнопку формы всегда одним цветом | Разработчик | Свойства элемента в конфигураторе |
| Цвет в зависимости от данных | Разработчик | Условное оформление формы или код |
| Печатная форма, бланк | Разработчик или опытный пользователь | Макет, свойства ячейки |
| Весь интерфейс | Разработчик | Стили конфигурации |
Цвет строк списка без программирования
Самый частый запрос: выделить красным просроченные счета или жёлтым непроведённые документы. Для этого не нужен конфигуратор.
- Откройте нужный список (например, «Счета на оплату»).
- В командной панели списка нажмите «Ещё» и выберите команду настройки списка.
- Перейдите на вкладку «Условное оформление» и добавьте элемент.
- Задайте условие: поле, вид сравнения, значение. Например, «Срок оплаты меньше текущей даты».
- В блоке оформления выберите цвет текста или цвет фона.
- При необходимости ограничьте поля, к которым применяется оформление. Если список полей пуст, красится вся строка.
Условий может быть несколько, они проверяются по порядку. Если два правила красят одну ячейку, победит нижнее в списке, поэтому частные случаи ставьте ниже общих.
Пользовательские настройки списка сохраняются для вашей учётной записи. Коллег они не затронут. Чтобы цвет видели все, его задаёт разработчик в форме.
Цвета в отчётах и СКД
Большинство типовых отчётов построено на системе компоновки данных (СКД). Покрасить в них можно значения, группировки и итоги.
Откройте отчёт, сформируйте его и выберите команду изменения варианта отчёта. Далее:
- перейдите в настройки, на вкладку «Условное оформление»;
- добавьте элемент, задайте условие и оформление, как в списке;
- в поле «Оформляемые поля» укажите, какие колонки красить;
- сохраните вариант или сформируйте отчёт сразу.
Практический пример. В отчёте по остаткам товаров нужно подсветить красным отрицательные значения. Условие: «Остаток меньше 0». Оформление: цвет текста красный. Поле: «Остаток». Тогда красными станут только цифры в этой колонке, а не вся строка.
Если вы разрабатываете отчёт
В схеме компоновки данных те же правила лежат на вкладке «Настройки» в узле «Условное оформление» и на уровне отдельных группировок. Оформление, заданное на уровне группировки, действует только внутри неё. Это удобно, когда итоги нужно выделить отдельно от детальных записей.
Свойства элементов формы
В конфигураторе откройте форму, выберите нужное поле, кнопку или надпись и посмотрите палитру свойств. У полей формы есть цвет текста, цвет фона и шрифт. Достаточно выбрать значение из палитры или из списка стилевых цветов.
Постоянный цвет подходит для служебных полей: например, итоговое поле обязательно серым, а предупреждающая надпись красным. Если цвет зависит от данных, свойство лучше не менять, а использовать условное оформление: оно переживает пересоздание формы и не требует кода.
Не вшивайте в свойства «чистые» RGB-значения, если есть подходящий цвет стиля. Через стиль цвет меняется в одном месте и сразу везде, а ручные значения придётся искать по всей конфигурации.
Цвет через код формы
Когда цвет определяет логика, который трудно описать условием, задают его программно на клиенте:
&НаКлиенте
Процедура ПодсветитьДолг()
Если Объект.СуммаДолга > 0 Тогда
Элементы.СуммаДолга.ЦветТекста = WebЦвета.Красный;
Иначе
Элементы.СуммаДолга.ЦветТекста = Новый Цвет;
КонецЕсли;
КонецПроцедуры
Пустой Новый Цвет возвращает автоматический цвет, то есть тот, что задан стилем. Так вы снимаете подсветку, не запоминая прежнее значение.
Цвет можно собрать и по компонентам: Новый Цвет(255, 200, 0) даёт оранжево-жёлтый. Значения идут в порядке красный, зелёный, синий, от 0 до 255.
Динамическое оформление по условиям в коде
Условное оформление можно создать не только мышкой, но и программно. Так делают, когда условий много или они зависят от настроек. Пример для таблицы формы с колонкой «Остаток»:
&НаСервере
Процедура НастроитьОформление()
Элемент = УсловноеОформление.Элементы.Добавить();
Поле = Элемент.Поля.Элементы.Добавить();
Поле.Поле = Новый ПолеКомпоновкиДанных("ТоварыОстаток");
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Остаток");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
Отбор.ПравоеЗначение = 0;
Отбор.Использование = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
КонецПроцедуры
Имя поля оформления состоит из имени таблицы формы и имени колонки без точки, а в отборе используется путь с точкой. На этом спотыкаются чаще всего: оформление создано, а красить нечего, потому что имя поля не совпало.
Вызывайте процедуру в обработчике ПриСозданииНаСервере. Правила остаются в форме на всё время её жизни и применяются при каждой перерисовке.
Цвет части текста
Чтобы выделить слово внутри строки, используйте форматированную строку:
Текст = Новый ФорматированнаяСтрока("Просрочено: ", , WebЦвета.Красный);
Её выводят в надписях и декорациях формы с включённым режимом форматированного текста. В обычное строковое поле она не поместится.
Цвет в ячейках печатной формы и макета
В макете печатной формы цвет задают для каждой ячейки или выделенной области:
- Откройте макет в конфигураторе.
- Выделите ячейки.
- Вызовите свойства области и найдите настройки цвета текста, цвета фона и границ.
- Выберите значение и сохраните макет.
То же самое можно сделать при выводе. Когда область получена из макета, ей присваивают цвет перед выводом в документ:
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Товар = Выборка.Товар;
Если Выборка.Остаток < 0 Тогда
Область.Область().ЦветФона = Новый Цвет(255, 220, 220);
КонецЕсли;
ТабДок.Вывести(Область);
Печатные формы часто выводят на чёрно-белый принтер. Светло-серый фон там читается, а тёмно-синий текст на красном превращается в кашу. Для бланков, которые уходят на бумагу, ограничьтесь серыми заливками и чёрным текстом.
Для цветных областей в табличном документе важно и то, что стилевой цвет (например, цвет особого текста) в макете и в экранной форме может выглядеть по-разному, так как стиль подставляется на клиенте. В печатных формах надёжнее задавать цвет явно значениями RGB.
Стили и цветовая схема всей конфигурации
Если нужно изменить оформление целиком, а не одной формы, правят стили. В дереве конфигурации есть ветка «Стили», в ней — элементы стиля: цвета, шрифты, рамки. Форма и поля обращаются к этим элементам по имени, поэтому достаточно поменять значение элемента, и оформление обновится везде.
Из кода к стилевым цветам обращаются через ЦветаСтиля:
Элементы.Предупреждение.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст;
Какие именно элементы стиля есть в вашей конфигурации, видно в конфигураторе в ветке «Стили». Не придумывайте имён по памяти, берите их из списка.
Для типовых конфигураций (Бухгалтерия, ЗУП, Управление торговлей) стиль меняют не в самой конфигурации, а через расширение. Иначе при каждом обновлении поставщика правки слетят или заблокируют обновление.
- Создайте расширение конфигурации в конфигураторе.
- Добавьте в него нужный стиль или форму.
- Измените значение цвета.
- Подключите расширение и обновите конфигурацию базы данных.
Перед работой с расширением в рабочей базе сделайте копию базы и проверьте результат на тестовой. Подключение расширения затрагивает всех пользователей. Если изменять придётся сам стиль в рабочей базе, выберите время, когда пользователей нет: структура базы обновляется при монопольном доступе.
Как подобрать цвета, чтобы форма не рябила
Подсветка работает, пока её мало. Когда в списке красным, жёлтым, зелёным и синим залито половину строк, пользователь перестаёт замечать любые сигналы.
Простые правила, которые выручают на практике:
- 🎯 Держите не больше трёх-четырёх цветов на форму. Один цвет — один смысл: красный для проблем, жёлтый для «требует внимания», зелёный для «готово».
- 🎯 Для фона берите бледные оттенки, для текста — насыщенные. Красный текст на бледно-розовом фоне читается лучше, чем белый на ярко-красном.
- 🎯 Не опирайтесь только на цвет. Часть пользователей плохо различает красный и зелёный, поэтому дублируйте сигнал значком, словом в статусе или жирным шрифтом.
- 🎯 Проверьте форму с тем же масштабом и на том же мониторе, что у пользователей. Бухгалтерия нередко работает на экранах с низкой контрастностью.
Несколько условий в одном правиле
Условное оформление принимает не одно условие, а группу. В группу «И» добавьте все проверки, которые должны выполниться одновременно, в группу «ИЛИ» — любую из них. Пример для списка заказов: красить строку, если срок отгрузки прошёл и статус не «Закрыт». Это одно правило с двумя условиями в группе «И».
Если правила начинают разрастаться, заведите по одному элементу на каждый смысл, а не одно огромное правило. Так проще отключать лишнее и искать причину, когда цвет ведёт себя странно.
Выбор цвета в палитре
В диалоге выбора цвета доступны три источника: цвета стиля, веб-цвета и произвольный цвет. Стилевые и веб-цвета имеют имена, их удобно переносить в код. Произвольный цвет задаётся числами RGB. Если нужный оттенок подобран в графическом редакторе, перенесите три числа в Новый Цвет(R, G, B).
Проверка результата перед выкладкой
Прежде чем отдавать форму пользователям, пройдите короткую проверку:
Тестовые данные подготовьте заранее: одна запись, которая под условие попадает, и одна, которая заведомо не попадает. Если красится обе, условие слишком широкое. Если не красится ни одна, начните с имени поля и флажка использования.
Типичные ошибки при настройке цвета
Сначала проверьте самое простое:
- 🔸 Цвет не появляется. В условном оформлении не заполнено условие или не стоит флажок использования. Проверьте, что элемент включён.
- 🔸 Красится не то поле. Оформляемые поля не заданы, и правило применилось ко всей строке. Либо заданы не те колонки.
- 🔸 Правило перебито другим. Два оформления красят одну ячейку, действует нижнее. Поменяйте порядок.
- 🔸 Цвет есть в конфигураторе, но нет в 1С. Конфигурация не обновлена или расширение не применено. Перезапустите клиент.
- 🔸 На сервере код не работает
. Свойство
ЦветТекстау элемента формы устанавливают только на клиенте. На сервере для этого служит условное оформление. - 🔸 Текст не читается. Светлый текст на светлом фоне. Проверьте пару цветов на реальном мониторе, а не по палитре.
Частые вопросы
Можно ли поменять цвет интерфейса 1С без программиста?
Почему красные строки видны у коллеги, а у меня нет?
Как вернуть прежний цвет после изменения?
Новый Цвет: это вернёт цвет по умолчанию из стиля.