Жёлтая кнопка на управляемой форме 1С: свойства, код и ограничения
Содержание
Жёлтую кнопку в 1С делают двумя путями: задают цвет фона в свойствах кнопки в конфигураторе (постоянный цвет) или меняют ЦветФона из кода в нужный момент (цвет зависит от состояния). Условное оформление формы здесь не поможет: оно красит поля и колонки таблиц, но не кнопки.
Всё ниже относится к управляемым формам платформы 8.3 с интерфейсом «Такси». В обычных формах у кнопки нет свойства цвета фона, и покрасить её нельзя. Если кнопка нужна только для заметности, сначала посмотрите на раздел про кнопку по умолчанию: он обходится без единой строки кода.
Что нужно знать до начала
Работать придётся в конфигураторе: цвет кнопки в режиме 1С:Предприятие штатными настройками пользователя не меняется. Значит, вы разработчик или у вас есть доступ к конфигурации (либо вы правите внешнюю обработку или отчёт).
Вот что полезно держать в голове:
- 🎨 У кнопки управляемой формы три цветовых свойства: цвет текста, цвет фона и цвет рамки.
- 🧩 Цвет задают значением типа
Цвет. Его берут из трёх источников: палитры,WebЦветаили стиля конфигурации. - ⚙️ Менять свойства кнопки можно и в конфигураторе, и в коде формы. Конфигуратор даёт постоянное значение, код — динамическое.
- 🖥️ Конфигурация, у которой стоит режим совместимости ниже 8.3.x, и старые платформы могут вести себя иначе. Проверяйте на своей версии.
Если конфигурация типовая и стоит на поддержке, правка формы снимет объект с поддержки. Для типовых решений аккуратнее делать то же самое через расширение конфигурации.
Способ 1. Свойства кнопки в конфигураторе
Это самый простой вариант, если кнопка должна быть жёлтой всегда.
- Откройте объект (обработку, документ, справочник) и перейдите в нужную форму.
- На закладке «Элементы» редактора формы найдите кнопку. Если она связана с командой, она лежит в командной панели или в группе.
- Выделите кнопку и откройте палитру свойств (клавиша
F4, если окно закрыто). - Найдите свойство «Цвет фона» и выберите цвет. В выпадающем списке есть вкладки с палитрой, цветами из Web и цветами стиля.
- При необходимости задайте контрастный «Цвет текста»: тёмный на жёлтом читается лучше, чем белый.
- Сохраните и запустите 1С:Предприятие в режиме отладки, чтобы увидеть результат.
В палитре жёлтый подбирают двумя способами. Либо берут именованный цвет из вкладки Web (он называется «Жёлтый»), либо задают нужный оттенок вручную. Чистый жёлтый (255, 255, 0) на белом фоне выглядит резко и плохо читается. Спокойнее смотрятся оттенки вроде (255, 223, 22) или светло-жёлтый (255, 235, 130).
Какой жёлтый выбрать
| Вариант | Как выглядит | Когда подходит |
|---|---|---|
| Именованный Web-цвет «Жёлтый» | Яркий, режет глаз | Когда кнопку надо сделать максимально заметной |
| Тёплый жёлтый, например (255, 223, 22) | Тоньше, ближе к акцентам интерфейса | Основное действие на форме |
| Светло-жёлтый, например (255, 235, 130) | Мягкая подсветка | Вторичные кнопки и подсказки |
| Цвет из стиля конфигурации | Меняется вместе со стилем | Когда оформление должно быть едино для всей программы |
Не красьте жёлтым больше одной-двух кнопок на форме. Если подсвечено всё, внимание не привлекает ничего.
Способ 2. Кнопка по умолчанию: жёлтая без настройки цвета
В интерфейсе «Такси» главную кнопку формы платформа выделяет сама: она получает акцентный жёлтый фон. Для этого у кнопки включают свойство «Кнопка по умолчанию» (в редакторе формы она стоит в палитре свойств). Платформа красит такую кнопку по правилам стиля, и ничего писать не нужно.
Особенности:
- На форме может быть только одна кнопка по умолчанию. Если отметить вторую, свойство снимется с первой.
- Кнопка по умолчанию срабатывает по
Enter, когда фокус не стоит на другой кнопке. Для кнопки «Записать и закрыть» или «Провести и закрыть» это удобно. - Оттенок определяется стилем. Если в конфигурации стиль заменён на собственный, цвет может отличаться от привычного.
Если вы одновременно задали кнопке свой ЦветФона и сделали её кнопкой по умолчанию, ориентируйтесь на то, что покажет проверка в клиенте. Явно заданный цвет и акцент стиля могут конфликтовать, а результат зависит от версии платформы.
Подходит, когда нужен «брендовый» акцент, а не конкретный оттенок. Если цвет должен быть именно такой, переходите к программной настройке.
Способ 3. Как менять цвет кнопки из кода
Динамическая подсветка нужна, когда цвет зависит от данных: есть непроведённые документы, остаток ниже нормы, заполнены не все реквизиты. Условное оформление кнопки не касается, поэтому свойство ставят вручную.
Минимальный пример, который красит кнопку по нажатию команды:
&НаКлиенте
Процедура ПодсветитьКнопку(Команда)
Элементы.ОтправитьОтчет.ЦветФона = WebЦвета.Желтый;
Элементы.ОтправитьОтчет.ЦветТекста = WebЦвета.Черный;
КонецПроцедуры
Здесь ОтправитьОтчет — имя элемента формы, а не имя команды. Если элемент называется иначе, подставьте своё. Имя элемента видно в дереве формы и в палитре свойств.
Чаще цвет определяют при открытии формы, на сервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.СуммаДокумента > 100000 Тогда
Элементы.КнопкаСогласовать.ЦветФона = Новый Цвет(255, 223, 22);
Элементы.КнопкаСогласовать.ЦветТекста = WebЦвета.Черный;
КонецЕсли;
КонецПроцедуры
Тот же приём работает на клиенте в обработчике события элемента или реквизита. Например, если пользователь изменил поле и надо сразу показать, что документ требует действия:
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
Если Объект.СуммаДокумента > 100000 Тогда
Элементы.КнопкаСогласовать.ЦветФона = Новый Цвет(255, 223, 22);
Иначе
Элементы.КнопкаСогласовать.ЦветФона = Новый Цвет;
КонецЕсли;
КонецПроцедуры
Присвоение Новый Цвет без параметров возвращает кнопке исходное оформление: это пустой цвет, платформа отрисует кнопку как обычно. Проверьте эту строку на своей версии платформы: на разных релизах пустой цвет может выглядеть чуть по-разному.
Откуда брать значение цвета
Вариантов три, и все они возвращают значение типа Цвет:
Новый Цвет(255, 223, 22)— три числа от 0 до 255 (красный, зелёный, синий). Точный контроль оттенка.WebЦвета.Желтый— именованный цвет. Короткая запись, но оттенок один.ЦветаСтиля.и далее нужный элемент стиля — цвет из стиля конфигурации. Выбирайте этот вариант, если оформление должно меняться вместе со стилем.
Имена элементов стиля подсказывает автодополнение в конфигураторе: после точки появится список. Не угадывайте имя по памяти, ошибка в имени сломает форму при открытии.
Хотите, чтобы цвет не «застревал»: выставляйте его при каждом изменении условия, в обе стороны. Если красить только в одну, после исправления данных кнопка останется жёлтой.
Почему не получается через условное оформление
Многие ищут решение именно здесь, поэтому остановимся подробнее. Условное оформление формы работает с полями ввода, колонками и ячейками таблиц, группами и надписями. Кнопки, команды и командные панели в списке оформляемых элементов не участвуют. То есть правило «если сумма больше 100 000, то жёлтый фон» привяжется к полю суммы, но не к кнопке «Согласовать».
Что делать:
- Хотите подсветить поле? Используйте условное оформление: это его задача.
- Нужна именно кнопка? Меняйте
ЦветФонаиз кода, как показано выше. - Нужен сигнал без кода? Добавьте рядом надпись или поле, которое условное оформление покрасит, а кнопку оставьте как есть.
Ещё один обход: сделать две одинаковые кнопки и переключать их видимость. Но так вы дублируете команды и усложняете форму, поэтому берите вариант только когда цвет в коде по какой-то причине не подходит.
Несколько кнопок и общая процедура
Когда подсвечивать нужно не одну кнопку, а несколько, не дублируйте код. Вынесите смену цвета в отдельную процедуру и вызывайте её из всех нужных мест:
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПодсветку(Кнопка, Включить)
Если Включить Тогда
Кнопка.ЦветФона = Новый Цвет(255, 223, 22);
Кнопка.ЦветТекста = WebЦвета.Черный;
Иначе
Кнопка.ЦветФона = Новый Цвет;
Кнопка.ЦветТекста = Новый Цвет;
КонецЕсли;
КонецПроцедуры
Вызов выглядит так: УстановитьПодсветку(Элементы.КнопкаСогласовать, Объект.СуммаДокумента > 100000);. Один вызов покрывает обе ветки условия, и вы не забудете сбросить цвет.
Что даёт такой подход:
- 🔁 Оттенок жёлтого лежит в одном месте. Захотите сделать его теплее, поправите одну строку.
- 🧪 Логику проще проверять: процедуру не надо искать по всей форме.
- 🧱 Вызов из
ПриСозданииНаСервереи из обработчиков событий выглядит одинаково.
Когда форма принадлежит типовой конфигурации, делайте всё это в расширении: подключите форму к расширению и поставьте обработчик после открытия. Так обновление типового решения не затрёт вашу подсветку, а сама форма не уйдёт с поддержки.
Как проверить результат
Перед выкладкой пройдите короткий список:
- Откройте форму в тонком клиенте и в веб-клиенте: цвет кнопки одинаково заметен.
- Выполните условие в обе стороны: кнопка желтеет и возвращается к обычному виду.
- Откройте форму от имени пользователя с ограниченными правами: код с обращением к
Элементыработает независимо от ролей, но проверка не помешает. - Убедитесь, что текст на кнопке читается: тёмный на жёлтом, без серых оттенков.
Тонкий клиент, веб-клиент и мобильное приложение
Основной сценарий — тонкий и веб-клиент в «Такси». Тонкий клиент рисует кнопку средствами платформы, веб-клиент — средствами браузера. Свойства цвета платформа передаёт и туда, и туда, но итоговый вид может слегка отличаться.
Что проверять:
- Оба клиента. Откройте форму в тонком клиенте и в браузере. Разницу в оттенке и в обводке заметно сразу.
- Тёмная и светлая тема браузера. Яркий жёлтый на тёмном фоне может выглядеть слишком контрастно. Текст кнопки при этом задавайте явно.
- Масштаб и разрешение. Рамка кнопки при масштабе экрана 125% или 150% иногда выглядит тоньше, чем в 100%. Это нормально.
- Мобильное приложение. Мобильная платформа применяет оформление по своим правилам. Не рассчитывайте, что кнопка выглядит так же, как на компьютере, и проверяйте на устройстве.
Если нужен единый вид у всех пользователей, держите цвет в стиле конфигурации, а не раскиданным по формам: тогда поменять оттенок можно в одном месте.
Что может пойти не так
Разберём типичные причины, почему кнопка не стала жёлтой:
- ❌ Обычная форма. Если форма не управляемая, свойства цвета у кнопки нет. Решение — перевести форму на управляемую, а не искать скрытую настройку.
- ❌ Кнопка в командной панели. Кнопки командной панели платформа оформляет по стилю командных панелей, и собственный цвет они принимают не всегда. Вынесите кнопку в отдельную группу формы: у обычной кнопки внутри группы свойства работают без оговорок.
- ❌ Не то имя элемента. В коде нужно писать имя элемента формы, а не команды. Если имена совпадают случайно, всё в порядке; если нет, получите ошибку «Поле объекта не обнаружено».
- ❌ Цвет не сбрасывается. Вы задали цвет в одном условии и не предусмотрели обратное. Добавьте ветку
Иначе, где возвращаетеНовый Цвет. - ❌ Свойство задано в конфигураторе и перезаписано в коде. Код всегда побеждает: если в
ПриСозданииНаСерверестоит другой цвет, настройка из палитры не увидится. - ❌ Старый кэш клиента. После правки формы в тонком клиенте иногда остаётся прежний вид. Закройте программу и откройте снова, а в веб-клиенте обновите страницу.
Прежде чем чистить кэш клиента или перезапускать рабочие процессы сервера, предупредите пользователей: их сеансы оборвутся. Для проверки цвета достаточно перезапустить свой клиент.
Частые вопросы
Можно ли покрасить кнопку в обычной форме?
Работает ли цвет кнопки, заданный в конфигураторе, для всех пользователей?
Как вернуть кнопке стандартный вид из кода?
ЦветФона значение Новый Цвет. Пустой цвет вернёт оформление по умолчанию.Чем отличается жёлтая кнопка по умолчанию от кнопки с жёлтым фоном?
Enter. Фон кнопки вы задаёте сами, а на клавиатурное поведение он не влияет.Где посмотреть доступные цвета стиля?
ЦветаСтиля..