Как раскрасить строки табличной части по некоторому условию?
В 1С Предприятии 8.2 к табличной части можно применить такое же условное оформление, как и к динамическому списку. Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.
Например, нам требуется оформить строки табличной части приходной накладной так, чтобы строки с суммой больше 30000 были выделены желтым фоном, а ячейки Товар и Количество строк табличной части с количеством больше единицы были выделены красным текстом.
В появившемся окне Настройка условного оформления нажмем кнопку Добавить.
Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим желтый цвет фона.
Затем укажем список оформляемых полей. В отличии от оформления динамического списка, построенного на системе компоновки данных, если мы хотим выделить полностью строку, здесь нужно перечислить все поля строки табличной части.
Заметим, что подобным образом можно оформить не только строки табличной части, но и все поля документа.
Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/КакРаскраситьСтрокиТабличнойЧасти.dt. Пример выполнен на версии платформы 8.2.9.356.
По условию можно оформить также и строки списка документов или других объектов конфигурации. Это делается через УсловноеОформление списка. Подробнее смотрите в вопросе Как раскрасить строки списка по некоторому условию?
Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)
В интерфейсе Такси (Управляемые формы) системы Кронос: WMS на 1С во многих местах требовалось различное оформление динамических списков, поэтому мы решили для себя создать универсальную функцию по работе с ними.
Например, цвет раскраски строк списка заявок на хранение (входящих поставок) настраивается в каждой складской операции:
Внешний вид списка при этом выглядит следующим образом:
Для начала придумаем имя нашей универсальной функции, её параметры
Разберем параметры функции:
Еще примеры вызовов функции:
Как видно, параметр «ТЧ» у нас может принимать как значения «СписокДокументов_Приемка_Паллеты», так и «Объект.АнализДокумента», т.е. как быть объектом метаданных, так и быть просто списком на форме.
Добавим новый элемент оформления и его параметры:
Отбор, как обычно, устанавливается для полей компоновки:
В окончании нашей функции сделаем возврат добавленного оформления для возможности последующей работы с ним:
Для удобства привожу функцию целиком:
UPD. Возникает вопрос, а как хранить оформление в справочнике и как его оттуда получать.
Есть несколько вариантов, например, в виде ХранилищеЗначения или отдельными полями, или ЗначениеВСтрокуВнутр.
Итак, как сохранить в справочнике установленное пользователем оформление (цвет текста, цвет фона, шрифты):
Назад в справочнике восстанавливаем так:
А там где нужно вывести, например, в функцию
Подписывайтесь на мой канал (наверху), будет много интересного бесплатного контента
Специальные предложения
Раскрашивать каждый элемент справочника тоже не каждый пользователь будет, даже если это удобно.
Я делал отдельный справочник оформлений, в который добавляются элементы для различных типовых ситуаций, которые необходимо как-то выделить в программе.
У каждого элемента есть Код, под которым он используется в программе, и подробное Наименование, которое видит пользователь при настройке оформлений под себя.
Настраиваются такие параметры как цвет текста/фона и шрифт.
У каждого элемента справочника есть значение настройки по умолчанию, которое применяется для всех пользователей, которые не переопределили оформление под свой вкус.
Для удобства пользователей справочник разбит на группы по темам.
1С 8.3 : Табличное поле
Как раскрасить строки табличной части по условию?
В 1С Предприятии 8.2 Управляемое Приложение к табличной части можно применить такое же условное оформление, как и к динамическому списку. Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.
Например, нам требуется оформить строки табличной части приходной накладной так, чтобы строки с суммой больше 10000 были выделены зеленым фоном, а ячейки Товар и Количество строк табличной части с количеством больше 10 единиц были выделены синим текстом.
Выполним условное оформление интерактивно. Есть форма документа ПоступлениеТоваровИУслуг, выделим корень элементов формы (строку Форма) и откроем ее свойства. В строке УсловноеОформление нажмем ссылку Открыть.
В появившемся окне Настройка оформления нажмем кнопку Добавить.
Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим зеленый цвет фона.
Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда фон строк табличной части будет зеленым. Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора.
Для этого нажмем на кнопку Добавить и укажем в графе Левое значение – поле табличной части Объект.Товары.Сумма, в графе Вид сравнения – Больше, а в графе Правое значение выберем 10000.
Затем укажем список оформляемых полей. В отличии от оформления динамического списка, построенного на системе компоновки данных, если мы хотим выделить полностью строку, здесь нужно перечислить все поля строки табличной части.
Нажмем кнопку выбора в поле Оформляемые поля, затем нажмем Добавить и добавим поочередно все поля табличной части в список оформляемых полей.
Затем создадим еще одно условие для полей табличной части Товар и Количество, чтобы цвет текста этих полей был синим, в случае если значение в поле Количество больше 10.
Таким образом, мы добились требуемого оформления табличной части формы документа ПоступлениеТоваровИУслуг.
Подобным образом можно оформить не только строки табличной части, но и все поля документа.
Автор: Сергей Сопелев
Похожие FAQ
Еще в этой же категории
Раскрасить строки табличной части документа по условию
Есть документ с табличной частью. Необходимо в этой табличной части раскрашивать в одинаковый цвет строки имеющие одинаковую дату (дата это колонка табчасти). Как это сделать? 1С 8.3 (управляемые формы).
В 8.1 в событияэх табличной части есть: «ПриПолученииДанных» (Вызывается при получении данных табличным полем), можно написать:
Проблема в том, что я имею дело с 8.3 УП. Там нет этого события.
Вот более верный вариант. Делал в УТ 11.4.5 на 8.3.11. В моделе формы документа Процедура УстановитьУсловноеОформление()
МассивИменКолонокДляПодсветки = Новый Массив;
Для каждого Стр из Элементы.Товары.ПодчиненныеЭлементы Цикл
МассивИменКолонокДляПодсветки.Добавить(Стр.Имя);
КонецЦикла;
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», Новый Цвет(204, 255, 204));
ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Товары.ВариантОбеспечения»);
ЭлементУсловия.ПравоеЗначение = Перечисления.ВариантыОбеспечения.Отгрузить;
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементУсловия.Использование = Истина;
Для каждого ТекЭлемент из МассивИменКолонокДляПодсветки Цикл
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ТекЭлемент);
КонецЦикла;
Табличное поле
Как раскрасить строки табличной части по условию?
В 1С Предприятии 8.2 Управляемое Приложение к табличной части можно применить такое же условное оформление, как и к динамическому списку. Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка. Для этого нужно использовать свойство УсловноеОформление формы.
Например, нам требуется оформить строки табличной части приходной накладной так, чтобы строки с суммой больше 10000 были выделены зеленым фоном, а ячейки Товар и Количество строк табличной части с количеством больше 10 единиц были выделены синим текстом.
Выполним условное оформление интерактивно. Есть форма документа ПоступлениеТоваровИУслуг, выделим корень элементов формы (строку Форма) и откроем ее свойства. В строке УсловноеОформление нажмем ссылку Открыть.
В появившемся окне Настройка оформления нажмем кнопку Добавить.
Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим зеленый цвет фона.
Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда фон строк табличной части будет зеленым. Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора.
Для этого нажмем на кнопку Добавить и укажем в графе Левое значение – поле табличной части Объект.Товары.Сумма, в графе Вид сравнения – Больше, а в графе Правое значение выберем 10000.
Затем укажем список оформляемых полей. В отличии от оформления динамического списка, построенного на системе компоновки данных, если мы хотим выделить полностью строку, здесь нужно перечислить все поля строки табличной части.
Нажмем кнопку выбора в поле Оформляемые поля, затем нажмем Добавить и добавим поочередно все поля табличной части в список оформляемых полей.
Затем создадим еще одно условие для полей табличной части Товар и Количество, чтобы цвет текста этих полей был синим, в случае если значение в поле Количество больше 10.
Таким образом, мы добились требуемого оформления табличной части формы документа ПоступлениеТоваровИУслуг.
Подобным образом можно оформить не только строки табличной части, но и все поля документа.
Автор: Сергей Сопелев
Похожие FAQ
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора