Условное оформление в управляемых формах

05.04.13

Разработка - Работа с интерфейсом

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

Итак начнем.

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

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

В форме

 

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

 

2

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

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

 3

 

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

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

&НаСервере

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Пример.

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

4

 

Выводы:

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

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

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

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61793    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54397    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    16695    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10734    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9607    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12077    1    5    

10
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. KonstB 180 05.04.13 23:24 Сейчас в теме
Выводы:

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


Спасибо, КЭП! )
user603532_fan_club_chelsea; +1 1 Ответить
59. VoVo 18.09.23 09:13 Сейчас в теме
(1)Не всегда это так, а если у тебя тз на форме создана и колонки создаются динамически програмно
DELOVOYDOM; +1 Ответить
2. son_v 3 04.07.13 10:29 Сейчас в теме
Доброе время суток. А у меня вопрос к автору. Добавляю условное оформление в Настройку списка в конфигураторе (пример 2 пункта 1 статьи) дополнительно к типовым настройкам (формы списка документа Заказы покупателей и спр. Договоры контрагентов, Управление торговлей ред.11 платформа 8.2.17.169), а в режиме предприятия настройки не обновляются. Куда смотреть, что делать, к кому бежать? чистка кэша не помогает, да и не вариант.
3. AllexSoft 04.07.13 10:33 Сейчас в теме
(2) son_v, есть справочник настройки пользователей как то так, его можно открыть в режиме предприятия через справочник Пользователи.. ну и очистить настройки форм там надо
4. son_v 3 04.07.13 10:42 Сейчас в теме
(3) СПАСИБО!!!!!!!! Сами бы еще годами думали ))
54. svilsa 12 03.08.22 09:39 Сейчас в теме
(3) О боги, это действительно рабочее решение почему не работает условное оформление формы списка управляемых форм, когда добавляешь поле и по его значению раскраску табличной части в уже существующей рабочей базе!
5. Znef 24.09.13 14:08 Сейчас в теме
Спасибо, помогло. Только почему то работает только для Формы, а для таблицы или дерева нет.
Прикрепленные файлы:
6. psa247 17 24.11.13 10:42 Сейчас в теме
(5) Znef, скорее всего, у Вас более свежая платформа. У меня тоже такого нет
7. AllexSoft 24.11.13 14:19 Сейчас в теме
Условное оформление бывает только для формы! Оно включает и условное оформление всех элементов связанных с этой формой, в том числе и таблиц, дерева. Хотя для динамических списков оно может быть отдельно в динамическом списке, с ними сложнее.
(6) psa247, от платформы не зависит, зависит от конфигурации.
rendalina; +1 Ответить
8. psa247 17 24.11.13 14:26 Сейчас в теме
(7) AllexSoft, да, так и есть, спасибо за ответ. Уже кое-чего примитивное настроил на уровне конфы.
для управления оформлением программно в динамическом списке вот так сделал:



&НаСервере
Процедура НастроитьУсловноеФорматирование()
Для Каждого СтрокаДанных Из Объект.СписокКлиентов Цикл
// Условное оформление - Номер первой строки
СтрокаДанных.ВерсияППОтображение = ПолучитьНомерВерсииПП(СтрокаДанных.НоваяВерсия);

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
НастроитьУсловноеФорматирование();
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
НастроитьУсловноеФорматирование();
КонецПроцедуры
9. AllexSoft 24.11.13 14:33 Сейчас в теме
(8) psa247, зачем?) чем не подошло условное оформление самого динамического списка ? если оно не обновляется нужно добавить какой нибудь реквизитик (колонку в дин список) сохранить, открыть и проверить условное оформление, потом удалить эту ненужную колонку
PCcomCat; +1 Ответить
10. psa247 17 24.11.13 14:38 Сейчас в теме
(9) AllexSoft, нее, я часа три убил на то, что в толстом клиенте делается 3 минуты
24. PCcomCat 31.05.17 21:31 Сейчас в теме
Вот это трюк в (9) с добавлением реквизита в динамический список! И работает же!
11. AllexSoft 24.11.13 14:43 Сейчас в теме
(10) psa247, в УФ немного приловчится и в принципе многое проще чем в обычных формах. Ну правда дин. список очень очень сырой, как минимум из того что мне уже неоднократно было нужно это:
1. невозможность вывести итоговую сумму в подвал дин. списка.
2. нельзя использовать пакеты запросов в произвольном запросе дин. списка.
12. psa247 17 24.11.13 14:52 Сейчас в теме
1С - Недоступно, но всерьез ? ))
13. AllexSoft 24.11.13 14:55 Сейчас в теме
14. Tapochki-tmn 43 18.02.15 08:21 Сейчас в теме
Спасибо, очень помогло.

