При разработке интерфейса в 1С часто возникает необходимость визуально выделить строки в журнале или списке документов (например, подсветить значком закрытые документы, флаг запрета редактирования или особый статус проведения). Рассмотрим, как реализовать вывод пиктограммы на платформе 1С Предприятие 8 по заданному условию.
Если разработка ведется на обычных формах, наиболее оптимальным способом с точки зрения производительности является использование события ПриПолученииДанных элемента ТабличноеПоле. В отличие от события ПриВыводеСтроки, этот обработчик получает порцию данных массово, что существенно ускоряет работу списка.
Разберем по шагам порядок действий:
ПриПолученииДанных.ОформленияСтрок и применим требуемое условие.Проанализируем пример кода для установки значка в конкретную ячейку колонки:
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОС Из ОформленияСтрок Цикл
// Проверяем условие по реквизиту текущей строки
Если ОС.Данные.ВыводитьПиктограмму = Истина Тогда
// Устанавливаем необходимую картинку в нужную колонку
ОС.Ячейки.ИмяКолонки.УстановитьКартинку(БиблиотекаКартинок.ЗначокИнформация);
Иначе
// Очищаем картинку для остальных строк
ОС.Ячейки.ЯчейкаИконки.УстановитьКартинку(Новый Картинка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Важное замечание: При программной установке картинки убедитесь, что у соответствующей ячейки или колонки установлено свойство ОтображатьКартинку = Истина, иначе пиктограмма не появится на экране.
Для простых сценариев в обычных формах можно вовсе избежать написания кода. Платформа 1С позволяет связать индекс выводимой картинки напрямую с числовым или булевым реквизитом строки.
Выясним порядок настройки через палитру свойств:
ТабличноеПоле найдем свойство КартинкаСтрок и выберем коллекцию пиктограмм (общую картинку, содержащую несколько иконок одинакового размера).ДанныеКартинкиСтрок укажем имя реквизита (например, ВыводитьПиктограмму или числовое поле с индексом картинки).При таком подходе платформа автоматически сопоставляет значение реквизита с индексом картинки в коллекции. Если реквизит имеет тип Булево, значение Ложь соответствует первому значку коллекции (индекс 0), а Истина — второму значку (индекс 1).
В управляемом приложении работа со списками строится на объекте ДинамическийСписок. Вывести картинку по условию здесь можно двумя основными путями:
Таблица) открываем Условное оформление. Добавляем элемент оформления, в параметрах выбираем Картинка, указываем нужный значок, а в условиях прописываем ВыводитьПиктограмму = Истина. В оформляемых полях укажем колонку, где должен отображаться значок.ВЫБОР КОГДА ... ТОГДА ...). Устанавливаем для этого поля флаг Использовать всегда, а в свойствах таблицы формы указываем ПутьКДаннымКартинкиСтроки и выбираем коллекцию в КартинкаСтрок.Рекомендация по производительности: Категорически не рекомендуется выполнять дополнительные запросы к базе данных внутри визуальных обработчиков (таких как ПриПолученииДанных или ПриВыводеСтроки). Все данные, необходимые для расчета условий вывода иконок, должны содержаться в самом источнике данных списка.