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

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

Часто при работе с журналами или формами списков документов возникает необходимость визуально выделить определенные строки. Например, если у документа не заполнено важное поле или он требует внимания, мы хотим вывести в строке специальную иконку (галочку) или закрасить всю строку определенным цветом. Давайте подробно разберем, как реализовать этот функционал в управляемом приложении на платформе 1С:Предприятие, проанализируем доступные методы и решим проблему шаг за шагом.

Решение 1: Настройка условного оформления в пользовательском режиме

Для начала рассмотрим самый простой способ, не требующий внесения изменений в конфигуратор. Платформа предоставляет мощный инструмент пользовательских настроек динамического списка. Выделим нужные документы цветом прямо из интерфейса.

  1. Откройте нужный журнал или форму списка документов.
  2. В командной панели нажмите кнопку Еще, затем выберите пункт Настроить список....
  3. Перейдите на вкладку Условное оформление.
  4. Добавьте новое условие, где укажите нужное правило отбора (например, проверка реквизита на пустое значение).
  5. Настройте цвет фона или цвет текста для строк, удовлетворяющих этому условию.

Этот способ отлично подходит для локальных задач пользователя. Однако, если нам необходимо применить такое оформление для 150+ пользователей одновременно, бегать к каждому и настраивать список вручную — нецелесообразно. Кроме того, пользовательские настройки не версионируются и могут слететь при очистке кэша. Поэтому перейдем к программным методам.

Решение 2: Программное добавление условного оформления

Разберем, как задать цветное выделение строк с помощью встроенного языка 1С. В типовых конфигурациях, таких как «Управление торговлей» (УТ 11), часто используется программная установка оформления.

Важно понимать специфику типовых конфигураций: при создании формы на сервере стандартные процедуры часто очищают все заданное в конфигураторе условное оформление и пересоздают его программно. Посмотрим на пример кода, который добавляет оформление для списка:


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

Чтобы избежать затирания ваших настроек типовыми механизмами, мы рекомендуем добавлять программное оформление в фиксированные настройки компоновщика динамического списка. Использование свойства ФиксированныеНастройки гарантирует, что ваше оформление наложится поверх любых пользовательских фильтров и не будет случайно отключено. Делается это через добавление элемента в коллекцию Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.Элементы.

Также стоит отметить, что современные конфигурации на базе Библиотеки стандартных подсистем (БСП) имеют готовые экспортные процедуры в модулях общего назначения. Они позволяют добавлять условное оформление буквально в пару строк кода, передав нужные параметры (имя поля, условие сравнения, цвет оформления), что значительно сокращает объем написанного кода.

Решение 3: Добавление колонки с картинкой (галочкой)

Если наша задача — вывести именно графическую галочку (флажок), а не просто подсветить строку, подход будет немного другим. Платформа 1С не разрешает размещать интерактивное поле флажка непосредственно в строке динамического списка. Обойдем это ограничение, используя механизм картинок строк.

Разберем по шагам алгоритм создания такой колонки:

  1. Откройте свойства динамического списка и установите флаг Произвольный запрос.
  2. В тексте запроса добавьте вычисляемое поле, которое будет возвращать индекс картинки в зависимости от условия. Используем конструкцию: ВЫБОР КОГДА <ВашеУсловие> ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ИндексКартинки.
  3. На форму в элементы списка добавьте новую колонку, связанную с созданным полем ИндексКартинки.
  4. В свойствах этой колонки измените вид элемента на Поле картинки. Заголовок можно скрыть для экономии места.
  5. В свойстве Картинка значений (или КартинкаСтрок для всей таблицы) выберите подходящую коллекцию картинок из конфигурации. В стандартных коллекциях картинка с индексом 0 обычно пустая, а картинка с индексом 1 содержит изображение зеленой галочки.

Теперь платформа автоматически будет выводить пустую область или галочку в зависимости от того, какое значение (0 или 1) рассчитал наш произвольный запрос.

Важное замечание: Кэширование настроек

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

Если пользователь ранее менял ширину колонок или как-то взаимодействовал со списком, его старые настройки будут перекрывать новую структуру формы. Чтобы внесенные вами программные или структурные изменения вступили в силу, проинструктируйте пользователей зайти в меню списка Еще и нажать команду Установить стандартные настройки. Это сбросит кэш и принудительно обновит внешний вид формы списка.

← На главную