Как раскрасить строки динамического списка в расширении конфигурации 1С:Комплексная автоматизация?

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

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

Шаг 1: Добавление реквизитов в расширение

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

  1. Найдите нужную форму в дереве конфигурации расширения.
  2. Нажмите правую кнопку мыши на форме и выберите пункт «Добавить в расширение».
  3. Если вам нужно изменить запрос динамического списка, убедитесь, что сам объект Динамический список также добавлен в расширение.
  4. Для отображения нового реквизита (например, Ю_ЗапретОтгрузки) в списке, его необходимо добавить в запрос динамического списка через конструктор запроса, иначе система не «увидит» его при формировании данных.

Шаг 2: Установка параметров динамического списка

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


// В обработчике ПриСозданииНаСервере или при обновлении данных
Список.Параметры.УстановитьЗначениеПараметра("Начало", НачалоПериода);

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

Шаг 3: Программная настройка условного оформления

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

Разберем пример кода для раскраски строки, если наш новый реквизит Ю_ЗапретОтгрузки равен Истина:


Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокСтандартныйПоискНоменклатура.Имя);

ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Ю_ЗапретОтгрузки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;

Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.АльтернативныйЦветФонаПоля);

Рекомендации по оптимизации

Проанализируем ситуацию: стоит ли всегда делать это программно?

Таким образом, мы выяснили, что для успешной раскраски элементов в расширении необходимо не только правильно программно описать УсловноеОформление, но и корректно «пробросить» данные в запрос списка. Придерживайтесь этих шагов, и вы сможете гибко настраивать интерфейс под любые бизнес-задачи.

← На главную