Как в 1С выделить строки таблицы синим цветом при установленном флажке?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки интерфейсов в системе «1С:Предприятие» часто возникает задача визуального выделения важных данных. Яркий пример — необходимость окрасить строку таблицы в определенный цвет (например, нежно-синий), когда пользователь или система устанавливает флажок (булево значение Истина) в этой строке. Это значительно повышает эргономику интерфейса и помогает пользователям быстрее ориентироваться в больших массивах информации.

В этой статье мы подробно разберем, как правильно реализовать такое выделение в современных управляемых формах 1С 8.3. Мы проанализируем, почему старые методы отрисовки больше не работают, пошагово настроим оформление через Конфигуратор и напишем гибкий программный код, соответствующий стандартам разработки фирмы «1С».

Почему старые методы «ПриВыводеСтроки» не подходят для управляемых форм

Если вы ранее работали с обычными формами (в толстом клиенте 1С 8.2 или 8.1), то наверняка помните события таблицы ПриВыводеСтроки или ПриПолученииДанных. В этих обработчиках разработчики напрямую управляли свойствами ячеек и строк, изменяя их цвет «на лету» в коде.

Рассмотрим, почему в управляемом приложении (1С v8.3) этот подход использовать категорически нельзя (и платформа физически не предоставит вам таких событий):

  1. Разделение выполнения на клиент и сервер: В управляемом интерфейсе вся логика отрисовки и визуализации данных передана на сторону клиента (в веб-клиент или тонкий клиент), в то время как данные хранятся и обрабатываются на сервере. Постоянный вызов событий отрисовки на клиенте требовал бы частых серверных вызовов, что привело бы к колоссальным задержкам работы интерфейса.
  2. Передача управления платформе: Платформа 1С 8.3 самостоятельно оптимизирует отрисовку элементов интерфейса. Вместо прямого вмешательства в процесс рисования разработчику предлагается декларативный подход — механизм Условного оформления. Мы лишь задаем правила, а платформа сама максимально эффективно красит строки.

Выяснив архитектурные особенности, перейдем к первому и самому простому способу решения нашей задачи — интерактивной настройке условного оформления в Конфигураторе.

Способ 1. Настройка условного оформления через Конфигуратор (визуальный метод)

Если вам нужно настроить статическое оформление, которое не будет меняться в зависимости от сложных алгоритмов в процессе работы пользователя, проще всего сделать это визуально в редакторе формы. Разберем этот процесс по шагам:

  1. Откройте нужную управляемую форму в конфигураторе.
  2. Обратите внимание на правое верхнее окно, где отображается дерево реквизитов формы. Кликните по самой верхней строке — **Форма** (или нажмите сочетание клавиш Alt + Enter, предварительно выбрав форму), чтобы открыть палитру свойств всей управляемой формы.
  3. Найдите свойство Условное оформление и нажмите на гиперссылку Открыть. Перед вами откроется окно настройки правил.
  4. Нажмите кнопку Добавить (зеленый плюс), чтобы создать новое правило условного оформления.
  5. Перейдите на вкладку Оформление. Нажмите на троеточие в строке Цвет фона. Мы настоятельно рекомендуем не выбирать ядовито-синий цвет (RGB 0, 0, 255), так как на его фоне черный текст станет абсолютно нечитаемым. Вместо этого выберите мягкий пастельный оттенок, например, из палитры Web-цветов — WebЦвета.Лазурный или задайте его вручную через RGB (например, 220, 235, 255). Нажмите «ОК».
  6. Перейдите на вкладку Условие. Здесь мы определяем, при каких обстоятельствах строка должна изменить цвет. Нажмите кнопку «Добавить». В колонке Левое значение выберите ваш реквизит-флажок (путь будет выглядеть примерно так: Объект.ИмяТабличнойЧасти.ИмяРеквизитаФлажка). В качестве вида сравнения укажите Равно, а в колонке Правое значение выберите Да (что соответствует значению Истина).
  7. Перейдите на вкладку Оформляемые поля. Если вы хотите, чтобы синим цветом выделялась вся строка таблицы целиком, добавьте в список оформляемых полей имя самой таблицы формы (например, ТабличнаяЧасть1). Если же требуется раскрасить только конкретную ячейку с флажком или соседнее поле, укажите именно эти элементы (колонки) таблицы формы.
  8. Нажмите «ОК» и сохраните форму.

Теперь при открытии формы и при интерактивном изменении флажка пользователем платформа будет автоматически перерисовывать строку в приятный синий цвет.

Способ 2. Программная настройка условного оформления (Стандарт фирмы «1С»)

Несмотря на простоту интерактивного метода, стандарты разработки фирмы «1С» (изложенные на ИТС) рекомендуют выполнять настройку условного оформления программно. Рассмотрим подробнее преимущества этого подхода:

Проанализируем пример кода, который решает нашу задачу. Этот код необходимо разместить в модуле управляемой формы в обработчике события ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Инициализируем настройку оформления при создании формы
    НастроитьПодсветкуСтрокТаблицы();
    
КонецПроцедуры

&НаСервере
Процедура НастроитьПодсветкуСтрокТаблицы()

    // 1. Создаем новый элемент условного оформления формы
    НовыйЭлементОформления = УсловноеОформление.Элементы.Добавить();
    
    // 2. Указываем оформление: задаем нежно-синий цвет фона
    // Мы используем объект Цвет, определяя его по компонентам RGB
    НежноСинийЦвет = Новый Цвет(220, 235, 255); 
    НовыйЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", НежноСинийЦвет);
    
    // 3. Формируем условие применения оформления
    ЭлементОтбора = НовыйЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    // Обратите внимание: левое значение — это путь к данным реквизита формы
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.ИмяВашейТабличнойЧасти.ИмяРеквизитаФлажка");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Истина;
    ЭлементОтбора.Использование  = Истина;
    
    // 4. Указываем, какие поля на форме подлежат оформлению
    // Для окрашивания всей строки добавляем саму таблицу формы как элемент оформления
    ОформляемоеПоле = НовыйЭлементОформления.Поля.Элементы.Добавить();
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ИмяЭлементаТаблицыНаФорме");
    ОформляемоеПоле.Использование = Истина;

КонецПроцедуры

Давайте подробно разберем ключевые моменты этого кода:

Особенности работы с динамическими списками

Если ваша таблица на форме является не просто табличной частью документа, а отображает данные базы через Динамический список (например, список документов или справочник), то настраивать условное оформление нужно немного иначе.

У динамического списка есть свое собственное свойство условного оформления. Если настроить оформление на уровне всей формы для динамического списка, это может негативно сказаться на производительности. Для списков стандартами 1С рекомендуется обращаться к свойству компоновщика настроек самого списка. Посмотрим на пример кода:


&НаСервере
Процедура НастроитьОформлениеДинамическогоСписка()

    // Адресация идет через настройки компоновщика конкретного динамического списка
    НовыйЭлемент = Список.КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();
    
    // Задаем цвет фона
    НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СветлоСиний);
    
    // Условие: если поле "ФлагАктивности" равно Истина
    ЭлементОтбора = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ФлагАктивности"); // Без префикса "Объект"
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Истина;
    
    // Оформляемые поля
    ПолеОформления = НовыйЭлемент.Поля.Элементы.Добавить();
    ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ФлагАктивности"); // Имя колонки в списке

КонецПроцедуры

В случае динамического списка в путях компоновки данных (ПолеКомпоновкиДанных) мы указываем чистые имена полей из запроса динамического списка, без префиксов типа Объект.ТабличнаяЧасть. Это делает код чище и логичнее.

Резюме и практические советы

Мы успешно решили задачу выделения строк с установленным флажком синим фоном. Подводя итог, выделим несколько золотых правил работы с условным оформлением в 1С:

  1. Всегда отдавайте предпочтение программному методу настройки условного оформления в процедуре ПриСозданииНаСервере — это защитит вашу конфигурацию от ошибок при будущем обновлении и переименовании реквизитов.
  2. Выбирайте пастельные и мягкие тона для бэкграунда строк, чтобы не ухудшать читаемость текста. Контрастность интерфейса — залог здоровья глаз ваших пользователей.
  3. Для динамических списков настраивайте условное оформление внутри свойства КомпоновщикНастроек.Настройки самого списка, а для обычных таблиц значений и табличных частей — на уровне свойств формы.

Используя эти простые и эффективные практики, вы сможете сделать интерфейсы ваших прикладных решений в 1С 8.3 максимально дружелюбными, современными и быстрыми!

← На главную