От себя добавлю, если вдруг кому пригодится:

Надо было в таблице на форме сравнить две колонки.
В одной колонке значения типа Справочник.ЦеновыеГруппы.
Во второй колонке значения типа Строка.
Сравнивать надо было наименование справочника первой колонки и строку из второй колонки.
Через УсловноеОформление формы посмотрел - нельзя обратиться к свойствам поля, нету их.
Создал в реквизитах у этой таблицы еще одно поле ЦеновыеГруппыНаименование, элемент в форме не создавал.
Программно задал условие:

ИмяПоляОформления = "ЗагружаемыеДанныеЦеновыеГруппы";
	ПутьКПолюОтбора = "ЗагружаемыеДанные.ЦеновыеГруппыНаименование";
	ПутьКПолюСравнения = "ЗагружаемыеДанные.ЦеновыеГруппыПоставщика";
	
	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

Не пинайте, если через Ж...
Полдня искал как сделать нормально...
HIVvich; Attya; yak127; agent00mouse; Lapitskiy; freeek; frkbvfnjh; +7 Ответить
15. HboTfd12 24.02.15 15:25 Сейчас в теме
(14) Да Вы батенька некрофил! :)
agent00mouse; mikki_1C; +2 4 Ответить
35. agent00mouse 253 24.04.20 15:42 Сейчас в теме
(14)
Отличный код. Великолепное шаманство. Нужно было сравнить в документе Колонки Количество и КоеоходимоеКоличество. Через стандартное оформление не взлетело.
Хорошо, что так можно напилить.
58. Attya 18.07.23 10:46 Сейчас в теме
(14) Спасибо! Оч помогло. А то запутался, куда имя элемента, а куда путь к реквизиту
16. chmv 24.06.15 15:14 Сейчас в теме
Статья помогла
Yan_Malyakov; +1 Ответить
17. jaroslav.h 180 06.01.16 22:48 Сейчас в теме
&НаСервере 
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
    ЭлементОтобора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтобора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Абонимент");
    ЭлементОтобора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтобора.ПравоеЗначение = Перечисления.Абонимент.Premium;
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ЗеленаяЛужайка);
    ЭлементОтобора.Использование = Истина;
    
    ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
    ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Абонимент");
    ПолеОформления.Использование = Истина;
    
КонецПроцедуры
Показать

скажите, мне нужно ЦветФона изменить, такой Параметр есть но если указываю ЦветФона то никакого результата, а вот когда указываю ЦветТекста то работает
57. kabantus 03.07.23 13:02 Сейчас в теме
(17) К перечислению нельзя применить изменение параметров Фона и Текста.
18. Igor Igorevich 21.01.16 10:43 Сейчас в теме
Спасибо за статью. Ранее настраивал условное оформление на форме через свойство "Условное оформление" и не работало. И как всегда списал на глюк 1с.
Но после прочтения статьи решил все перепроверить - и нашел ошибку в условии. Исправил и все заработало.
1с - на высоте. А если у кого не работает, то будьте внимательны и ищите свои ошибки.
Designer1C; +1 Ответить
19. dklp 42 22.04.16 16:15 Сейчас в теме
подскажите, а можно ли в принципе применять условное оформление из внешней обработки к форме владельца.
параметр ВладелецФормы на сервере выдает ошибку, а на клиенте условное оформление недоступно.

заполняю из внешней обработки ТЧ документа, нужно для текста ячеек в одной колонке установить свойство: ГоризонтальноеПоложение - Право.
может, у кого-нибудь есть идеи как это сделать?
типовую Конфигурацию менять нельзя.
21. stranger_1 01.11.16 19:44 Сейчас в теме
(19) dklp, А если засунуть форму в расширение и в расширении сделать как нужно?
20. Nickon 22.08.16 21:02 Сейчас в теме
Понимал, что что-то такое есть на УФ. Даже процедуру написал. Но благодаря статье решилось все за 5 минут!
22. klaos 9 21.12.16 09:20 Сейчас в теме
1С:Предприятие 8.3 (8.3.9.1818), Розница, редакция 2.2 (2.2.4.33) , не могу найти Условное оформление.Есть ли оно там вообще?
23. Debugg3R 16.02.17 11:15 Сейчас в теме
На форме есть дерево значений. У дерева значений один из реквизитов - таблица значений. И вот для этой таблицы значений, которая для каждого элемента своя, не работает условное оформление.
Либо я не понимаю как его настроить
В отборе стоит "
ДеревоНаФорме.ТаблицаЭлемента.ИмяРеквизита = ЗначениеРеквизита
".
В оформлении стоит "
ИмяЭлементаФормыРеквизитаТаблицыЭлемента
"

Грубо говоря, есть дерево задач, у каждой задачи список исполнителей в виде таблицы и нужно определённых исполнителей подсветить.
25. OksDallas 22 01.03.18 04:11 Сейчас в теме
Условное оформление на форме. Как в оформляемые поля полностью занести строку табличной части не перечисляя реквизиты табличной части?
26. t.v.s. 111 01.03.18 05:54 Сейчас в теме
(25) Добавить имя табличной части как оно есть на форме
27. OksDallas 22 02.03.18 04:18 Сейчас в теме
(26)Пробовала - не получилось.
28. t.v.s. 111 02.03.18 06:44 Сейчас в теме
29. OksDallas 22 02.03.18 08:26 Сейчас в теме
30. Serge_ASB 20.04.18 07:00 Сейчас в теме
А если мне нужно оформить цвет фона в табличной части формы в одной колонке в зависимости от значения (значение - элемент справочника) , тогда как?
pbahushevich; +1 Ответить
31. Ivanov_OM 38 16.05.18 18:06 Сейчас в теме
32. Sergey_1C_ttt 21 20.09.18 14:06 Сейчас в теме
Спасибо! Очень помогло быстро сделать.
33. sinto 25.02.19 14:52 Сейчас в теме
Добрый день. Интересует такая тема. В поле ТЧ на форме добавил сумму. Вычисляется она банальненько, как "строка.Цена*Строка.Количество". Так как в УФ нет таких обработчиков, как "ПриПолученииДанных" или "ПриВыводеСтроки" необходимо проделать следующее:

1. собственно вычислить эту сумму для каждой строки для разных случаев, будь то изменение номенклатуры или цены или количества. Опять же изменение может быть отовсюду, как из строки ТЧ непосредственно, так и из внешних обработок заполнения. Поэтому - возможно ли вычислить сумму через настройку условного оформления, в идеале - непрограммно. Т.е. условно устанавливать текст ячейки равным сумме=цена*количество
2. Показать такую сумму в подвале

ут 11.4.6.188

буду благодарен за вразумительный ответ
34. PLAstic 295 12.04.19 12:03 Сейчас в теме
Возможно, пропустил, но есть один нюанс при программном добавлении условного оформления.
Реквизиты в условии УО указываются по пути через "Объект.ххх...", а в оформляемых полях УО - по имени элемента формы.

Подробно описано здесь: https://its.1c.ru/db/pubv8devui/content/239/hdoc/_top/%D1%83%D1%81%D0%BB%D0­%BE%D0%B2%D0%BD%D0%BE%D0%B5%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0­%BB%D0%B5%D0%BD%D0%B8%D0%B5.%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B.%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C
VAAngelov; a.babenko; tps_01; LosevI; +4 Ответить
55. VAAngelov 364 08.12.22 10:52 Сейчас в теме
(34) Это самая полезная ссылка. Прочел внимательно. Все сразу взлетело.
36. fixin 4252 24.04.20 20:33 Сейчас в теме
Поделюсь своим случаем сложного - добавляю реквизит в табличную часть Товары и настраиваю условное оформление.

