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

05.04.13

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

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

Итак начнем.

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

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

В форме

 

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

 

2

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

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

 3

 

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

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

&НаСервере

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Пример.

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

4

 

Выводы:

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

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

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

См. также

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

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

6000 руб.

16.01.2015    63097    44    59    

82

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

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

2400 руб.

29.06.2020    18963    26    6    

41

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

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

1500 руб.

06.10.2020    10321    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    17638    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    7921    smielka    37    

100

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

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

27.12.2023    15225    960    elcoan    49    

117

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

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

2 стартмани

10.04.2023    12019    163    acces969    31    

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

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


Спасибо, КЭП! )
BenDigget; user603532_fan_club_chelsea; +2 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 21 24.11.13 10:42 Сейчас в теме
(5) Znef, скорее всего, у Вас более свежая платформа. У меня тоже такого нет
7. AllexSoft 24.11.13 14:19 Сейчас в теме
Условное оформление бывает только для формы! Оно включает и условное оформление всех элементов связанных с этой формой, в том числе и таблиц, дерева. Хотя для динамических списков оно может быть отдельно в динамическом списке, с ними сложнее.
(6) psa247, от платформы не зависит, зависит от конфигурации.
rendalina; +1 Ответить
8. psa247 21 24.11.13 14:26 Сейчас в теме
(7) AllexSoft, да, так и есть, спасибо за ответ. Уже кое-чего примитивное настроил на уровне конфы.
для управления оформлением программно в динамическом списке вот так сделал:



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

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

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

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

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

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
НастроитьУсловноеФорматирование();
КонецПроцедуры
9. AllexSoft 24.11.13 14:33 Сейчас в теме
(8) psa247, зачем?) чем не подошло условное оформление самого динамического списка ? если оно не обновляется нужно добавить какой нибудь реквизитик (колонку в дин список) сохранить, открыть и проверить условное оформление, потом удалить эту ненужную колонку
PCcomCat; +1 Ответить
10. psa247 21 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 21 24.11.13 14:52 Сейчас в теме
1С - Недоступно, но всерьез ? ))
13. AllexSoft 24.11.13 14:55 Сейчас в теме
14. Tapochki-tmn 43 18.02.15 08:21 Сейчас в теме
Спасибо, очень помогло.

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

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

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

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

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

Не пинайте, если через Ж...
Полдня искал как сделать нормально...
blandinko; user785225; HIVvich; Attya; yak127; agent00mouse; Lapitskiy; freeek; frkbvfnjh; +9 Ответить
15. HboTfd12 24.02.15 15:25 Сейчас в теме
(14) Да Вы батенька некрофил! :)
agent00mouse; mikki_1C; +2 5 Ответить
35. agent00mouse 256 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. 113 01.03.18 05:54 Сейчас в теме
(25) Добавить имя табличной части как оно есть на форме
27. OksDallas 22 02.03.18 04:18 Сейчас в теме
(26)Пробовала - не получилось.
28. t.v.s. 113 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 22 20.09.18 14:06 Сейчас в теме
Спасибо! Очень помогло быстро сделать.
33. sinto 25.02.19 14:52 Сейчас в теме
Добрый день. Интересует такая тема. В поле ТЧ на форме добавил сумму. Вычисляется она банальненько, как "строка.Цена*Строка.Количество". Так как в УФ нет таких обработчиков, как "ПриПолученииДанных" или "ПриВыводеСтроки" необходимо проделать следующее:

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

ут 11.4.6.188

буду благодарен за вразумительный ответ
34. PLAstic 296 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
user2041726; vovan221980; VAAngelov; a.babenko; tps_01; LosevI; +6 Ответить
55. VAAngelov 442 08.12.22 10:52 Сейчас в теме
(34) Это самая полезная ссылка. Прочел внимательно. Все сразу взлетело.
36. fixin 4275 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 97 25.10.20 12:18 Сейчас в теме
Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:


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

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

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

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


+1
56. PLAstic 296 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 498 27.01.21 15:39 Сейчас в теме
тут некорректно поле задано
ОтборУО.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.цифры.Значение");


вот так надо

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


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

Буду очень благодарен за наводку.
52. iLonmaks 15 07.03.22 22:14 Сейчас в теме
(50)установить стандартные настройки при открытии формы списка
53. Pim 186 08.03.22 10:15 Сейчас в теме
51. user1129453 19.08.21 03:49 Сейчас в теме
Всем доброго времени суток. А кто знает как в отборе проверить на тип Значения, что-то типа
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ТипЗнч(дзДеревоСвязейДокументов.Документ))
вообще есть такая возможность?
60. Gr@y 6 27.09.23 12:49 Сейчас в теме
Блин куда жмакнуть чтобы получить ту менюшку что на самом первом скрине????
61. TyurinArt 97 27.09.23 12:58 Сейчас в теме
(60)правой кнопкой по форме, свойства
см. скрин
Прикрепленные файлы:
62. cdiamond 236 12.02.24 11:25 Сейчас в теме
Тут все про оформление полей. Но не раскрыто как например менять видимость страниц, кнопок на форме и т.д.
63. cdiamond 236 12.02.24 13:11 Сейчас в теме
(62) в общем условным офрмление так сделать нельзя похоже
64. Xershi 1557 10.04.24 14:05 Сейчас в теме
Нужно было при определенном типе данных менять цвет. Выход создание колонки с типом булево (у меня 2 типа) или количеством вариантов цветов. Сделал без доработки кода, просто настройкой в форме.
65. user785225 26 06.05.24 12:33 Сейчас в теме
А можно ли в качестве Левого значения как то указывать поле через точку, напр
ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка.Распечатан")

Где Распечатан - Дополнительное сведение документа (пример выше не работает)
Оставьте свое сообщение