УсловноеОформление.Добавить

Методы · Add

Добавить область оформления в конец коллекции.

Синтаксис

Добавить(<Имя>, <Представление>)
Полное описание, параметры и ограничения

УсловноеОформление.Добавить (ConditionalAppearance.Add)

УсловноеОформление (ConditionalAppearance)

Добавить (Add)

Доступен, начиная с версии 8.0.

Синтаксис:
Добавить(<Имя>, <Представление>)
Параметры:

<Имя> (обязательный)
Тип: Строка.
Имя области оформления.

<Представление> (необязательный)
Тип: Строка.
Представление добавляемой области.
Возвращаемое значение:
Тип: ЭлементУсловногоОформления.

Описание:

Добавить область оформления в конец коллекции.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Выделить суммы книги и коробки, не отбирая ручку из данных

Условное оформление старого построителя выделяет только ячейки Сумма >= 60. Отбор внутри правила влияет на оформление, а не на количество строк результата.

Где и как запускать

Полный модуль управляемой формы собственной учебной EPF: клиентский просмотр и серверное формирование отчёта.

Подготовка

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

  2. Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.

  3. Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.

  4. ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.

  5. Отдельная собственная конфигурация называется УчебнаяКонфигурацияСинтаксиса. Примеры создают только данные в памяти и собственный отчёт.

  6. Используйте толстый клиент Windows 8.5.1.1343. УсловноеОформление в этих уроках относится к старому построителю, не к классу УсловноеОформлениеКомпоновкиДанных.

  7. В исходных данных Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; Коробка: 2 × 30 = 60. Общий итог 860, Канцелярия 800, Упаковка 60.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = СформироватьУчебныйОтчет();
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры

&НаСервере
Функция СформироватьУчебныйОтчет()
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Образцы = Новый Массив;
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
    Для Каждого Образец Из Образцы Цикл
        СтрокаДанных = Данные.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
        СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
    КонецЦикла;
    Описание = Новый ОписаниеИсточникаДанных(Данные);
    Для Каждого Колонка Из Описание.Колонки Цикл
        Колонка.Поле = Истина;
        Колонка.Отбор = Истина;
        Колонка.Порядок = Истина;
        Колонка.Измерение = Колонка.Имя = "Категория";
    КонецЦикла;
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Описание;
    Построитель.АвтоДетальныеЗаписи = Ложь;
    Построитель.ВыводитьДетальныеЗаписи = Истина;
    Построитель.ВыводитьЗаголовокОтчета = Истина;
    Построитель.ВыводитьОбщиеИтоги = Ложь;
    Построитель.ВыводитьПодвалОтчета = Ложь;
    Построитель.ВыводитьПодвалТаблицы = Ложь;
    Построитель.ВыводитьШапкуТаблицы = Истина;
    Построитель.ОтображатьСостояние = Ложь;
    Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
    Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
    Построитель.ЗаполнитьНастройки();
    Построитель.ИзмеренияСтроки.Очистить();
    Построитель.ИзмеренияКолонки.Очистить();
    Построитель.ВыбранныеПоля.Очистить();
    Построитель.ВыбранныеПоля.Добавить("Наименование", "Товар");
    Построитель.ВыбранныеПоля.Добавить("Количество", "Количество");
    Построитель.ВыбранныеПоля.Добавить("Сумма", "Сумма");
    Условия = Построитель.УсловноеОформление;
    Условия.УстановитьДоступныеПоля(Построитель.ДоступныеПоля);
    ПроверкаПолей = Условия.ПолучитьДоступныеПоля();
    Сообщить(ПроверкаПолей.Найти("Сумма") <> Неопределено);
    Правило = Условия.Добавить("СобственнаяСумма", "Выделить стоимость от 60");
    Правило.Имя = "СобственнаяСуммаОт60";
    Правило.Заголовок = "Только собственные суммы от 60";
    Правило.Использование = Истина;
    Правило.Отбор.УстановитьДоступныеПоля(Построитель.ДоступныеПоля);
    Порог = Правило.Отбор.Добавить("Сумма", "СобственныйПорог", "Стоимость");
    Если Порог = Неопределено Тогда
        ВызватьИсключение "Сумма не доступна для собственного правила";
    КонецЕсли;
    Порог.ВидСравнения = ВидСравнения.БольшеИлиРавно;
    Порог.Установить(60, Истина);
    Область = Правило.Область;
    Область.УстановитьДоступныеПоля(Построитель.ДоступныеПоля);
    ДоступныеОбласти = Область.ПолучитьДоступныеПоля();
    Сообщить(ДоступныеОбласти.Найти("Сумма") <> Неопределено);
    ПолеСуммы = Область.Добавить("Сумма", "Собственная стоимость", ТипОбластиОформления.Поле);
    Сообщить(ПолеСуммы.Заголовок = "Собственная стоимость");
    Сообщить(ПолеСуммы.ПутьКДанным = "Сумма");
    ПолеСуммы.ТипОбласти = ТипОбластиОформления.Поле;
    ПолеСуммы.ПутьКДанным = "Сумма";
    Сообщить(Область.Количество() = 1);
    ЦветУстановлен = Ложь;
    Для Каждого Параметр Из Правило.Оформление Цикл
        Если Параметр.Имя = "ЦветФона" Тогда
            Сообщить(Параметр.ТипЗначения.СодержитТип(Тип("Цвет")));
            Параметр.Значение = Новый Цвет(255, 245, 180);
            Параметр.Использование = Истина;
            Параметр.Заголовок = "Учебная подложка";
            Сообщить(Параметр.Использование);
            Сообщить(Параметр.Заголовок = "Учебная подложка");
            Сообщить(ТипЗнч(Параметр.Значение) = Тип("Цвет"));
            ЦветУстановлен = Истина;
        КонецЕсли;
    КонецЦикла;
    Если НЕ ЦветУстановлен Тогда
        ВызватьИсключение "Параметр ЦветФона не найден в собственной настройке оформления";
    КонецЕсли;
    Сообщить(Правило.Имя = "СобственнаяСуммаОт60");
    Сообщить(Правило.Заголовок = "Только собственные суммы от 60");
    Сообщить(Правило.Использование);
    Построитель.Выполнить();
    ПроверкаДанных = Построитель.Результат.Выгрузить();
    Сообщить(ПроверкаДанных.Количество() = 3);
    Сообщить(ПроверкаДанных.Итог("Сумма") = 860);

    ТабДок = Новый ТабличныйДокумент;
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;
КонецФункции

Разбор по шагам

  1. Получить настоящую коллекцию УсловноеОформление своего построителя и передать ей допустимые поля источника.

  2. Создать собственное правило с именем, заголовком и флагом использования. Его отбор: Сумма >= 60.

  3. В область оформления добавить только поле Сумма, не группировку и не всю таблицу. Прочитать её заголовок и путь.

  4. Обойти настоящую коллекцию параметров Оформление, найти ЦветФона по Имя, проверить допустимый тип Цвет и включить собственное значение.

  5. Выполнить и показать отчёт. Проверить сохранение всех трёх строк и итога 860, затем визуально сверить подложку сумм 750 и 60.

Как проверить результат

  1. Четырнадцать булевых проверок дают Истина при наличии стандартного параметра ЦветФона. Данных три строки, итог 860.

  2. В отчёте жёлтая подложка у сумм 750 и 60, сумма 50 не выделяется. Ручка остаётся в отчёте. Визуальный результат отдельно проверяется в 1С.

Ожидаемый результат

Настоящее условное оформление работает над данными собственного отчёта и отделено от общего отбора строк.

На что обратить внимание

  1. УсловноеОформление не равно УсловноеОформлениеКомпоновкиДанных: типы элементов, области и коллекции здесь другие.

  2. Свойства Правило.Область, Отбор, Оформление только читаются как ссылки. Меняются полученные собственные объекты, не присваиваются новые коллекции.

  3. Имя и ТипЗначения элемента настройки оформления только читаются. Для изменения вида задаются Значение и Использование.

  4. Нет вывода о подложке по одной проверке цвета в параметре: нужен ручной просмотр самого отчёта.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Проверить коллекции правил и областей отдельно от настоящего отчёта

Создаём самостоятельные пробные коллекции, вставляем, перемещаем и удаляем только собственные элементы. Проверяем, что отчёт от этого не получил оформление автоматически.

Где и как запускать

Полный модуль управляемой формы собственной учебной EPF: клиентский просмотр и серверное формирование отчёта.

Подготовка

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

  2. Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.

  3. Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.

  4. ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.

  5. Отдельная собственная конфигурация называется УчебнаяКонфигурацияСинтаксиса. Примеры создают только данные в памяти и собственный отчёт.

  6. Используйте толстый клиент Windows 8.5.1.1343. УсловноеОформление в этих уроках относится к старому построителю, не к классу УсловноеОформлениеКомпоновкиДанных.

  7. В исходных данных Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; Коробка: 2 × 30 = 60. Общий итог 860, Канцелярия 800, Упаковка 60.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = СформироватьУчебныйОтчет();
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры

&НаСервере
Функция СформироватьУчебныйОтчет()
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    Образцы = Новый Массив;
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
    Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
    Для Каждого Образец Из Образцы Цикл
        СтрокаДанных = Данные.Добавить();
        ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
        СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
    КонецЦикла;
    Описание = Новый ОписаниеИсточникаДанных(Данные);
    Для Каждого Колонка Из Описание.Колонки Цикл
        Колонка.Поле = Истина;
        Колонка.Отбор = Истина;
        Колонка.Порядок = Истина;
        Колонка.Измерение = Колонка.Имя = "Категория";
    КонецЦикла;
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Описание;
    Построитель.АвтоДетальныеЗаписи = Ложь;
    Построитель.ВыводитьДетальныеЗаписи = Истина;
    Построитель.ВыводитьЗаголовокОтчета = Истина;
    Построитель.ВыводитьОбщиеИтоги = Ложь;
    Построитель.ВыводитьПодвалОтчета = Ложь;
    Построитель.ВыводитьПодвалТаблицы = Ложь;
    Построитель.ВыводитьШапкуТаблицы = Истина;
    Построитель.ОтображатьСостояние = Ложь;
    Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
    Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
    Построитель.ЗаполнитьНастройки();
    Построитель.ИзмеренияСтроки.Очистить();
    Построитель.ИзмеренияКолонки.Очистить();
    Построитель.ВыбранныеПоля.Очистить();
    Построитель.ВыбранныеПоля.Добавить("Наименование", "Товар");
    Построитель.ВыбранныеПоля.Добавить("Количество", "Количество");
    Построитель.ВыбранныеПоля.Добавить("Сумма", "Сумма");
    ПробныеПравила = Новый УсловноеОформление;
    Первое = ПробныеПравила.Добавить("Книга", "Собственная книга");
    Второе = ПробныеПравила.Вставить("Ручка", "Собственная ручка", 0);
    Сообщить(ПробныеПравила.Количество() = 2);
    Сообщить(ПробныеПравила.Получить(0) = Второе);
    Сообщить(ПробныеПравила.Индекс(Первое) = 1);
    ПробныеПравила.Сдвинуть(Первое, -1);
    Сообщить(ПробныеПравила.Получить(0) = Первое);
    ПробныеПравила.Удалить(Второе);
    Сообщить(ПробныеПравила.Количество() = 1);
    ПробныеПравила.Очистить();
    Сообщить(ПробныеПравила.Количество() = 0);
    ПробнаяОбласть = Новый ОбластьОформления;
    Поле = ПробнаяОбласть.Добавить("Сумма", "Только собственная стоимость", ТипОбластиОформления.Поле);
    Сообщить(ПробнаяОбласть.Количество() = 1);
    ПробнаяОбласть.Удалить(Поле);
    Сообщить(ПробнаяОбласть.Количество() = 0);
    ПробнаяОбласть.Добавить("Количество", "Собственное количество");
    ПробнаяОбласть.Очистить();
    Сообщить(ПробнаяОбласть.Количество() = 0);
    ПробнаяНастройка = Новый НастройкаОформления;
    Сообщить(ТипЗнч(ПробнаяНастройка) = Тип("НастройкаОформления"));
    Сообщить(Построитель.УсловноеОформление.Количество() = 0);
    Построитель.Выполнить();
    Сообщить(Построитель.Результат.Выгрузить().Итог("Сумма") = 860);

    ТабДок = Новый ТабличныйДокумент;
    Построитель.Вывести(ТабДок);
    Возврат ТабДок;
КонецФункции

Разбор по шагам

  1. Создать самостоятельное УсловноеОформление и два своих элемента. Вставить второй в позицию 0, получить индекс первого.

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

  3. Создать отдельную ОбластьОформления, добавить собственное поле, удалить объектом и очистить другую собственную пробу.

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

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

Как проверить результат

  1. Двенадцать булевых проверок дают Истина. Все пробные правила и области в конце пусты.

  2. Отчёт показывает три своих товара без настроенного этим уроком выделения: отдельные коллекции сами не подключились.

Ожидаемый результат

Реальная демонстрация жизненного цикла коллекций и различия самостоятельного объекта с объектом внутри построителя.

На что обратить внимание

  1. Вставить УсловноеОформление принимает позицию третьим параметром. Сдвинуть и Удалить принимают элемент правила, не его индекс.

  2. Удалить ОбластьОформления принимает добавленный элемент области. У неё нет Получить, Индекс или Сдвинуть: не переносите API другой коллекции.

  3. Конструктор самостоятельной настройки создаёт настройки, а не меняет оформление уже существующего отчёта.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.