&НаСервере
Процедура _РасчитатьКоличествоПоСериям() Экспорт
    //Осипов 2020-04-24
    
    НастройкиФормыУжеПроизведены = ложь;
    ИдентификаторПользовательскойНастройки = "_ОКПоСериям";
    Для Каждого ЭлементОформления ИЗ УсловноеОформление.Элементы Цикл
        Если ЭлементОформления.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки Тогда
            НастройкиФормыУжеПроизведены = истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    //При первом вызове добавляем реквизиты и форму
    Если НЕ НастройкиФормыУжеПроизведены Тогда
        
        //Добавляем реквизит в ТЧ
        НовыеКолонки = Новый Массив;
        РеквизитФормы =  Новый РеквизитФормы("ОКПоСериям", Новый ОписаниеТипов("Булево"), "Объект.Товары");
        НовыеКолонки.Добавить(РеквизитФормы);
        ИзменитьРеквизиты(НовыеКолонки);
    
        //Добавляем условное оформление, отсюда:   https://infostart.ru/public/181336/
        ЭлементОформления = УсловноеОформление.Элементы.Добавить();
        ЭлементОформления.Использование = истина;
        ЭлементОформления.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
        ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Новый ПолеКомпоновкиДанных("Объект.Товары.ОКПоСериям")); // имя поля
        //ЭлементОтбора.ЛевоеЗначение = ложь; // имя поля
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; // либо задаем свой
        ЭлементОтбора.ПравоеЗначение = ложь;
        ЭлементОтбора.Использование = Истина;
        
        //Оформление
        Элемент = ЭлементОформления.Оформление.Элементы[0]; //цвет фона
        Элемент.Значение = WebЦвета.ТусклоРозовый;
        Элемент.Использование = Истина; //Временно не используем
        Элемент = ЭлементОформления.Оформление.Элементы[1]; //цвет текста
        Элемент.Значение = WebЦвета.Красный;
        Элемент.Использование = Истина;
        
        // Создаем поля оформления
        ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
        ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатура");
        ПолеОформления.Использование = Истина;
        
    КонецЕсли;
    
    //Проверяем на корректность соответствия количества товаров и серий
    ТТовары = Объект.Товары.Выгрузить(, "Номенклатура, Количество, НомерСтроки");
    ТСерии = Объект.Серии.Выгрузить(, "Номенклатура, Количество");
    З = Новый Запрос(
    "ВЫБРАТЬ
    |    Т.Номенклатура КАК Номенклатура,
    |    Т.Количество КАК Количество,
    |    Т.НомерСтроки КАК НомерСтроки
    |ПОМЕСТИТЬ ТТовары
    |ИЗ
    |    &ТТовары КАК Т
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    Т.Номенклатура КАК Номенклатура,
    |    Т.Количество КАК Количество
    |ПОМЕСТИТЬ ТСерии
    |ИЗ
    |    &ТСерии КАК Т
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    ТСерии.Номенклатура КАК Номенклатура,
    |    СУММА(ТСерии.Количество) КАК Количество
    |ПОМЕСТИТЬ ТСерииИтоги
    |ИЗ
    |    ТСерии КАК ТСерии
    |
    |СГРУППИРОВАТЬ ПО
    |    ТСерии.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    ТТовары.Номенклатура КАК Номенклатура,
    |    СУММА(ТТовары.Количество) КАК Количество
    |ПОМЕСТИТЬ ТТоварыИтоги
    |ИЗ
    |    ТТовары КАК ТТовары
    |
    |СГРУППИРОВАТЬ ПО
    |    ТТовары.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    ТТовары.НомерСтроки КАК НомерСтроки,
    |    ВЫБОР
    |        КОГДА ТТоварыИТоги.Количество = ТСерииИтоги.Количество
    |            ТОГДА ИСТИНА
    |        ИНАЧЕ ЛОЖЬ
    |    КОНЕЦ КАК ОК
    |ИЗ
    |    ТТовары КАК ТТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ ТТоварыИтоги КАК ТТоварыИТоги
    |        ПО (ТТоварыИТоги.Номенклатура = ТТовары.Номенклатура)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ТСерииИтоги КАК ТСерииИтоги
    |        ПО (ТСерииИтоги.Номенклатура = ТТовары.Номенклатура)");
    З.УстановитьПараметр("ТТовары", ТТовары);
    З.УстановитьПараметр("ТСерии", ТСерии);
    Выборка = З.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Объект.Товары[Выборка.НомерСтроки - 1].ОКПоСериям = Выборка.ОК;
    КонецЦикла;
    
КонецПроцедуры
Показать
sdaf; tdml; TipsyKID; user591389_aska_rabota; +4 Ответить
37. TyurinArt 91 25.10.20 12:18 Сейчас в теме
Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:


Пытался делать как в статье не работало, нашёл ответ в ИТС:

Книга "Разработка интерфейса" В.А. Ажеронок, часть 3, глава 3.1.5
"Напоследок хочется сделать еще одно небольшое замечание. В отличие от динамических списков, в условном оформлении формы обязательно нужно указывать оформляемые поля. Если хочется выделить всю строку табличной части, нужно указать все поля, которые в ней содержатся."

Отредактируйте статью.
38. enter_123 27.10.20 16:31 Сейчас в теме
(37) На практике проверено, работает.
39. TyurinArt 91 27.10.20 17:03 Сейчас в теме
(38)Если работает в ТЧ, то просьба привести пример работающего кода. Если это ДС, то всё верно - работает.
40. SlavaKron 27.10.20 17:15 Сейчас в теме
(39) Позволю себе ответить на вашу просьбу.
ЭлементУО = УсловноеОформление.Элементы.Добавить();
	
ОтборУО = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТабличнаяЧасть1.Реквизит1");
ОтборУО.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборУО.ПравоеЗначение = "1";
	
ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТабличнаяЧасть1");
	
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.БледноЗеленый);
Показать
Прикрепленные файлы:
ВнешняяОбработка1.epf
dseg; svmix; Ranetka; kabantus; Paphnuty; iLonmaks; Andrei_Ivanov; Andreich88; TyurinArt; +9 Ответить
41. TyurinArt 91 27.10.20 17:49 Сейчас в теме
Я до этого просто перечислял все поля строки, а надо было указать ТЧ.

