1С условное оформление текст

Область применения: управляемое приложение.

Рекомендация (полезный совет)

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

1.1. Не следует использовать условное оформление для скрытия в таблице строк целиком. Это существенно замедляет работу в веб-клиенте, а также приводит к некорректному отображению содержимого таблицы.

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

2.1. Настройку условного оформления форм и динамических списков рекомендуется делать в коде формы. Такой подход имеет ряд преимуществ перед заданием настроек условного оформления в свойствах формы:

  • настройки однотипного условного оформления можно вынести в общие модули. Например, есть 80 форм, имеющих условное оформление:
    "если НЕ ХарактеристикиИспользуются, то в поле "Характеристика" вывести текст ",
    то можно вынести эту настройку в код процедуры общего модуля;
  • при объединении конфигураций есть возможность объединять условное оформление (особенно это актуально при разветвленной разработке конфигураций);
  • при изменении в метаданных (например, переименовании значения перечисления) условное оформление может перестать работать. Если условное оформление настраивается в коде конфигурации, то при синтаксическом контроле модулей эта ошибка будет выявлена. Так ошибки в настройках условного оформления будут выявляться средствами автоматизированной проверки (например, АПК), т.к. будет диагностироваться ошибка при попытке получения формы.

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

Читайте также:  Фоллаут 4 не могу двигаться

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

ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);

ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АдресноеХранение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;

ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;

ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыПриходныхОрдеров.КПоступлению;

Условное оформление в табличном поле 1С 8.3

Часто возникает необходимость сделать раскраску таблицы в определенные цвета, например

  • раскрасить строки журнала документа по наличию подчиненных документов
  • раскрасить ячейки в обработке в зависимости от величины "цены", выделить ячейку с наименьшей ценой

В управляемом интерфейсе (УФ), для этого предназначен универсальный механизм "условного оформления". Настройку раскраски можно выполнить в двух вариантах. Первый, в конфигураторе мыщью в форме задать необходимые настройки, второй задать эти же настройки "кодом". Рассмотрим эти варианты.

  1. Задать мышью условное оформление в форме.
  1. Открыть в конфигураторе свойства формы (выделить самый корень слева в окне отображения реквизитов)
  2. Кликнуть в свойства формы в пункт "УсловноеОформление" – "Открыть"
  3. Далее через кнопку "+" добавить необходимое оформление для строк. В первой колонке задается как именно оформлять строку, во второй колонке при каких условиях сработает эта строка оформления, в третьей колонке что именно будет оформлено (если выбрать просто название таблицы, то целиком строка, если выбрать одну из колонок, то соответственно эта колонка).
  4. Результат оформления:
  • Рассмотрим пример программного оформления строкячеек табличного поля.
    1. Например у нас есть таблица, с несколькими однотипными колонками. В каждой колонке есть число, надо выделить ячейку с наименьшим значением.
    2. Оформлять будем сразу после перезаполнения таблицы обработки.
    3. После нажатия кнопки типа "заполнить таблицу", вызываем дополнительную процедуру раскраски:
    4. Данная процедура производит раскраску в строке только той ячейки, которая по своему значению равна значению в другой колонке "ЛучшаяЦена".
    5. Также внизу процедуры есть код, по которому все колонки имена которых начинаются с "ЦенаИнформативная_" закрашиваются в серый цвет.
    6. Результат оформления:
      • Назад
      • Вперёд
      Читайте также:  Товарные вложения что это

      Собственные наработки и набитые шишки в моей практике по программированию в 1С.

      Страницы

      четверг, 15 марта 2018 г.

      Примеры Условного оформления (программно)

      Примеры Условного Оформления форм:

      &НаСервере
      Процедура УстановитьОформлениеФормыНаСервере()

      ИменаСлужебныхПрефиксов = НазначитьПрефиксИменСлужебныхЗначений();
      ПрефиксИмениИнтервал = ИменаСлужебныхПрефиксов.Интервал;
      ПрефиксИмениРучИзмЦены = ИменаСлужебныхПрефиксов.РучноеИзменениеЦены;

      УсловноеОформление.Элементы.Очистить();

      //
      ЭлементОформления = УсловноеОформление.Элементы.Добавить();
      ЭлементОформления.Представление = "СозданПрограммно";
      //Отбор
      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = Истина;

      //Оформление
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.ШрифтДиалоговИМеню,,11,Истина. ));

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

      //
      ЭлементОформления = УсловноеОформление.Элементы.Добавить();
      ЭлементОформления.Представление = "СозданПрограммно";
      //Отбор
      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = Ложь;

      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.БазоваяЦена");
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = 0;

      //Оформление
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", " ");
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);

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

      //оформление программно созданных колонок "Интервалы"
      Для Каждого СтрокаИнтервала Из Интервалы Цикл

      ИдентификаторИнтервала = СтрокаИнтервала.ИдентификаторИнтервала;
      ИмяПоля_РИзмЦены = СтрЗаменить(ИдентификаторИнтервала, ПрефиксИмениИнтервал, ПрефиксИмениРучИзмЦены);

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

      //
      ЭлементОформления.Представление = "СозданПрограммно";

      //Отбор
      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИмяПоля_РИзмЦены);
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = Истина;

      //Оформление
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Бежевый);
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Синий);

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

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

      //
      ЭлементОформления.Представление = "СозданПрограммно";

      //Отбор
      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен."+ИдентификаторИнтервала);
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = 0;

      ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
      ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЭтоГруппа");
      ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
      ЭлементОтбора.ПравоеЗначение = Ложь;

      //Оформление
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Розовый);
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", " ");
      ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);

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

      КонецЦикла;

      КонецПроцедуры

      Пример2:
      С использованием общей процедуры.

      Оцените статью
      Добавить комментарий

      Adblock detector