1с условное оформление по реквизиту реквизита

  Маркет42 - Место для твоих разработок  

Условное оформление по реквизиту реквизита.

Я
   Aswed

28.09.16 — 14:04

Есть документ. С табличным полем «Товары».

В табличном поле есть реквизит Номенклатура.

У Реквизита Номенклатура есть реквизит «ТипНоменклатуры».

Вот в зависимости от значения этого реквизита ТипНоменклатуры надо расцвечивать поле документа.

Но блин в Условном оформлении в условии нет возможности выбирать Ревизит Реквизита.

Подскажите способ расцветить при таких условиях.

  

Партнерская программа EFSOL Oblako

   PR2

1 — 28.09.16 — 14:08

(0) Только вчера делал.

Добавляешь в форме в поле реквизит поля (не реквизит табличной части) «ТипНоменклатуры».

На саму форму его не вытягиваешь.

На него навешиваешь условное оформление.

При создании на сервере заполняешь его для всех строк.

При изменении номенклатуры в строке меняешь его в строке.

   Aswed

2 — 28.09.16 — 14:13

(1) Понял.

Спасибо.

   Aswed

3 — 28.09.16 — 15:39

(1) Сел делать.

И не могу вникнуть что имелось ввиду)))

Если добавлять как отдельный реквизит, получается что он будет один а в табличной части то для каждой строки должен быть свой.

   PR2

4 — 28.09.16 — 15:39

(3) Не реквизит, а поле реквизита

   Aswed

5 — 28.09.16 — 15:46

(4) Блин где это?:)))))))

   PR2

6 — 28.09.16 — 16:05

(5) http://odinesnik.ru/form.png

  

Aswed

7 — 28.09.16 — 16:06

(6) Блин спасибо!!!

Вот я протупил!

Быстрый старт в Python для 1С Разработчиков | 1s-to-python.ru

Условное оформление формы в 1с 8 служит для управления видимостью, доступностью, цветом элементов таблиц управляемой формы (а также оно используется в СКД и динамических списках). Удобство его использования заключается в том, что вы один раз задаете условие по которому должно меняться оформление вашей формы. После этого при работе пользователя с формой, при срабатывании условия оформление будет меняться автоматически. Не нужно использовать события формы и писать лишний код.

Следует заменить, что условное оформление форм работает только в конфигурациях использующих управляемое приложение (Бухгалтерия 3.0, ЗУП 3.0/3.1, Управление торговлей 11 и т.п.)

Условное оформление 1с. Интерактивная настройка

Еще один плюс условного оформления — его можно настроить не написав ни строчки кода. Для этого в форме необходимо:

  • Открыть свойства формы -> вкладка оформление -> УсловноеОформление Открыть;

Открыть условное оформление формы

  • Откроется таблица Настройка условного оформления;
  • В первом столбце необходимо выбрать оформление (или сразу несколько);
  • Во втором столбце задать условие, по которому будет срабатывать выбранное оформление;
  • С третьем столбце необходимо выбрать элементы формы на которые будет действовать выбранное оформление.

Настройка условного оформления

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

Условное оформление формы. Пример интерактивной настройки

Для примера мной была написана простейшая обработка, на формы которой добавлен реквизит с типом ТаблицаЗначений, с тремя колонками. А также три реквизита с типом булево. Скачать обработку можно Здесь.

Форма обработки выглядит так:

Настроим следующее условное оформление данной формы: при установке реквизита СкрытьКолонку1 в значение Истина, в таблице форме скрывать реквизит Колонка1.

  • Откроем настройку условного оформления формы;
  • Добавим в таблицу новую строку;
  • В колонке Оформление нажмем на кнопку с тремя точками и выберем параметр Видимость, значение Нет;

  • В колонке Условие нажмем на кнопку с тремя точками, в открывшемся окне добавим новый отбор. Пропишем туда следующие значения: Левое значение — СкрытьКолонку1, Вид сравнения — Равно, Правое значение — Да;

  • В колонке Оформляемые поля нажмем на кнопку с тремя точками, в открывшемся окне добавим новый элемент, и выберем значение ТаблицаФормыКолонка1;
  • В итоге у нас должна получиться настройка условного оформления, такая же как на следующем рисунке;

  • Нажмем кнопку Ок, сохраним нашу обработку и запустим ее в режиме 1С Предприятие;
  • При установке флажка Скрыть колонку 1, будут происходить следующие изменения в оформлении формы.

  

