1с как раскрасить динамический список

Обновлено: 04.07.2024

Приветствую, коллеги! В данной статье я расскажу, что такое условное оформление списка в системе 1С и для чего оно нужно, а также опишу алгоритм проведения условного оформления списка в 1С.

Общая информация

Условное оформление списка – это программная команда, которое отвечает за регулировку внешнего отображения, доступа, управление элементами списка при выполнении некоторого условия.

Такое решение является наиболее удобным, так как все условия и регулировки можно задать единожды, а затем применить ко всем необходимым спискам.

Условное оформление динамического списка

Рассмотрим, как проводить условное оформление в динамическом списке при помощи локальной команды, показанной ниже:

Рисунок 1 Локальная команда для проведения условного оформления динамического списка Рисунок 1 Локальная команда для проведения условного оформления динамического списка

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

Рисунок 2 Код для анализа элементов уже существующего динамического списка Рисунок 2 Код для анализа элементов уже существующего динамического списка

Создание условного оформления списков в начала

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

Рисунок 3 Внесение элемента для описания условного оформления Рисунок 3 Внесение элемента для описания условного оформления

Далее нужно присвоить данному элементу следующие параметры:

· Визуальное оформление, которое отвечает за шрифт, цвет, жирность и так далее;

· Параметр условия, при верности которого оформление будет применено;

· Номера или наименования полей, которые будут подлежать условному оформлению.

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

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

Рисунок 5 Создание нового элемента коллекции условий Рисунок 5 Создание нового элемента коллекции условий

Таким образом мы создали условное оформление, которое будет применено в случае, если строка имеет поле «НаКонтроле» (содержит значение «Истина»).

Также пропишем, какие поля будут выделены, при помощи условного оформления. В случае, если не делать данную операцию, вся строчка будет иметь выделение. Внесём новое поле для коллекции, после чего пропишем, что оформление должно иметь лишь поле «Номер», данное решение в программном виде выглядит так:

Рисунок 6 Программное выделение полей при условном оформлении списка Рисунок 6 Программное выделение полей при условном оформлении списка

Далее производим загрузку всех новых настроек для нашего динамического списка, это происходит так:

Рисунок 7 Загрузка новых настроек динамического списка Рисунок 7 Загрузка новых настроек динамического списка

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

Рисунок 8 Перечень с накладными без условного оформления в 1С Рисунок 8 Перечень с накладными без условного оформления в 1С

Далее нужно активировать команду «Условное оформление», после чего мы увидим следующее:

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

В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Одним из полезных свойств динамического списка является возможность настройки оформления его строк. Это делается через свойство УсловноеОформление динамического списка.

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

Для этого создадим форму списка документа ПриходнаяНакладная и откроем палитру свойств основного реквизита формы Список. В строке Настройка списка нажмем Открыть.


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

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

Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда строки списка документов будут розовыми.

Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора. Для этого нажмем на кнопку Добавить и укажем в графе Левое значение – поле документа Дата, в графе Вид сравнения – Больше, а в графе Правое значение выберем из списка Начало этого месяца.

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


Таким образом, мы добились требуемого оформления списка документов ПриходнаяНакладная.


По условию можно оформить также и строки табличной части документов или других объектов конфигурации. Это делается с помощью условного оформления формы. Подробнее смотрите в вопросе Как раскрасить строки табличной части по некоторому условию?

Аватар пользователя mykib.org

В данной публикации рассмотрим пример раскрашивания строк просроченных документов в журнале документов (динамическом списке) от текущей даты и текущего времени.

Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно меняется. То есть текущую дату надо считывать динамически, а не определять при первом открытии.

Мы узнаем, как в управляемой форме:

- использовать обработчик ожидания;

- программно настроить условное оформление динамического списка

Допустим, у нас есть документ «Умный заказ» с реквизитом «КонтрольныйСрок» и типом «Дата» (состав даты «Дата и время»):

Документ Умный заказ с реквизитом КонтрольныйСрок и типом Дата (состав даты Дата и время)

И журнал документов «УмныйЗаказ» с графой «КонтрольныйСрок», соответствующей этому реквизиту:

Журнал документов УмныйЗаказ с графой КонтрольныйСрок

Наша задача – раскрасить розовым цветом строку, если Контрольный срок меньше Текущей даты с учетом того, что текущая дата постоянно изменяется.

Создадим управляемую форму:

Управляемая форма журнала документов УмныйЗаказ с графой КонтрольныйСрок

Теперь при создании на сервере мы вызовем процедуру раскрашивания строк «ОбновленияОтображенияПросрочкиНаСервере». И будем вызывать эту процедуру с заданной периодичностью.

То есть, при создании на сервере:

При открытии подключим обработчик ожидания:

Таким образом, с периодичностью, указанной в переменной ПериодАвтообновления мы будем вызывать процедуру раскрашивания строк:

В этой процедуре мы программно создали условное оформление нашего динамического списка.


В форме

В формах списка условное оформление существует и на уровне самого динамического списка:

2

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

3

2. Программная работа с условным оформлением (УО).

Начнем с того, что работа с УО доступна только:

Для Добавления элемента УО в списке нужно обратится к списку и добавить элемент УО:

ЭлементОформления = Список . УсловноеОформление . Элементы . Добавить ();

Для УО формы добавление происходит через прикладной объект УсловноеОформление:

ЭлементУсловногоОформления = УсловноеОформление . Элементы . Добавить ();

Далее алгоритмы будут похожими. Для УО нам нужно задать условие отбора, задать значение свойства УО и добавить оформляемые поля.

Значение свойства УО:

Элемент . Использование = Истина;

Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:

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

В качестве ИменПолей нужно передавать строковое представление ИМЕНИ реквизита.

3. Все настройки УО хранятся для каждого пользователя отдельно.

4. Пример.

4

Выводы:

Читайте также: