Имя: Пароль:
1C
1С v8
таблица Значений в Дерево значений
,
0 MAPATNK2
 
naïve
15.05.19
09:29
Всем доброго дня. Нашла много вариантов выгрузки ТЗ в ДЗ, но так и не нашла работающий. Подскажите пожалуйста.
Есть таблица значений вида:
Номенклатура  |        кол-во остаток      | Дней закупа

Все выводимые данные в виде элементов без иерархии.
Как теперь добавить иерархию в ТЗ. Изначально в запрос добавить иерархию и вывести можно, но после запроса есть гигантский код, который переделывать не вариант, а при добавлении иерархии все ломается и перестает работать.
Поэтому хочу уже к готовой таблице добавить иерархию. Возможно ли это, может ссылки какие-нибудь полезные есть? Скажу честно, перелазила много форумов, так и не смогла осуществить задуманное. Может не там искала, а может и.....)))
1 shadow_sw
 
15.05.19
09:31
2 MAPATNK2
 
naïve
15.05.19
09:31
Находила и такое:
        ТЗ = новый таблицазначений;
    ТЗ = ИсточникДанных.ИсточникДанных;
    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);//передаем ТЗ
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ИсточникДанных.Колонки.Номенклатура.Измерение = Истина;//по этой колонке идет группировка
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();
    Дерево = ПЗ.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    Дерево.ВыбратьСтроку();


И такое
    



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

Дерево = Список.ПолучитьЭлементы();
Дерево.Очистить();

РекурсивныйВыводДереваЗначений(Дерево, ДеревоИсточников);

КонецПроцедуры // ОбновитьСписокНоменклатуры()


// Процедура выводит дерево значений на форму.
//
Процедура РекурсивныйВыводДереваЗначений(ЭлементыДерева, ЭлементыДереваСтроки)

Для каждого СтрокаДеревоЗначений Из ЭлементыДереваСтроки.Строки Цикл

Если СтрокаДеревоЗначений.ЭтоГруппа Тогда

СтрокаДерево = ЭлементыДерева.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);            
ЭлементыДереваНовый = СтрокаДерево.ПолучитьЭлементы();
РекурсивныйВыводДереваЗначений(ЭлементыДереваНовый, СтрокаДеревоЗначений);

ИначеЕсли НЕ СтрокаДеревоЗначений.ЭтоГруппа  Тогда

СтрокаДерево = ЭлементыДерева.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);            
ЭлементыДереваНовый = СтрокаДерево.ПолучитьЭлементы();
РекурсивныйВыводДереваЗначений(ЭлементыДереваНовый, СтрокаДеревоЗначений);

Иначе            


СтрокаДерево = ЭлементыДерева.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДерево, СтрокаДеревоЗначений);

КонецЕсли;            
/////////////////
3 MAPATNK2
 
naïve
15.05.19
09:35
(1) Сложный код, который выдает ошибки и ссылки на несуществующие процедуры или функции
4 sqr4
 
15.05.19
09:37
Загружаем таблицу в запрос, выгружаем дерево с иерархией или я не правильно понял?
5 MAPATNK2
 
naïve
15.05.19
09:38
Есть вариант запросом к таблице с итогами и выгрузкой результата "с группировкой".

Но я так и не смогла сделать. Могу код отправить, может кто подскажет где ошибка.
6 MAPATNK2
 
naïve
15.05.19
09:38
(4) Правильно. Пыталась много раз, не выходит.
7 sqr4
 
15.05.19
09:39
(6) А в чем проблема, какие ошибки?
8 MAPATNK2
 
naïve
15.05.19
09:40
(7) Ни в чем. Просто не появляется никакой иерархии.
9 MAPATNK2
 
naïve
15.05.19
09:40
Из последнего пыталась так:



///////////////////////////////

ТЗ = новый таблицазначений;
    ТЗ = ИсточникДанных.ИсточникДанных;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    МояТаблицаЗначений.КоличествоКонечныйОстаток,
        |    МояТаблицаЗначений.КоличествоНачальныйОстаток,
        |    МояТаблицаЗначений.Номенклатура,
        |    МояТаблицаЗначений.ОстатокНаДатуНачалаЗакупок,
        |    МояТаблицаЗначений.Период,
        |    МояТаблицаЗначений.ХарактеристикаНоменклатуры,
        |    МояТаблицаЗначений.Продано,
        |    МояТаблицаЗначений.ДнейПродажи,
        |    МояТаблицаЗначений.СредняяПродажаЗаДень,
        |    МояТаблицаЗначений.Остаток,
        |    МояТаблицаЗначений.НеобходимыйОбъемЗакупки,
        |    МояТаблицаЗначений.ПланируемыйОбъемПродаж

        |ПОМЕСТИТЬ МояТаблица
        |ИЗ
        |    &МояТаблицаЗначений КАК МояТаблицаЗначений
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    МояТаблица.КоличествоКонечныйОстаток,
        |    МояТаблица.КоличествоНачальныйОстаток,
        |    МояТаблица.Номенклатура,
        |    МояТаблица.ОстатокНаДатуНачалаЗакупок,
        |    МояТаблица.Период,
        |    МояТаблица.ХарактеристикаНоменклатуры,
        |    МояТаблица.Продано,
        |    МояТаблица.ДнейПродажи,
        |    МояТаблица.СредняяПродажаЗаДень,
        |    МояТаблица.Остаток,
        |    МояТаблица.НеобходимыйОбъемЗакупки,
        |    МояТаблица.ПланируемыйОбъемПродаж
        |ИЗ
        |    МояТаблица КАК МояТаблица
        |ИТОГИ ПО        
        |Номенклатура";
    Запрос.УстановитьПараметр("МояТаблицаЗначений", ТЗ);
    РезультатЗапроса = Запрос.Выполнить();
    ДеревоКатегорий = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
10 sqr4
 
15.05.19
09:40
да кидай что есть посмотрим
11 MAPATNK2
 
naïve
15.05.19
09:41
последне вот так было
|ВЫБРАТЬ
        |    МояТаблица.КоличествоКонечныйОстаток,
        |    МояТаблица.КоличествоНачальныйОстаток,
        |    МояТаблица.Номенклатура,
        |    МояТаблица.ОстатокНаДатуНачалаЗакупок,
        |    МояТаблица.Период,
        |    МояТаблица.ХарактеристикаНоменклатуры,
        |    МояТаблица.Продано,
        |    МояТаблица.ДнейПродажи,
        |    МояТаблица.СредняяПродажаЗаДень,
        |    МояТаблица.Остаток,
        |    МояТаблица.НеобходимыйОбъемЗакупки,
        |    МояТаблица.ПланируемыйОбъемПродаж
        |ИЗ
        |    МояТаблица КАК МояТаблица
        |ИТОГИ ПО        
        |Номенклатура Иерархия";
12 sqr4
 
15.05.19
09:42
Наверно, нужно как до дать понять запросу, какой тип в поле номенклатура
|    Выразить(МояТаблицаЗначений.Номенклатура как Справочник.Номенклатура) как Номенклатура,
13 MAPATNK2
 