Условное оформление 8.3. Пример программной настройки

Используя ту же внешнюю обработку, что и в предыдущем пункте, приведем пример программной настройки условного оформления. Необходимо сделать следующее: при установке реквизита ПоменятьЦветКолонки2 в значение Истина, в таблице формы раскрашивать фон Колонки 2, при установке реквизита СделатьНедоступнойКолонку3 в значение Истина, в таблице формы делать недоступным реквизит Колонка3.

В модуле формы создадим серверную процедуру, назовем ее УстановитьУсловноеОформление и сразу же допишем ее вызов в процедуре ПриСозданииНаСервере.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    УстановитьУсловноеОформление();
    
КонецПроцедуры

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

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

Весь следующий код будем писать в процедуре УстановитьУсловноеОформление. Нам необходимо добавить новый элемент условного оформления формы, для этого используем стандартную коллекцию формы УсловноеОформление.

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

Также как и в интерактивном варианте, нам необходимо в созданном элементе заполнить оформления, условия и поля. Для того чтобы указать поле мы должны создать поле компоновки данных с именем колонки на которую будет распространяться оформление. Если полей несколько, добавляем нужное количество полей компоновки данных. Для отборов создаем элементы отбора компоновки данных и заполняем для них левое значение, правое значение и вид сравнения. Для того, чтобы задать нужные оформления заполним значения параметров доступных оформлений. В нашем примере получается следующий код:

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

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

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

Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 0, 0));

Таким образом мы создали оформление для второй колонки таблицы. Для третьей колонки оно делается аналогичным образом, поэтому не будем на нем подробно останавливаться. Итоговый код процедуры УстановитьУсловноеОформление будет выглядеть следующим образом:

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

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

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

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

    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 0, 0));
	
    Элемент = УсловноеОформление.Элементы.Добавить();

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

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

    Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);

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

Напомню, что скачать обработку написанную на основе разобранных примеров можно Здесь.


Условное оформление по реквизиту элемента табличной части

Автор Taler, 21 авг 2017, 11:50

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте!
пытаюсь настроить условное оформление по ценовой группе в ТЧ в РМКУправляемыйРежим в Рознице.
Конкретно самой ценовой группы в тч нет. только номенклатура.
Пишу следующее и не работает:

   ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
   ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
   ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(«ТоварыНоменклатура»);

      ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
        ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Товары.Номенклатура.ЦеноваяГруппа»);
   ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
   ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Лосось);

Не могу понять, в чем трабл.
помогите пжлста.


Осталось то угадать всего ничего: форму и обработчик.
Щас экстрасенсы подключатся.


УФ. ПриСозданииНаСервере. Розница2.2.


Цитата: Taler от 21 авг 2017, 13:34
УФ. ПриСозданииНаСервере. Розница2.2.

Ну то, что УФ и так ясно (по РМКУправляемыйРежим), то, что розница 2 тоже можно было догадаться по той же причине. А вот форма то какая?
Их у обработки тонна, какая именно?



Ну вообще то все работает.
Только надо иметь ввиду, что если вы это засовываете в обработчик ПриСозданииНаСервере то это оформление у вас отработает только 1 раз — при создании формы на сервере.
Соответственно если в РМК уже есть подобранная номенклатура в списке чека, то она будет подсвечена, если же чек новый, то естественно ничего не будет происходить.
Если же вы подбираете из списка номенклатуру и ожидаете что подобранная будет условно оформлена, то для этого надо оформление вешать на соответствующие обработчики.


Цитата: Kironten от 21 авг 2017, 15:09
Ну вообще то все работает.
Только надо иметь ввиду, что если вы это засовываете в обработчик ПриСозданииНаСервере то это оформление у вас отработает только 1 раз — при создании формы на сервере.
Соответственно если в РМК уже есть подобранная номенклатура в списке чека, то она будет подсвечена, если же чек новый, то естественно ничего не будет происходить.
Если же вы подбираете из списка номенклатуру и ожидаете что подобранная будет условно оформлена, то для этого надо оформление вешать на соответствующие обработчики.

Не могу понять в чем проблема, у меня еще в начале темы, все было написано точно также. Проверил все до букв — сходится.
Но не раскрашивает. Если Условие ставлю НеЗаполнено  — раскрашивает.
Пробовал написать даже для СтавкиНДС, ее не бывает не заполненной:

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

