Имя: Пароль:
1C
 
Условное оформление в табличной части при активизации строки
,
0 Varlant1n
 
05.05.21
17:50
Здравствуйте. В табличной части документа "ЗаказКлиента" очень часто бывают строки , которые разделены стандартной фукнцией деления строки. Мне нужно для удобства пользователей добавить выделение одинаковых строк при активизации строки. То есть при выделении строки, если у строки есть вторая строка с той же номенлкатурой, то выделять обе эти строки. Для начала я добавил внизу поле количество, которое показывает общее количество выделенной строки, если есть еще одна строка  и уже с помощью нее добавил условное оформление. Проблема в том, что одинаковые строки выделяются, но после того, как я перехожу на другую строку, условное офомрление сохраняется. Посмотрите, пожалуйста на код, который я написал. Может у кого-то появятся идеи. Или может кто-то посоветует код лучше:

&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    Если ТекущаяСтрока <> Неопределено Тогда
        ТекущаяНоменклатура = ТекущаяСтрока.Номенклатура;
        Количество = 0;
        Для каждого Строка Из Объект.Товары Цикл
            Если Строка.Номенклатура = ТекущаяНоменклатура Тогда
                Количество = Количество + Строка.Количество;  
            КонецЕсли;
        КонецЦикла;
        КоличествоВФорме = Количество;
        
        Если ТекущаяСтрока.Количество <> КоличествоВФорме Тогда
            ТекущаяНоменклатураУО = ТекущаяСтрока.Номенклатура;
            УстановитьУсловноеОформлениеВТЧ(ТекущаяНоменклатураУО);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

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

КонецПроцедуры
1 acht
 
05.05.21
20:08
А это, оказывается, популярное тестовое задание.

https://forum.infostart.ru/forum9/topic257912/
2 acht
 
05.05.21
20:10
О, да это ж опять ты, Самир. Не берут?
3 Andreyyy
 
05.05.21
20:34
(0) Реквизит формы, тип = номенклатура.
Условное оформление - подсветка строки, если текущая номенклатура  = добавленный реквизит.
При активизации строки заполнять добавленный реквизит формы текущей номенклатурой.
4 acht
 
05.05.21
20:45
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн