Цвет в 1С:Предприятии 8.3 — где его настраивает пользователь и где программист
Содержание
Изменить цвета в 1С можно на трёх уровнях: в настройке списка или отчёта (условное оформление, без программиста), в форме и макете через Конфигуратор и программно, через объект Цвет и элементы стиля. Частое заблуждение — искать в программе «палитру темы», как в Word. Общая цветовая гамма задаётся стилем конфигурации, а пользователь красит не окно целиком, а данные: строки, поля, ячейки по условию.
Отсюда простое правило. Нужно подсветить просроченные счета красным — это условное оформление, его делает сам бухгалтер за минуту. Нужно поменять фон всех форм или цвет кнопок — это работа с конфигурацией, и в типовой её ведут через расширение.
Три уровня, на которых в 1С меняется цвет
Сначала определите, что именно вы хотите перекрасить. От этого зависит, кто и где это делает.
| Что красим | Кто делает | Где | Нужны ли права на конфигурацию |
|---|---|---|---|
| Строки списка по условию | Пользователь | Настройка списка → «Условное оформление» | Нет |
| Ячейки и строки отчёта | Пользователь | Настройки отчёта в расширенном режиме → «Оформление» | Нет |
| Поле формы всегда одним цветом | Программист | Свойства элемента формы в Конфигураторе | Да |
| Цвет по условию на форме документа | Программист | Условное оформление формы или код | Да |
| Ячейки печатной формы | Программист | Свойства ячеек макета, код ТабличныйДокумент | Да |
| Общая гамма программы | Программист | Элементы стиля и стиль конфигурации | Да |
| Подсветка кода в Конфигураторе | Разработчик для себя | Параметры Конфигуратора | Нет |
Если вы работаете в типовой БП 3.0, ЗУП 3.1 или УТ 11 и не хотите снимать конфигурацию с поддержки, всё, что в таблице помечено «Да», делайте в расширении конфигурации. Обновления тогда ставятся без ручного сравнения.
Оформление интерфейса: что доступно без Конфигуратора
Готового переключателя «синяя тема / зелёная тема» в типовых конфигурациях на 8.3 нет. Внешний вид окон определяют три вещи:
- 🎨 стиль конфигурации — набор цветов и шрифтов, который задал разработчик;
- 🖥️ вариант интерфейса — «Такси» в современных конфигурациях; задаётся в свойствах конфигурации;
- ⚙️ параметры клиента — масштаб, крупный шрифт и другие пункты диалога «Параметры» в меню «Сервис и настройки» (значок с тремя полосками или шестерёнкой в заголовке окна).
Набор пунктов в «Параметрах» зависит от номера платформы. Откройте диалог и посмотрите, что предлагает именно ваша версия: на новых релизах платформы вариантов оформления больше.
Что ещё влияет на цвета, хотя к 1С отношения не имеет:
- режим высокой контрастности Windows — часть элементов 1С берёт системные цвета;
- расширения браузера с «тёмным режимом» в веб-клиенте — они перекрашивают страницу по-своему;
- настройки цветопередачи монитора и ночной режим Windows.
Если «поплыли» цвета только у одного сотрудника, сначала проверьте эти три пункта на его компьютере. Перенастраивать базу ради одного рабочего места не нужно.
Цвет строк и полей на форме: условное оформление
Главный инструмент — условное оформление. Это правило вида «если поле удовлетворяет условию, показать его таким-то цветом, шрифтом или скрыть». Правило работает и в пользовательском режиме, и в Конфигураторе.
Как подсветить строки списка самому
Пример: в списке счетов покупателям выделить красным документы на сумму больше 500 000.
- Откройте список документов.
- В меню «Ещё» выберите настройку списка.
- Перейдите на вкладку «Условное оформление» и добавьте новое правило.
- В поле «Оформление» задайте цвет текста или цвет фона.
- В поле «Условие» добавьте отбор:
Сумма— «Больше» —500 000. - В поле «Оформляемые поля» оставьте пустым, чтобы окрасилась вся строка, или выберите конкретные колонки.
- Нажмите «Завершить редактирование».
Правило сохраняется в настройках пользователя. Коллеги его не увидят, пока вы не скопируете им настройки (об этом ниже).
Как настроить в Конфигураторе для всех
В форме объекта или списка откройте свойства самой формы и найдите свойство «Условное оформление». Там тот же редактор, но правила видят все пользователи.
Для поля, которое должно быть одного цвета всегда, проще задать свойства элемента формы напрямую: «Цвет текста», «Цвет фона», «Цвет рамки».
В управляемой форме нельзя раскрасить конкретную строку таблицы, присвоив цвет колонке: свойство ЦветФона у колонки окрасит её целиком, во всех строках. Для построчной раскраски нужно только условное оформление.
То же самое кодом
Правило условного оформления можно добавить при создании формы. Пример для табличной части Товары: красим колонку «Количество», если оно равно нулю.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Количество");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноКрасный);
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыКоличество");
КонецПроцедуры
Обратите внимание на два разных имени. В отборе — путь к данным (Объект.Товары.Количество), в оформляемом поле — имя элемента формы (ТоварыКоличество). Перепутаете — правило молча не сработает.
Для динамического списка правило добавляют не в форму, а в сам список: Список.УсловноеОформление.Элементы.Добавить(). В отборе тогда указывают поле списка, например Сумма.
Цветные ячейки в отчётах и табличных документах
Отчёт на СКД: без программиста
Почти все отчёты типовых конфигураций построены на системе компоновки данных. Пример: в оборотно-сальдовой ведомости выделить жёлтым счета с отрицательным конечным остатком.
- Откройте отчёт и нажмите «Настройки».
- Переключите вид настроек на «Расширенный».
- Перейдите на вкладку «Оформление» — это и есть условное оформление отчёта.
- Добавьте правило: цвет фона, условие на нужный показатель, оформляемые поля.
- Сформируйте отчёт.
Чтобы правило не пропало, сохраните вариант отчёта под своим именем. Иначе после сброса настроек оформление уйдёт вместе с ними.
В схеме компоновки, для всех
Разработчик задаёт то же правило в Конфигураторе: схема компоновки данных → вкладка «Настройки» → нижняя часть, закладка «Условное оформление». Правило войдёт в вариант отчёта по умолчанию.
Макет печатной формы
В макете выделите ячейки, откройте палитру свойств (Alt+Enter) и задайте «Цвет текста», «Цвет фона», «Цвет рамки». Это работает для статичной раскраски: шапка таблицы, итоговая строка.
Если цвет зависит от данных, красьте область уже в коде, после вывода:
ТабДок = Новый ТабличныйДокумент;
// ... вывод областей макета ...
// Выделить ячейку в строке 5, колонке 3
Ячейка = ТабДок.Область(5, 3, 5, 3);
Ячейка.ЦветФона = Новый Цвет(255, 242, 204);
Ячейка.ЦветТекста = Новый Цвет(156, 0, 6);
// Выделить диапазон строки 10 со 2-й по 6-ю колонку
Диапазон = ТабДок.Область("R10C2:R10C6");
Диапазон.ЦветФона = WebЦвета.СветлоЗеленый;
Удобнее красить не по номерам, а сразу область макета перед выводом: получили Область = Макет.ПолучитьОбласть("Строка"), при нужном условии присвоили Область.Область().ЦветФона и вывели. Номера строк при этом считать не придётся.
Как изменить цвета в 1С программно: объект Цвет и стили
Способы задать цвет
| Способ | Пример | Когда применять |
|---|---|---|
| RGB | Новый Цвет(255, 0, 0) | Точный цвет из фирменной гаммы |
| Web-цвет | WebЦвета.Красный | Быстро, читаемо в коде |
| Цвет Windows | WindowsЦвета.ЦветФонаОкна | Подстроиться под систему (только тонкий клиент) |
| Элемент стиля | ЦветаСтиля.ЦветФонаФормы | Единая гамма по всей конфигурации |
| Авто | Новый Цвет | Вернуть цвет по умолчанию |
Последняя строка полезна чаще, чем кажется. Чтобы снять подсветку с поля, не подбирайте «белый»: присвойте Элементы.Поле.ЦветФона = Новый Цвет;. Конструктор без параметров даёт автоцвет, и поле снова возьмёт цвет из стиля.
Почему лучше элементы стиля
Жёстко прописанный RGB работает, пока не поменялся стиль или фон. Красный текст на розовом фоне, заданный в десяти формах, потом придётся искать по всему коду.
Практичнее завести свой элемент стиля:
- В Конфигураторе откройте ветку
Общие → Элементы стиля. - Добавьте элемент, вид — «Цвет», имя, например,
ЦветПросроченногоДокумента. - Задайте значение.
- В коде используйте
ЦветаСтиля.ЦветПросроченногоДокумента.
Цвет меняется в одном месте, а в свойствах формы этот элемент выбирается из списка, как стандартный.
Перевод HEX в цвет 1С и обратно
Дизайнер прислал гамму в виде #FF8800, а Новый Цвет принимает три числа. Функция-конвертер:
Функция ЦветИзHex(Знач Hex) Экспорт
Hex = ВРег(СтрЗаменить(СокрЛП(Hex), "#", ""));
Если СтрДлина(Hex) <> 6 Тогда
Возврат Новый Цвет;
КонецЕсли;
Цифры = "0123456789ABCDEF";
Компоненты = Новый Массив;
Для НомерПары = 0 По 2 Цикл
Старший = СтрНайти(Цифры, Сред(Hex, НомерПары * 2 + 1, 1)) - 1;
Младший = СтрНайти(Цифры, Сред(Hex, НомерПары * 2 + 2, 1)) - 1;
Если Старший < 0 Или Младший < 0 Тогда
Возврат Новый Цвет;
КонецЕсли;
Компоненты.Добавить(Старший * 16 + Младший);
КонецЦикла;
Возврат Новый Цвет(Компоненты[0], Компоненты[1], Компоненты[2]);
КонецФункции
Функция ЦветВHex(ЗначениеЦвета) Экспорт
Если ЗначениеЦвета.Вид <> ВидЦвета.Абсолютный Тогда
Возврат "";
КонецЕсли;
Цифры = "0123456789ABCDEF";
Компоненты = Новый Массив;
Компоненты.Добавить(ЗначениеЦвета.Красный);
Компоненты.Добавить(ЗначениеЦвета.Зеленый);
Компоненты.Добавить(ЗначениеЦвета.Синий);
Результат = "#";
Для Каждого Компонента Из Компоненты Цикл
Результат = Результат
+ Сред(Цифры, Цел(Компонента / 16) + 1, 1)
+ Сред(Цифры, Компонента % 16 + 1, 1);
КонецЦикла;
Возврат Результат;
КонецФункции
Проверка на примере: FF → 15 × 16 + 15 = 255, 88 → 8 × 16 + 8 = 136, 00 → 0. Получаем Новый Цвет(255, 136, 0) — оранжевый.
Обратное преобразование имеет смысл только для абсолютного цвета. У web-цвета или элемента стиля компоненты RGB в объекте не хранятся, поэтому функция в этом случае возвращает пустую строку. Ошибочную строку на входе первая функция превращает в автоцвет, а не в исключение.
Цвета в самом Конфигураторе
Иногда под «изменить цвета в 1С» имеют в виду редактор кода: глаза устают от белого фона. Подсветка синтаксиса настраивается в Конфигураторе через Сервис → Параметры, вкладка «Модули»: там задаются цвета ключевых слов, комментариев, строк и фона.
Настройка личная. Она хранится на компьютере разработчика и не влияет ни на базу, ни на других программистов.
Если нужна полноценная тёмная тема для всей среды разработки, её дают 1С:EDT: среда построена на Eclipse, и тёмное оформление там включается в настройках внешнего вида.
Сохранение, перенос и сброс настроек цвета
Всё, что пользователь настроил сам (условное оформление списка, вариант отчёта), хранится в информационной базе в его личных настройках. Отсюда три практических следствия.
Перенести коллеге. В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) откройте Администрирование → Настройки пользователей и прав и найдите там обработку настроек пользователей. Она умеет копировать настройки от одного пользователя другому — выберите внешний вид, отчёты или всё сразу.
Сбросить один список или форму. В меню «Ещё» самой формы есть команда установки стандартных настроек. Она убирает ваши правила оформления только в этом окне, остальное не трогает.
Сбросить всё у пользователя. Через ту же обработку настроек пользователей — очистка. Это сотрёт и полезное: отборы, колонки, сохранённые варианты отчётов.
Перед очисткой настроек скопируйте их резервно другому, служебному пользователю. Отменить очистку нельзя, а свои варианты отчётов бухгалтер собирал месяцами.
Запуск с ключом /ClearCache здесь не помогает. Он очищает кэш конфигурации на клиенте, а пользовательские настройки лежат в базе и остаются на месте.
Если программист хранит выбранный пользователем цвет сам (например, цвет подсветки в обработке), удобно класть его строкой через функцию из раздела выше:
ХранилищеОбщихНастроек.Сохранить("ОбработкаКонтрольОплат", "ЦветПодсветки", ЦветВHex(ВыбранныйЦвет));
СохраненныйHex = ХранилищеОбщихНастроек.Загрузить("ОбработкаКонтрольОплат", "ЦветПодсветки");
ЦветПодсветки = ?(ЗначениеЗаполнено(СохраненныйHex), ЦветИзHex(СохраненныйHex), WebЦвета.Желтый);
Строка #FF8800 читается глазами при отладке, и её легко поправить.
Где чаще всего ошибаются с цветом
- 🔴 Красят колонку вместо строки. Присвоили
ЦветФонаколонке таблицы и получили целиком красную колонку. Для «строка по условию» — только условное оформление. - 🔴 Путают имя поля и имя элемента. В правиле оформления оформляемое поле — это имя элемента формы, а не путь к реквизиту.
- 🔴 Правят типовую форму напрямую. После снятия с поддержки обновление превращается в ручное сравнение. Условное оформление в расширение добавляется обработчиком
ПриСозданииНаСерверес аннотацией&После. - 🔴 Не сохраняют вариант отчёта. Настроили раскраску, закрыли отчёт с изменёнными настройками, потом нажали стандартные — правило пропало.
- 🔴 Цвет без смысла. Пять цветов в одном списке никто не запоминает. Хватает двух: тревога (красный текст) и внимание (жёлтый фон).
- 🔴 Рассчитывают только на цвет. На чёрно-белом принтере и у сотрудника с особенностями цветовосприятия подсветка теряется. Для печати дублируйте важное жирным шрифтом — параметр
Шрифтв том же правиле.