[Взрыв шаблона!] Новый способ программной настройки условного оформления
Разработка - Работа с интерфейсом
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В "Файлах публикации" находится обработка, в которой есть весь необходимый код и примеры, рассматриваемые ниже. Обработка универсальная и не зависит от используемой конфигурации. Протестирована на платформе 1С:Предприятие 8.3 (8.3.13.1926).
Пример 1: Знакомство
Как нужно было делать раньше:
ЭлементОформления = ЭтотОбъект.УсловноеОформление.Элементы.Добавить();
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("А");
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Б");
ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ХочуКрасненького");
ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОформления.ПравоеЗначение = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Красный);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Белый);
Как можно делать теперь:
ОбъектНастройки = РеквизитФормыВЗначение("Объект").Настроить(ЭтотОбъект.УсловноеОформление)
.Элемент("А, Б")
.Отбор("ХочуКрасненького", "Равно", Истина)
.Оформление("ЦветФона", WebЦвета.Красный)
.Оформление("ЦветТекста", WebЦвета.Белый)

Пример 2: Группы отборов
Разрешите мне не приводить типовой код, а сразу показать новый способ с группами отборов:
ОбъектНастройки = РеквизитФормыВЗначение("Объект").Настроить(ЭтотОбъект.УсловноеОформление)
.Элемент("ТЗПримечание")
.ГруппаИЛИ()
.Отбор("ТЗ.К1", "Равно", 0)
.Отбор("ТЗ.К2", "Равно", 0)
.КонецГруппы()
.Оформление("Текст", "К1 или К2 не заполнено");
// Какие-то доп.условия
Если ХочуКрасненького Тогда
ОбъектНастройки
.Оформление("ЦветТекста", WebЦвета.Красный);
КонецЕсли;
// Продолжение настройки
ОбъектНастройки
.Элемент("ТЗПримечание")
.ГруппаИ()
.Отбор("ТЗ.К1", "НеРавно", 0)
.Отбор("ТЗ.К2", "НеРавно", 0)
.Отбор("ТЗ.К1", "Меньше", Новый ПолеКомпоновкиДанных("ТЗ.К2"))
.КонецГруппы()
.Оформление("Текст", "К1 < К2");
Пример 3: Сравнение типового (с использованием БСП) и нового способа
Под спойлером - код из типовой конфигурации.
Стена текста! Для того, чтобы написать свою программную настройку условного оформления нужно было найти пример в конфигурации, накопипастить оттуда нужные куски и исправить их под свои нужды.
А теперь то же самое новым способом:
ОбъектНастройки = Обработки.НастройкаУсловногоОформления.Создать().Настроить(ЭтотОбъект.УсловноеОформление)
.Элемент("ТоварыСчетУчетаНДС")
.ГруппаИЛИ()
.Отбор("РассчитыватьСуммаВРознице", "Равно", Истина)
.ГруппаИ()
.Отбор("Объект.НДСВключенВСтоимость", "Равно", Истина)
.Отбор("УчетАгентскогоНДС", "Равно", Ложь)
.КонецГруппы()
.Отбор("ЭтоКомиссия", "Равно", Истина)
.Отбор("Объект.ВидОперации", "Равно", Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку)
.КонецГруппы()
.Оформление("Видимость", Ложь)
.Элемент("ТоварыЦенаВРознице")
.ГруппаИЛИ()
.ГруппаИ()
.Отбор("РассчитыватьСуммаВРознице", "Равно", Истина)
.Отбор("ТоварыСвернуты", "Равно", Истина)
.Отбор("НТТ", "Равно", Истина)
.КонецГруппы()
.Отбор("НТТ", "Равно", Ложь)
.Отбор("РассчитыватьСуммаВРознице", "Равно", Ложь)
.КонецГруппы()
.Оформление("Видимость", Ложь)
.Элемент("ТоварыСтавкаНДСВРознице")
.ГруппаИЛИ()
.Отбор("РазделениеПоСтавкамВРознице", "Равно", Ложь)
.Отбор("НТТ", "Равно", Ложь)
.Отбор("РассчитыватьСуммаВРознице", "Равно", Ложь)
.КонецГруппы()
.Оформление("Видимость", Ложь)
.Элемент("ТоварыСуммаВРознице")
.ГруппаИЛИ()
.Отбор("РассчитыватьСуммаВРознице", "Равно", Ложь)
.Отбор("НТТ", "Равно", Ложь)
.КонецГруппы()
.Оформление("Видимость", Ложь)
.Элемент("ТоварыСтавкаНДС,
|ТоварыСуммаНДС,
|ТоварыВсего,
|ТоварыНомерГТД,
|ТоварыСтранаПроисхождения,
|ТоварыСпособУчетаНДС")
.Отбор("Объект.ВидОперации", "Равно", Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку)
.Оформление("Видимость", Ложь)
Вывод
Использование нового способа программной настройки условного оформления позволяет писать лаконичный, структурированный и легкий для восприятия код.
Как это использовать у себя
- Скачайте обработку
- Встройте в конфигурацию или расширение с именем "НастройкаУсловногоОформления"
- При необходимости создания программной настройки условного оформления, пишите:
ОбъектНастройки = Обработки.НастройкаУсловногоОформления.Создать().Настроить(ЭтотОбъект.УсловноеОформление)
// и далее как в примерах
Смотрите также
Эта и многие другие возможности входят в состав [ЕХТ] Фреймворк для расширений.
Попробуйте, гарантирую - Вам понравится!
Вступайте в нашу телеграмм-группу Инфостарт