(40)
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТабличнаяЧасть1");


+1
56. PLAstic 295 09.12.22 11:15 Сейчас в теме
(37) Может, когда-то так и было, но у меня всегда работает указание просто таблицы, а не конкретных полей.
42. Andreich88 27.01.21 00:07 Сейчас в теме
(40) Всем привет.
Я так понимаю это работает только для табличной части? Пробую перенести на таблицу значений нет результата. Как можно тоже проделать с таблицей значений?
43. SlavaKron 27.01.21 08:17 Сейчас в теме
(42) С таблицей значений все работает точно так же как с табличной частью. Приведите свой код, который не работает.
44. Andreich88 27.01.21 11:49 Сейчас в теме
Делаю так
ЭлементУО = УсловноеОформление.Элементы.Добавить();
    
	ОтборУО = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.цифры.Значение");
	ОтборУО.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборУО.ПравоеЗначение = "0";
	//ОтборУО.ЛевоеЗначение = Ложь;
	ОтборУО.Использование = Истина;
	
	ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("цифры");
	    
	ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.БледноЗеленый);
Показать
45. lobster 481 27.01.21 15:39 Сейчас в теме
тут некорректно поле задано
ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.цифры.Значение");


вот так надо

ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("<ИмяТаблицы>.<ИмяРеквизита>");
46. Andreich88 27.01.21 18:46 Сейчас в теме
Правильно? Тоже не работает.


ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("цифры.Значение");
47. lobster 481 28.01.21 09:53 Сейчас в теме
Вот пример с таблицей значений как с реквизитом формы.
Прикрепленные файлы:
ПримерУО.epf
1c_nik923; iLonmaks; Риф; +3 Ответить
48. Andreich88 30.01.21 15:13 Сейчас в теме
(47) Спасибо большое. Все заработало. Буду разбираться в чем был затык.
49. пользователь 21.06.21 09:13
Сообщение было скрыто модератором.
...
50. Pim 180 16.08.21 09:49 Сейчас в теме
Добрый день. Прочитав статью и комментарии, не нашёл своей ситуации. М.б., кто-нибудь встречался. В конфигурации настроено условное оформление дин. списка в форме списка справочника. Мне надо его переопределить в расширении. При создании на сервере очищаю условное оформление формы и списка, задаю новое (аналогично того, что приведено в статье) и... не работает. Оформление остаётся заданное из конфигурации, а не расширения. :-(. Проверяю в отладчике условное оформление (уже после открытия формы) -- значения мои. Открываю настройку списка в предприятии, не мои данные.

Буду очень благодарен за наводку.
52. iLonmaks 14 07.03.22 22:14 Сейчас в теме
(50)установить стандартные настройки при открытии формы списка
53. Pim 180 08.03.22 10:15 Сейчас в теме
51. user1129453 19.08.21 03:49 Сейчас в теме
Всем доброго времени суток. А кто знает как в отборе проверить на тип Значения, что-то типа
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ТипЗнч(дзДеревоСвязейДокументов.Документ))
вообще есть такая возможность?
60. Gr@y 5 27.09.23 12:49 Сейчас в теме
Блин куда жмакнуть чтобы получить ту менюшку что на самом первом скрине????
61. TyurinArt 91 27.09.23 12:58 Сейчас в теме
(60)правой кнопкой по форме, свойства
см. скрин
Прикрепленные файлы:
62. cdiamond 233 12.02.24 11:25 Сейчас в теме
Тут все про оформление полей. Но не раскрыто как например менять видимость страниц, кнопок на форме и т.д.
63. cdiamond 233 12.02.24 13:11 Сейчас в теме
(62) в общем условным офрмление так сделать нельзя похоже
Оставьте свое сообщение