Имя: Пароль:
1C
1С v8
Вопрос по Дереву значений
0 Nemirov
 
07.07.21
16:37
На форму выгрузил запрос в дерево значений. Возникла необходимость добавить колонку с типом булево (флажок).

"ВЫБРАТЬ
    |    ЛОЖЬ КАК Выбран,
    |    ДействиеСкидокНаценокПоНоменклатуре.Период КАК Период,
    |    ДействиеСкидокНаценокПоНоменклатуре.Источник КАК Источник,
    |    ДействиеСкидокНаценокПоНоменклатуре.Номенклатура КАК Номенклатура,
    |    ДействиеСкидокНаценокПоНоменклатуре.Ответственный КАК Ответственный
    |ИЗ
    |    РегистрСведений.ДействиеСкидокНаценокПоНоменклатуре КАК ДействиеСкидокНаценокПоНоменклатуре
    |ГДЕ
    |    ДействиеСкидокНаценокПоНоменклатуре.Период >= &ТекущаяДата
    |    И ДействиеСкидокНаценокПоНоменклатуре.Статус = &Статус
    |ИТОГИ ПО
    |    Источник"

Первый раз работаю с деревом. Не пойму как сделать так, если ты ставишь галочку родителю, то проставить истину всей номенклатуре по родителю. Родитель обозначен у меня как источник.

Пробовал вот так. Все строки прохожу, выставляется истина, но на форме истина отображается только у родителя.

&НаКлиенте
Процедура ТаблицаМаркетингиВыбранПриИзменении(Элемент)
    
    Элемент.Родитель.ТекущаяСтрока
    Если Элемент.Родитель.ТекущиеДанные.Номенклатура = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка") тогда            
        ВыбратьВсеПоИсточнику(Элемент.Родитель.ТекущиеДанные.Источник);
    КонецЕсли;

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

Процедура ВыбратьВсеПоИсточнику(Источник)

    ДеревоНаФорме = РеквизитФормыВЗначение("МаркетинговыеАкции");
    
    Для каждого  ПоискИсточника из ДеревоНаФорме.Строки цикл
        Если ПоискИсточника.Источник = Источник тогда
            Для каждого СтрокаПоИсточнику из ПоискИсточника.Строки Цикл
                СтрокаПоИсточнику.Выбран = Истина;
            КонецЦикла;
        КонецЕсли;        
    КонецЦикла;
    
КонецПроцедуры
1 Nemirov
 
07.07.21
16:38
С сервера понятно, на клиенте вряд ли отобразится. Но заного когда ставлю флажок, те строки которые я проходил до этого опять со значением Ложь.
2 acht
 
07.07.21
16:54
(0) > ДеревоНаФорме = РеквизитФормыВЗначение("МаркетинговыеАкции");

Обратное действие где?
3 Nemirov
 
08.07.21
09:29
(2) Что за обратное действие?
4 Nemirov
 
08.07.21
09:30
(2) А в элемент формы
5 Nemirov
 
08.07.21
09:38
(2) Спасибо !!!
6 lodger
 
08.07.21
09:41
(0) "РеквизитФормыВЗначение("МаркетинговыеАкции");" - тяжелая и дорогая по ресурсам операция.
не проще ли с ДанныеФормыДерево работать?

&НаКлиенте
Процедура ТаблицаМаркетингиВыбранПриИзменении(Элемент)
    
   // Элемент.Родитель.ТекущаяСтрока
    Если Элемент.Родитель.ТекущиеДанные.Номенклатура = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка") тогда            
        ВыбратьВсеПоИсточнику(Элемент.Родитель.ТекущиеДанные);
    КонецЕсли;

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

&НаКлиенте
Процедура ВыбратьВсеПоИсточнику(Источник)

    Для каждого  ДочерниеСтроки из Источник.ПолучитьЭлементы() цикл
       ДочерниеСтроки.Выбран = Истина;
       ВыбратьВсеПоИсточнику(ДочерниеСтроки);
    КонецЦикла;
    
КонецПроцедуры