naïve
15.05.19
09:48
(12) Ну да. Родители появились. Вот только все, что было указано в остальных колонках - удалилось. ((Просто номенклатура с иерархией, без нужных данных.
14 PaulBC
 
15.05.19
09:53
(13) итоговые поля-то укажи

ИТОГИ
    СУММА(КоличествоКонечныйОстаток)
        .....
ПО
    Номенклатура ИЕРАРХИЯ
15 sqr4
 
15.05.19
09:59
(13) это должно быть видно только на последнем уровне иерархии, т.е где сама номенклатура. Добавление итогов, даст расчет по всем группировкам.
16 MAPATNK2
 
naïve
15.05.19
11:07
ТЗ = новый таблицазначений;
    ТЗ = ИсточникДанных.ИсточникДанных;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    МояТаблицаЗначений.ДнейПродажи,
        |    МояТаблицаЗначений.НеобходимыйОбъемЗакупки,
        |    МояТаблицаЗначений.Номенклатура,
        |    МояТаблицаЗначений.Остаток,
        |    МояТаблицаЗначений.ПланируемыйОбъемПродаж,
        |    МояТаблицаЗначений.Продано,
        |    МояТаблицаЗначений.СредняяПродажаЗаДень,
        |    МояТаблицаЗначений.ХарактеристикаНоменклатуры
        |ПОМЕСТИТЬ МояТаблица
        |ИЗ
        |    &МояТаблицаЗначений КАК МояТаблицаЗначений
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    МояТаблица.ДнейПродажи,
        |    МояТаблица.НеобходимыйОбъемЗакупки,
        |    МояТаблица.Номенклатура,
        |    МояТаблица.Остаток,
        |    МояТаблица.ПланируемыйОбъемПродаж,
        |    МояТаблица.Продано,
        |    МояТаблица.СредняяПродажаЗаДень,
        |    МояТаблица.ХарактеристикаНоменклатуры
        |ИЗ
        |    МояТаблица КАК МояТаблица
        |ИТОГИ
        |СУММА(Продано),
        |СУММА(ДнейПродажи),
        |СУММА(СредняяПродажаЗаДень),
        |СУММА(Остаток),
        |СУММА(НеобходимыйОбъемЗакупки),
        |СУММА(ПланируемыйОбъемПродаж)
        |ПО        
        |Номенклатура ИЕРАРХИЯ";
    Запрос.УстановитьПараметр("МояТаблицаЗначений", ТЗ);
    РезультатЗапроса = Запрос.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    ЭлементыФормы.ТАБДЕР.Значение = ТЗ.Скопировать();
17 MAPATNK2
 
naïve
15.05.19
11:07
Вывела дерево .... НО ПОЧЕМУ БЛИН ДЕРЕВО В СВЕРНУТОМ ВИДЕ ВЫВОДИТСЯ В ТАБЛИЧНУЮ ЧАСТЬ С ТИПОМ ДЕРЕВО ЗНАЧЕНИЙ?
18 MAPATNK2
 
naïve
15.05.19
11:08
и НИКАК НЕ РАЗВЕРНЕШЬ ( Как теперь добавить возможность эту?
19 MAPATNK2
 
naïve
15.05.19
11:13
Взяла это
////////////
Для каждого Строка Из ЭлементыФормы.ТАБДЕР.Значение.Строки Цикл
    ЭлементыФормы.ТАБДЕР.Развернуть(Строка);
    КонецЦикла;
    
/////////////


Думала поможет, но нет же, дерево превратилось в обычную таблицу значений. Что за бред, кто вообще это создавал. Ппц просто.

расскажите пожалуйста, как вывести нормальное дерево значений, где можно сворачивать, разворачивать и т.д и т.п.
20 sqr4
 
15.05.19
11:16
(17) дерево значений надо выводить в дерево!
21 sqr4
 
15.05.19
11:20
а в табличную часть потом перегружайте, при записи
22 MAPATNK2
 
naïve
15.05.19
11:21
Не поняла. У меня на форме дерево значений есть, в коде я вывожу дерево значений, помещаю его на форме. программно все выглядит отлично, при на на Shift+F9, но при формировании отчета, дерево свернуто. Что именно я пропустила?
23 MAPATNK2
 
naïve
15.05.19
11:23
(20) У меня на форме такого нет элемента. можно выбрать только Табличное поле с типом значения "Дерево значений". никаких деревьев у меня нет. Обычные формы.
24 MAPATNK2
 
naïve
15.05.19
11:25
25 sqr4
 
15.05.19
11:26
(24) не робит
26 MAPATNK2
 
naïve
15.05.19
11:27
27 MAPATNK2
 
naïve
15.05.19
11:27
Выводится вот такая вот фигня. Без возможности что либо открыть и посмотреть
28 sqr4
 
15.05.19
11:29
ЭлементыФормы.ТАБДЕР.СоздатьКолонки()
29 MAPATNK2
 
naïve
15.05.19
11:30
почему уровней нет, не понятно. Причем в отладчике у элемента формы все отлично выводится, а при формировании, нет ничего.
https://yadi.sk/i/N1oq_eQybtm7YQ
30 sqr4
 
15.05.19
11:30
и соответственно, на форме чтобы он был без колонок
31 MAPATNK2
 
naïve
15.05.19
11:32
(30) Издевательство какое то, я ведь делала так блииин, он мне ошибку выводил, что мол для этого элемента такая процедура не выполнима. а сейчас все выполнилось. Спасибо большое!!!!!!!!!!!!!!!!!
32 sqr4
 
15.05.19
11:34
(31) наверное что то не учли.