0
Varlant1n
05.05.21
✎
17:50
|
Здравствуйте. В табличной части документа "ЗаказКлиента" очень часто бывают строки , которые разделены стандартной фукнцией деления строки. Мне нужно для удобства пользователей добавить выделение одинаковых строк при активизации строки. То есть при выделении строки, если у строки есть вторая строка с той же номенлкатурой, то выделять обе эти строки. Для начала я добавил внизу поле количество, которое показывает общее количество выделенной строки, если есть еще одна строка и уже с помощью нее добавил условное оформление. Проблема в том, что одинаковые строки выделяются, но после того, как я перехожу на другую строку, условное офомрление сохраняется. Посмотрите, пожалуйста на код, который я написал. Может у кого-то появятся идеи. Или может кто-то посоветует код лучше:
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ТекущаяНоменклатура = ТекущаяСтрока.Номенклатура;
Количество = 0;
Для каждого Строка Из Объект.Товары Цикл
Если Строка.Номенклатура = ТекущаяНоменклатура Тогда
Количество = Количество + Строка.Количество;
КонецЕсли;
КонецЦикла;
КоличествоВФорме = Количество;
Если ТекущаяСтрока.Количество <> КоличествоВФорме Тогда
ТекущаяНоменклатураУО = ТекущаяСтрока.Номенклатура;
УстановитьУсловноеОформлениеВТЧ(ТекущаяНоменклатураУО);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеВТЧ(ТекущаяНоменклатураУО)
ЭлементУО = УсловноеОформление.Элементы.Добавить();
ЭлементУО.Использование = Истина;
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Голубой);
ЭлементОтбора = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ТекущаяНоменклатураУО");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ОформляемоеПоле = ЭлементУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Товары");
КонецПроцедуры
|
|
3
Andreyyy
05.05.21
✎
20:34
|
(0) Реквизит формы, тип = номенклатура.
Условное оформление - подсветка строки, если текущая номенклатура = добавленный реквизит.
При активизации строки заполнять добавленный реквизит формы текущей номенклатурой.
|
|