Имя: Пароль:
1C
1С v8
Дерево значений
0 may-100
 
15.08.11
11:38
Добрый день!
Нужно решить такую задачу: вывести список статей денежных средств и суммы, которые проходили по этим статьям за определенный период, в виде дерева значений с группировками.Проблема состоит в том, если в справочнике "Статьи движения денежных средств" внутри папки есть еще вложенные папки и просто элементы, то группировка при выводе повторяется.
Например,
1.Входящие платежи        1000
 1.1. Платежи от полкупателей
1 may-100
 
15.08.11
11:42
1.Входящие платежи              1000

1.1. Платежи от покупателей   500
      По отсновной деят.      200
      По ЕНВД                 300
1. Входящие платежи           500
      Возврат от поставщиков  500

А нужно, чтобы выводилось так:

1.Входящие платежи              1000

1.1. Платежи от покупателей   500
      По отсновной деят.      200
      По ЕНВД                 300

Возврат от поставщиков       500

Как это реализовать?
2 Maxus43
 
15.08.11
11:43
На закладке Итоги только по элементам стоит? или с Иерархией ещё?
3 may-100
 
15.08.11
11:49
Выгружаю с помощью этотго запроса:


Запрос = Новый Запрос;
   МВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МВТ;
   Запрос.Текст = "ВЫБРАТЬ ";
   СЧ = 0;
   Для Каждого Колонка Из ТаблицаДДС.Колонки Цикл
       СЧ = СЧ + 1;
       Запрос.Текст = Запрос.Текст + Символы.ПС + "ТЗСостав."+ Колонка.Имя + " КАК "+ Колонка.Имя + ?(СЧ = ТаблицаДДС.Колонки.Количество(),"",",");
   КонецЦикла;
   Запрос.Текст = Запрос.Текст + Символы.ПС + "ПОМЕСТИТЬ ТЗВременная
   |ИЗ
   |    &ТЗСостав КАК ТЗСостав";
   
   Запрос.УстановитьПараметр("ТЗСостав",ТаблицаДДС);
   Запрос.Выполнить();
   
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = МВТ;
   Запрос.Текст = "ВЫБРАТЬ ";
   СЧ = 0;
   Для Каждого Колонка Из ТаблицаДДС.Колонки Цикл
       СЧ = СЧ + 1;
       Запрос.Текст = Запрос.Текст + Символы.ПС + "ТЗСостав."+ Колонка.Имя + " КАК "+ Колонка.Имя + ?(СЧ = ТаблицаДДС.Колонки.Количество(),"",",");
   КонецЦикла;
   Запрос.Текст = Запрос.Текст + Символы.ПС + " ИЗ
   |    ТЗВременная КАК ТЗСостав
   |ИТОГИ";
   СЧ = 0;
   Для Каждого КолонкаПересчета Из СтруктураКолонокПересчета Цикл
       СЧ = СЧ + 1;
       Запрос.Текст = Запрос.Текст + Символы.ПС + КолонкаПересчета.Значение + " ("+ КолонкаПересчета.Ключ + ")" + ?(СЧ = СтруктураКолонокПересчета.Количество(),"",",");    
   КонецЦикла;
   Запрос.Текст = Запрос.Текст + Символы.ПС + "ПО
   |    " + ИмяКолонки + " Только ИЕРАРХИЯ";
   ДеревоСтатей = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
4 Maxus43
 
15.08.11
11:54
"Только ИЕРАРХИЯ" Другое значение поставь
5 may-100
 
15.08.11
12:12
Если я ставлю "Иерархия", то тогда элементы повторяются
  Поступления от покупателей - 5000
      Поступления от покупателей  - 5000
  прочие поступления - 3000
      Прочие поступления - 3000

Что не так?
6 Axel2009
 
15.08.11
12:27
ВыборкаИзРезультатаЗапроса (QueryResultSelection)
ТипЗаписи (RecordType)
Синтаксис:
ТипЗаписи()
Возвращаемое значение:
Тип: ТипЗаписиЗапроса.
Описание:
Получает тип текущей записи выборки.
Пример:
ТекТип = Выборка.ТипЗаписи();
7 Maxus43
 
15.08.11
12:28
(5) "Элементы" и "Элементы И Иерархия" тоже криво?
8 may-100
 
15.08.11
13:01
Если оставить просто элементы, то нет группировок,а они нужны.
Если "Элементы и иерархия", то выводится 2 строки, одна - элемент, а вторая - группировка с именем аналогичным элементу. Получается одна строчка лишняя.
9 Alexandr Puzakov
 
15.08.11
13:32
(3) пиля-а-а-ть! Код переписать! Жутко сложно читается...
10 Axel2009
 
15.08.11
13:50
(8) выбирать выборкой. не учитывать те строки, которые типзаписи имеют итог по группировке, если есть итог по иерархии.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший