Имя: Пароль:
1C
 
Дерево с флажками из запроса
,
0 Powerfool
 
11.09.14
12:00
Имеется ТП, в нем уже настроены колонки. Причем в одной из них флажок (заполнено ДанныеФлажка). Хочу выгрузить в это ТП результат запроса, при этом заполнив флажок.

Первое с чем столкнулся: не могу выгрузить в ТП без СоздатьКолонки(). Это оч неудобно, потому что убивает мои, уже настроенные колонки.

Как это делать? Впервые работаю с деревом
1 Wobland
 
11.09.14
12:01
выбрать ложь как пометка
2 kosts
 
11.09.14
12:11
(0) Ничего не понял
3 Powerfool
 
11.09.14
12:17
(2) Вот и я думаю, как то мало ответов. Объясняю:
Есть ТП

Флажок | Контрагент | Документ

При этом у Флажок Данные = "", ДанныеФлажка = "Флажок"

Я хочу примерно так:

V К1
   |--V Док1
   |--V Док2
   |--V Док3
V К2
   |--V Док1
   |--V Док2
   |--V Док3
4 kosts
 
11.09.14
12:19
(3) Это понятно. не понятно, что не получается
5 Wobland
 
11.09.14
12:20
(4) не получается догадаться, что в запросе тоже нужно поле про флажок
6 Powerfool
 
11.09.14
12:20
(3) Есть Запрос

ВЫБРАТЬ
    ЗаказПокупателя.Проведен КАК Флажок,
    ЗаказПокупателя.Контрагент КАК Контрагент,
    ЗаказПокупателя.Ссылка КАК Документ
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ИТОГИ ПО
    Контрагент

Когда я делаю:
ЭлементыФормы.ДокументыНаПечать.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Заполняется фигово, как таблицу
Если сделать ещё
    ЭлементыФормы.ДокументыНаПечать.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);    
    ЭлементыФормы.ДокументыНаПечать.СоздатьКолонки();

ТО выводится дерево (с группировками), но пропадают настройки элементов управления, да и флажок стоановиться полем ввода
7 Wobland
 
11.09.14
12:21
(6) //ЭлементыФормы.ДокументыНаПечать.СоздатьКолонки();
8 kosts
 
11.09.14
12:24
(6)
Удалить

ЭлементыФормы.ДокументыНаПечать.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);


написать

Пока Выборка.Следующий() Цикл
    ...
    Выборка2 = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка2.Следующий() Цикл
        ...
    КонецЦикла;
КонецЦикла;

9 Powerfool
 
11.09.14
12:25
(7) Я понимаю много букв пишу, тяжело осилить, и вообще видимо писать проще чем читать. Но ты хоть бы вид делал ...
10 Wobland
 
11.09.14
12:26
(9) осиливать здесь тебе нужно
11 Wobland
 
11.09.14
12:27
рабочий код:
    Кедр=Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    об.Продажи=Кедр;
    ЗначениеВРеквизитФормы(об, "Объект");
12 Powerfool
 
11.09.14
12:27
(10) что осиливать? Ты пока ничем не грузишь
13 Powerfool
 
11.09.14
12:28
(11) Спасибо. Ща покурим
14 Powerfool
 
11.09.14
12:28
(11) Это только для управляемых форм? Если так, то не канает, у меня обычные
15 Зойч
 
11.09.14
12:38
>>не могу выгрузить в ТП без СоздатьКолонки().
Врешь.
Все колонки просто должны быть в запросе
16 salvator
 
11.09.14
12:42
(14) Результат = Запрос.Выполнить();      
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();
17 Powerfool
 
11.09.14
12:44
(16) (9)
18 Wobland
 
11.09.14
12:50
(14) есессно. но главный принцип тот же
19 Powerfool
 
11.09.14
12:53
(8) Сварганил
Выборка = Запрос.Выполнить().Выбрать( ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл        
  СтрокаДЗ = ДокументыНаПечать.Строки.Добавить();
  ЗаполнитьЗначенияСвойств(СтрокаДЗ, Выборка);
  Выборка2 = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка2.Следующий() Цикл
      ЗаполнитьЗначенияСвойств(СтрокаДЗ.Строки.Добавить(), Выборка);        
    КонецЦикла;
КонецЦикла;

Чето колонка "Документ" только не заполняется. Может потому что составной тип?
20 kosts
 
11.09.14
13:02
(19) Пропустил добавление строк
21 kosts
 
11.09.14
13:03
(20), а не я туплю
22 kosts
 
11.09.14
13:04
(19) Проверь тип колонки на форме
23 Powerfool
 
11.09.14
13:12
(22) уже пробовал и составной и не составной. В типе ДокументСсылка , все правильно
24 kosts
 
11.09.14
13:14
(23) Выборка => Выборка2
25 Powerfool
 
11.09.14
13:14
(22) Не тут чето то с итогами связано. При обходе в полях "документ" и "флажок" вижу Null
26 Powerfool
 
11.09.14
13:19
Я запрос децл изменил. Может это поможет

ВЫБРАТЬ
    ЗаказПокупателя.Ссылка,
    ЗаказПокупателя.Контрагент,
    ЗаказПокупателя.Проведен
ПОМЕСТИТЬ Заказы
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.ДокументОснование = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Контрагент,
    РеализацияТоваровУслуг.Проведен
ПОМЕСТИТЬ Реализации
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Заказы КАК Заказы
        ПО РеализацияТоваровУслуг.Сделка = Заказы.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СчетФактураВыданный.Ссылка,
    СчетФактураВыданный.Контрагент,
    СчетФактураВыданный.Проведен
ПОМЕСТИТЬ СчетаФактуры
ИЗ
    Документ.СчетФактураВыданный КАК СчетФактураВыданный
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Реализации КАК Реализации
        ПО СчетФактураВыданный.ДокументОснование = Реализации.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Заказы.Ссылка КАК Документ,
    Заказы.Контрагент КАК Контрагент,
    Заказы.Проведен КАК Печатать
ИЗ
    Заказы КАК Заказы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Реализации.Ссылка,
    Реализации.Контрагент,
    Реализации.Проведен
ИЗ
    Реализации КАК Реализации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    СчетаФактуры.Ссылка,
    СчетаФактуры.Контрагент,
    СчетаФактуры.Проведен
ИЗ
    СчетаФактуры КАК СчетаФактуры
ИТОГИ ПО
    Контрагент
27 Powerfool
 
11.09.14
13:23
(19) Прошу меня простить. Как всегда споткнулся на пустом месте и коммент (24) теперь встал на место.

ЗаполнитьЗначенияСвойств(СтрокаДЗ.Строки.Добавить(), Выборка2);
28 Powerfool
 
11.09.14
13:25
А вот в тему ещё вопрос. Есть типовые механизмы расчета значения флажка по значению флажка подчиненных элементов? Или надо писать свою рекурсию для этого?
29 kosts
 
11.09.14
13:26
(28) Только своё
30 Powerfool
 
11.09.14
13:32
(29) Шайтанама
31 Powerfool
 
11.09.14
13:59
На всякий случай вдруг кому поможет. Код по обновлению флажков. Не тыкайте палками, код работает, но писал на скорую руку

Процедура ОбновитьФлажки()
    Для Каждого Строка ИЗ ДокументыНаПечать.Строки Цикл
        Если Строка.Уровень() = 0 Тогда
            ПолучитьЗначениеПодчиненных(Строка);
        КонецЕсли;    
    КонецЦикла;
КонецПроцедуры

Процедура ПолучитьЗначениеПодчиненных(Строка)    
    
    Строки = Строка.Строки;
    Если Строки.Количество() > 0 Тогда
        Значение = Истина;
        Для Каждого ПодСтрока ИЗ Строка.Строки Цикл
            Если ПодСтрока.Печатать = Ложь Тогда
                Значение = Ложь;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Строка.Печатать = Значение;
    КонецЕсли;
        
КонецПроцедуры

Процедура ДокументыНаПечатьПриИзмененииФлажка(Элемент, Колонка)
    Строка = Элемент.ТекущиеДанные;
    Если Строка.Уровень() = 0 Тогда
        Для Каждого ПодСтрока ИЗ Строка.Строки Цикл
            ПодСтрока.Печатать = Строка.Печатать;
        КонецЦикла;
    Иначе
        ПолучитьЗначениеПодчиненных(Строка.Родитель)        
    КонецЕсли;    
КонецПроцедуры