Разработка и Конфигурация · 11 мин
Как в 1С выделить несколько строк цветом
Как выделить несколько строк цветом в 1С: условное оформление списка, программная раскраска строк табличной части и динамического списка, типичные ошибки и FAQ.
Выделение строк цветом в 1С решается двумя принципиально разными способами: через условное оформление (когда цвет зависит от данных строки) и через программное изменение свойства оформления элементов коллекции. Первый способ работает в динамических списках, табличных частях и формах списка документов, второй применяется там, где условного оформления недостаточно или оно недоступно.
Ключевой момент: платформа 1С не позволяет «покрасить строку» напрямую, как в Excel. Цвет всегда привязывается либо к условию над данными, либо к программно установленным параметрам оформления. Поэтому задача «выделить несколько строк» сводится к тому, чтобы правильно описать условие, объединяющее нужные строки, или явно перечислить эти строки в коде.
Ниже разобраны оба подхода на практических примерах: раскраска строк табличной части документа, условное оформление динамического списка, выделение по нескольким условиям одновременно, а также ограничения, о которых часто забывают.
Как работает выделение цветом в 1С и какой способ выбрать
В управляемых формах цвет строки определяется механизмом условного оформления. Он существует в двух местах: у самой формы (элемент «УсловноеОформление» в реквизитах формы) и у динамического списка, если список построен на произвольном запросе. Оформление формы применяется к табличным частям и обычным спискам, оформление динамического списка — только к нему.
Выбор способа зависит от источника условия. Если строка должна быть цветной из-за значения её полей (просроченный заказ, отрицательный остаток, признак пометки на удаление) — используйте условное оформление без единой строки кода. Если цвет зависит от внешних данных, результата расчёта или действия пользователя (например, «подсветить выбранные менеджером строки») — потребуется программная установка оформления.
Как выбрать действие
Выделение строк через условное оформление формы без программирования
Самый простой сценарий доступен даже пользователю без прав разработчика. В форме списка документов или справочника откройте меню «Ещё» → «Настроить список» (в некоторых конфигурациях — «Все действия» → «Настроить список»). Перейдите на закладку «Условное оформление» и добавьте новый элемент.
В элементе заполните три части: оформление (выберите параметр «Цвет фона» и нужный цвет), отбор (условие, например «Сумма больше 100000» или «Проведён равно Нет») и оформляемые поля (оставьте пустым, чтобы красилась вся строка, или укажите конкретные колонки). После нажатия «ОК» все строки, удовлетворяющие условию, будут подсвечены.
Чтобы выделить несколько разных групп строк разными цветами, добавьте несколько элементов условного оформления — по одному на каждое условие. Порядок элементов важен: при пересечении условий приоритет имеет элемент, расположенный выше в списке.
- 1Откройте форму списка и выберите «Ещё» → «Настроить список»
- 2Перейдите на закладку «Условное оформление» и нажмите «Добавить»
- 3В поле «Оформление» задайте параметр «Цвет фона» и выберите цвет
- 4На закладке «Отбор» добавьте условие по полям строки
- 5Оставьте список оформляемых полей пустым, чтобы красилась вся строка
- 6Нажмите «ОК» и проверьте, что нужные строки подсвечены
Программная раскраска строк табличной части документа
Когда условие нельзя выразить отбором — например, цвет зависит от остатка на складе, вычисляемого запросом в момент открытия, — оформление устанавливается кодом в модуле формы. Элементы условного оформления формы создаются в обработчике «ПриСозданииНаСервере».
Типовой код выглядит так: получаем коллекцию условного оформления формы, добавляем элемент, заполняем отбор, параметр оформления и оформляемые поля табличной части.
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Количество");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = 100;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоЖелтый);
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Товары");
Обратите внимание на две тонкости. В левом значении отбора указывается путь к данным («Объект.Товары.Количество»), а в оформляемом поле — имя элемента формы («Товары» — имя таблицы на форме). Если перепутать эти значения, оформление молча не сработает, и платформа не выдаст ошибку.
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 230, 230));Условное оформление динамического списка
Формы списков документов и справочников в типовых конфигурациях построены на динамических списках. Если вы дорабатываете такую форму в конфигураторе, условное оформление настраивается либо у самого динамического списка (в его свойствах, кнопка «Условное оформление»), либо у формы — оба варианта работают, но оформление списка применяется ко всем формам, где этот список используется.
Для динамического списка с произвольным запросом условие строится по полям запроса. Например, если в запросе есть поле «Просрочено», вычисляемое сравнением даты оплаты с текущей датой, в отборе оформления достаточно указать «Просрочено Равно Да» и задать красный фон. Все просроченные строки будут выделены автоматически, включая вновь появляющиеся при обновлении списка.
Программно оформление динамического списка меняется через свойство «Список.УсловноеОформление» — структура кода аналогична оформлению формы, только пути к полям указываются без префикса «Объект».
Выделение нескольких строк по разным условиям
Задача «выделить несколько строк» чаще всего означает несколько групп строк с разной логикой: просроченные — красным, крупные — жёлтым, новые — зелёным. Реализуется это несколькими элементами условного оформления, и здесь критичны два момента.
Первый — приоритет. Элементы применяются сверху вниз, и если строка подпадает под два условия, видимый результат определяет первый подошедший элемент. Поэтому более строгие и важные условия (просрочка) ставят выше менее важных (крупная сумма). Второй момент — пересечение условий. Если логика сложная, лучше сделать условия взаимоисключающими, добавив в отбор верхнего элемента отрицание нижнего, чтобы поведение было предсказуемым.
Для группировки нескольких условий внутри одного элемента используйте группы отбора «И» и «ИЛИ». Например, выделить строки, где сумма больше порога И статус «Согласован», — это одна группа «И» с двумя элементами отбора.
Сравнение вариантов
Быстро и без разработчика, но доступно только в формах списков и не переносится между пользователями автоматически
Работает у всех пользователей, требует доработки конфигурации и обновления базы
Максимальная гибкость, цвет может зависеть от расчётов; минус — код нужно поддерживать
Проверка результата и типичные ошибки
После настройки откройте форму и проверьте три вещи: строки с нужными данными окрашены, строки без условия не окрашены, при изменении данных строки цвет обновляется автоматически. Если оформление не сработало, чаще всего виноваты не цвет и не отбор, а пути к полям.
Как проверить результат
Фон строки соответствует заданному цвету
Цвета нет — проверьте путь к данным в отборе и флаг «Использование»
Стандартный фон
Окрашена лишняя строка — условие отбора слишком широкое
Цвет появляется или исчезает сразу после изменения
Цвет не меняется — оформление привязано не к тому полю
Ограничения и безопасные границы доработки
Условное оформление не работает в обычных формах (толстый клиент старых конфигураций использует событие «ПриВыводеСтроки» табличного поля — там логика совершенно другая). Также оформление не применяется к строкам, которых нет в выборке: например, динамический список с группировкой показывает цвет только у строк данных, а не у строк группировки, если оформление не настроено отдельно для них.
При доработке типовой конфигурации делайте изменения через расширение, а не прямое редактирование конфигурации: это сохранит возможность обновления. Перед программной установкой оформления убедитесь, что код выполняется в «ПриСозданииНаСервере» — при повторном создании формы элементы не должны дублироваться, иначе коллекция оформления будет расти и замедлять отрисовку.
FAQ
Как выделить цветом только одну колонку, а не всю строку?
В элементе условного оформления заполните список оформляемых полей: добавьте туда только нужные колонки (по именам элементов формы). Тогда цвет фона применится исключительно к указанным ячейкам, остальная часть строки останется стандартной.
Можно ли раскрасить строки в печатной форме документа?
Условное оформление формы на печать не влияет. В табличном документе цвет задаётся в макете: либо заранее в области шаблона, либо программно через свойство «ЦветФона» области при выводе, когда известны данные строки.
Почему оформление, настроенное пользователем, пропало после обновления?
Пользовательские настройки списка хранятся в хранилище настроек и могут сбрасываться при изменении структуры формы или очистке настроек. Если подсветка нужна постоянно всем пользователям, перенесите её в условное оформление формы в конфигураторе или в расширение.
Как задать свой цвет, которого нет в палитре WebЦвета?
Используйте конструктор «Новый Цвет(Красный, Зелёный, Синий)» со значениями от 0 до 255, например Новый Цвет(255, 230, 230) для светло-красного фона. В диалоговой настройке оформления цвет выбирается через стандартный диалог выбора цвета.
Работает ли выделение цветом в мобильном клиенте?
Условное оформление форм поддерживается и в мобильной платформе, но набор оформляемых параметров там уже, а отображение цветов может отличаться. Проверяйте результат непосредственно на целевом устройстве, особенно если используются нестандартные оттенки.
Что важно запомнить
Несколько строк в 1С выделяют цветом через условное оформление: отбор по данным строки плюс параметр «Цвет фона». Простые условия настраиваются без кода через «Настроить список», сложные — программно в модуле формы один раз при её создании. Чаще всего оформление не работает из-за неверного пути к данным в отборе или снятого флага «Использование».