не раскрашивает, зараза

а если
   ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

то всё раскрашено
такое ощущение, что проблема в этой строке:

   ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Товары.Номенклатура.СтавкаНДС»);

но почему?


http://1c-pro.ru/threads/problema-s-uslovnym-oformleniem-v-forme-dokumenta.52489/

8.х — Проблема с условным оформлением в форме документа | 1C-pro.ru

Здравствуйте! В форме документа есть тч, у тч есть реквизит наименование(имеет тип спрссылка на спр номенклатуру), у справочника номенклатура есть реквизит «специальноенаименование». Идея такая: при открытии формы документа закрасить то наименование в ТЧ, у которой в справочнике номенклатура реквизит «специальноенаименование» пустое. Сделал программное условное оформление, но ничего не закрашивается. в чем дело? Управляемые формы.

Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПриходнаяНаименование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Объект.Приходная.Наименование.СпециальноеНаименование»);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.СпецНаименование.ПустаяСсылка();
Элемент.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Кирпичный);


Цитата: Taler от 21 авг 2017, 11:50Конкретно самой ценовой группы в тч нет. только номенклатура.

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

Цитата: Kironten от 21 авг 2017, 15:09ПриСозданииНаСервере то это оформление у вас отработает только 1 раз — при создании формы на сервере.

задается один раз, а срабатывает при каждом изменении значений в реквизитах.

Спасибо за Сказать спасибо


Спасибо поучаствовавшим советами. Думаю дальше сам докурю. :)


Все статьи

  • 1С Hard Skills

  • 23.02.2020

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Рассмотрим пример программного добавления элементов условного оформления на форму документа. Сделаем так, чтобы возможность редактирования строки таблицы грУсловияОплатыТаблица зависела от реквизита формы АктивныйСчет (тип Булево) и от реквизита таблицы Редактирование (тип Булево) (рис. 1):

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 1. Реквизиты формы, от которых будет зависеть возможность редактирования строки таблицы

Если АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь, тогда редактирование строки таблицы будет недоступно: установим свойство ТолькоПросмотр = Истина. Можно добавить аналогичный код для случая, когда АктивныйСчет = Истина, Объект.грУсловияОплатыТаблица.Редактирование = Истина, и включить возможность редактирования строки: установить свойство ТолькоПросмотр = Ложь.

Эти условия можно задать в свойстве формы УсловноеОформление (рис. 2 и рис. 3):

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 2. Свойство формы УсловноеОформление

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 3. Настройка условного оформления

Иногда в коде очищают свойство формы УсловноеОформление и все заданные настройки (рис. 2 и рис. 3) пропадают. В таких случаях можно программно задать нужное условное оформление.

Описание текста процедуры модуля формы для программного добавления элементов условного оформления

  1.  Название процедуры может быть любым; ее вызов может быть, например, из обработчика события формы ПриСозданииНаСервере.
  2.  Очищаем условное оформление формы (для примера, не обязательно).
  3.  Добавляем новый элемент условного оформления ЭлементОформления.
  4.  Устанавливаем свойство оформления ТолькоПросмотр = Истина.
  5.  Добавляем условия (отборы), при выполнении которых будет действовать настройка.
  6.  В примере это два условия И, поэтому добавляем группу элементов отбора ГруппаЭлементовОтбора с типом группы ГруппаИ, и два элемента отбора ЭлементОтбора (для АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь).
  7.  Указываем поля, для которых будет действовать настройка.

В нашем примере это будет вся строка таблицы грУсловияОплатыТаблица, поэтому добавляем одно поле ПолеОформления с названием таблицы грУсловияОплатыТаблица.

&НаСервере
Процедура УстановитьУсловноеОформление()         
                УсловноеОформление.Элементы.Очистить();
               
                ЭлементОформления = УсловноеОформление.Элементы.Добавить();


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


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

Эту статью хорошо дополняют

Содержание:

1. Выделить строки с заказами в иностранной валюте в списке заказов поставщиков 1С

Допустим, нужно в списке заказов поставщику 1С красным цветом выделить строки с заказами в иностранной валюте.

Решим эту задачу тремя разными способами.

1)    Способ настройки условного оформления динамического списка в режиме предприятия системы 1С. Данный способ подойдет для “Точечной” настройки у конкретного пользователя. Настройки условного оформления, сделанные в режиме предприятия системы 1С не распространяются на других пользователей. Чтобы условное оформление применилось сразу у всех пользователей нужно настроить условное оформление в режиме конфигуратора в 1С. Об этом способы 2 и 3.

Для этого заходить в меню “Ещё” и выбираем “Настроить список 1С”:

В открывшихся настройках списка 1С переходим на закладку “Условное оформление” и нажимаем кнопку “Добавить”:

Открывается окно редактирования элемента условного оформления.

На закладке “Оформление” указываются параметры и значения для условного оформления. Эти параметры фиксированы и их можно указывать сразу несколько. Активность параметров регулируется флажком слева от параметра. В рассматриваемом примере нам нужно указать значение для параметра “Цвет фона” — красный. Флаг активности активируется автоматически после указания значения параметра.

На закладке “Условия” указываем условие, при котором сработает оформление на предыдущей закладке. Если условие не указать, то оформление применится ко всем строкам в динамическом списке 1С 8. В рассматриваемом примере нам нужно добавить условие на реквизит “Валюта”, значение которого не равно валюте рубль:

На закладке “Оформляемые поля” нужно указать поля, к которым должно применяться условное оформление. Если не указывать никаких полей, то условное оформление применится ко всем полям динамического списка 1С 8. В рассматриваемом примере это и требуется.

Сохраняем настройки элемента условного оформления, кликнув по кнопке “Ок” в правом нижнем углу формы.

Сохраняем настройки условного оформления динамического списка, кликнув по кнопке “Завершить редактирование” в правом нижнем углу формы.

Видим, что условное оформление сработало корректно.  

2.     Как убрать условное оформление динамического списка

Убрать условное оформление динамического списка можно двумя способами:

1)    Снять флаг активности настройки условного оформления

2)    Выделить настройку условного оформления и нажать кнопку “Удалить”

Для сохранения изменений нажать кнопку “Завершить редактирование”.

2) Способ настройки условного оформления динамического списка в режиме конфигуратора в 1С.

Открываем форму списка документа: Заказ поставщику и в списке реквизитов формы кликаем правой кнопкой мыши по нужному динамического списка 1С 8:

В палитре свойств динамического списка 1С 8 находим свойство “Настройки списка” и нажимаем на гиперссылку “Открыть”:

В настройках динамического списка 1С 8 переходим на закладку “Условное оформление”:

Добавляем настройки условного оформления аналогично первому способу, кроме одного нюанса — в режиме конфигуратора в 1С мы не можем явно указать элементы справочников, документов и т.д. Поэтому, в качестве поля для сравнения укажем не валюту, а код валюты (у рубля значение кода 643):

Остальные настройки аналогичны первому способу.

Обращаем внимание на флаг “Включать в пользовательские настройки 1С”. Если он активен, то пользователь в режиме предприятия системы 1С сможет самостоятельно отредактировать настройки условного оформления (См. способ 1).

Нажимаем кнопку “Ок” и обновляем конфигурацию базы данных.

3) Способ настройки условного оформления динамического списка в режиме конфигуратора программно.

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

Сначала получим текущие настройки условного оформления динамического списка и очистим их:

Добавим новый элемент 1С условного оформления:

Зададим отбор элемента компоновки данных системы 1С

Устанавливаем значения параметра условного оформления:

Вариант установки значения параметра условного оформления через обращение по индексу:

Добавляем оформляемые поля. Если пропустить этот шаг, то условное оформление применится ко всем полям динамического списка 1С 8. Для наглядности отступим от условия задачи и подсветим красным поле “Номер”:

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

Специалист компании «Кодерлайн»

Максим Кригер

Для более лучшего восприятия информации, можно настроить подсветку строк табличной части в 1С по определенному условию. Это можно сделать с помощью условного оформления. Например, у вас есть табличная часть, в которой отображается список товаров, скажем с количеством или ценой. Можно выделить все строки с количеством меньше 10. В общем задать любое условия. Сегодня подробно разберем этот вопрос и посмотрим как настроить условное оформление табличной части документа в 1С 8.3 по условию.

Так же рекомендую прочитать следующие статьи касающиеся настройки и работы в продуктах фирмы 1С.

УТ редакции 11 фоновые задания

При запуске 1С Ошибка

Сумма табличной части

Выгрузка для bus.gov.ru

Подключение ТСД CipherLab

Условное оформление 1С 8.3

Для примера я создал вот такой документ. У нас есть список, в котором отображается дата, номер, наименование, цена, наличие. Если документов будет много, то визуально увидеть галочку которая говорит нам о наличии какого либо товара сложно. Было бы намного удобней если бы те позиции которые есть в наличии выделялись каким нибудь цветом. Можно так же настроить выделение строк по цене, например, больше 50 меньше или равно.

Условное оформление 1С

Для того чтобы настроить условное оформление, открываем документ в конфигураторе. Открываем форму списка, если её нет то создаем.

Как настроить условное оформление списка документов в 1С 8.3 по условию

Потом в правой части открываем вкладку «Реквизиты» и открываем свойства «Списка». В окне свойств нажимаем «Открыть» напротив пункта «Настройка списка».

Условное оформление 1С 8.3

Откроется окно «Динамический список» переходим во вкладку «Условное оформление» и добавляем его.

Условное оформление 1С 8.3 настройка

Сначала настраиваем «Оформление», выбираем цвет которым будет выделяться строка табличной части и другие параметры.

Условное оформление 1С 8.3 настройка внешнего фида

Далее создаем условие, изначально мы хотели выделять те позиции которые есть в наличие. Т.е в документе отмечен данный пункт. Поэтому выбираем реквизит «Наличие», условие ставим «Равно» «Истина». Теперь если в документе отмечен пункт наличие будет выполняться наше условие и данный документ будет выделен согласно настроенному оформлению.

Условное оформление 1С 8.3 настройка условия

Сохраняем и проверяем результат, у нас выделилось два документа.

Условное оформление формы списка 1С 8.3

Откроем любой из них и проверим отмечен ли пункт «Наличие».

Условное оформление 1С 8.3 по условию

Вот так настраивается условное оформление, как видите все достаточно просто. Таким же образом можно и оформить табличную часть самого документа.

Для условного оформления в списках и формах
в обычном приложении использовалось событие ПриПолученииДанных() или ПриВыводеСтроки(),
где через «ячейку» в зависимости от данных строки устанавливали нужное свойство.
С приходом нового режима работы платформы возможности условного оформления расширились.
В данной статье разберем основные аспекты.

Итак начнем.

1. Условное оформление в упр. формах настраивается как в режиме конфигуратора, так и в режиме пользовательском.

— в конфигураторе условное оформление существует на уровне самой формы (как в формах объекта, так и списка):

В форме

В формах списка условное оформление существует и на уровне самого динамического списка:

2

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

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

 3

 2. Программная работа с условным оформлением (УО).

Начнем с того, что работа с УО доступна только:

&НаСервере

Для Добавления элемента УО в списке нужно обратится к списку и добавить элемент УО:

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

Для УО формы добавление происходит через прикладной объект УсловноеОформление:

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

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

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

Значение свойства УО:

// Установка значения элемента УО
// Возможно обращение как по индексу так и установка через метод
//1.
Элемент = ЭлементОформления.Оформление.Элементы[0];
Элемент.Значение = Цвет;
//2.
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.СеребристоСерый);

Элемент.Использование = Истина;

Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:

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

В качестве ИменПолей нужно передавать строковое представление ИМЕНИ реквизита.

3. Все настройки УО хранятся для каждого пользователя отдельно.

4. Пример.

Очень часто сталкивался с проблемой настройки свойства АвтоОтметкаНезаполненного в ТЧ  по условиюВ обычных формах все решалось в процедурах упомянутых выше, а здесь таких событий нет. А решается это все конечно при помощи УО. Заходим в форме объекта в Условное оформление и видим свойство — Отметка незаполненного. Ну а дальше настроииваем как надо.

4

Выводы:

     — Простое условное оформление пользователь может настроить и сам, если его научить :). Это будет сложно конечно, но возможно.

     — УО в табличной части можно задать в конфигураторе через УО формы.

     — Программная работа с УО требуется в случае сложного условия отбора, в таких случаях лучше создавать процедуру в общем модуле использования в различных документах и списках.

Понравилась статья? Поделить с друзьями:
  • 1с функция значение дополнительного реквизита
  • 603087 почтовое отделение часы работы сегодня
  • 21 век интернет магазин в бресте время работы
  • 7 классных игр для небольшой женской компании
  • 21 век на кальварийской в минске время работы