Имя: Пароль:
1C
1С v8
Итоги в иерархии по таблице значений
0 Rom_Kat
 
28.11.12
10:58
ВЫБРАТЬ
       |    Таб.Подразделение,
       |    Таб.СтатьяСводная,
       |    Таб.Период,
       |    Таб.Сумма,
       |    Таб.ПланСумма,
       |    Таб.ПрогнозСумма  
       |ПОМЕСТИТЬ ТабОперации
       |ИЗ
       |    &ТЗ КАК Таб
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    ТЗ.Подразделение КАК Подразделение,
       |    ТЗ.СтатьяСводная КАК СтатьяСводная,
       |    ТЗ.Период КАК Период,
       |    СУММА(ТЗ.Сумма) КАК Сумма,
       |    СУММА(ТЗ.ПланСумма) КАК ПланСумма,
       |    СУММА(ТЗ.ПрогнозСумма) КАК ПрогнозСумма
       |ИЗ ТабОперации КАК ТЗ
       |СГРУППИРОВАТЬ ПО
       |    ТЗ.Подразделение,
       |    ТЗ.СтатьяСводная,
       |    ТЗ.Период
       |УПОРЯДОЧИТЬ ПО
       |   ТЗ.Подразделение.Наименование
       |ИТОГИ
       |    СУММА(Сумма),
       |    СУММА(ПланСумма),
       |    СУММА(ПрогнозСумма)
       |ПО
       |    ТЗ.Подразделение ИЕРАРХИЯ,
       |    ТЗ.СтатьяСводная,
       |    ТЗ.Период


Есть таблица значений с подразделениями в одной колонке и сводными статьями в другой. Задача получить итоги по статьям в иерархии подразделений. Возможно ли это провернуть с таблицей значений?
1 Шапокляк
 
28.11.12
10:59
Дерево значений еще не предлагали?
2 Rom_Kat
 
28.11.12
11:01
не предлагали. Только я не понял при чем здесь дерево значений.
3 fisher
 
28.11.12
11:03
Дык а проблема в чем?
4 Rom_Kat
 
28.11.12
11:04
Нет итогов.
Делаю ОбходРезультатаЗапроса.ПоГруппировкам
5 Rom_Kat
 
28.11.12
11:06
Вопрос в том и стоит возможно ли это.
Может кто занимался таким извратом.
6 fisher
 
28.11.12
11:06
Может, обходишь неправильно?
Глянь результат в консоли.
7 Maxus43
 
28.11.12
11:06
Выполнить.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

получиш дерево
8 fisher
 
28.11.12
11:07
Я не вижу причины, которая может вызывать проблемы.
На крайняк, попробуй явно соединить со справочником подразделений и иерархию по его данным получай.
9 Rom_Kat
 
28.11.12
11:13
(8)иерархию подразделений выводит, но при обходе по статьям выдает 6 строк Тип Элемента Неопределено и без значений.
10 Maxus43
 
28.11.12
11:16
(9) код в студию.
З.ы. конструктором внешних печ форм ты получишь 100% рабочий код по обходу результата иерархически
11 Rom_Kat
 
28.11.12
11:27
ВыборкаДетальныеЗаписи = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьПодразделение.Параметры.Наименование = ВыборкаДетальныеЗаписи.Подразделение;
       ОбходПоСтатье = ВыборкаДетальныеЗаписи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       Для Каждого СтрокаНастроек ИЗ НастройкиСводная Цикл
           Если ОбходПоСтатье.НайтиСледующий(СтрокаНастроек.СводнаяСтатья, "СтатьяСводная") Тогда
               
               ОбходПоПериоду = ОбходПоСтатье.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
               
               Пока ОбходПоПериоду.Следующий() Цикл            
                   Если ОбходПоСтатье.СтатьяСводная="Оборот с НДС" Тогда
                       СтрокаОборот = ТабОборот.Добавить();
                       ЗаполнитьЗначенияСвойств(СтрокаОборот, ОбходПоПериоду);    
                   КонецЕсли;
               КонецЦикла;
               
               Если СтрокаНастроек.ОтносительноОборота Тогда
                   ОбластьСтатья.Параметры.Наименование = ОбходПоСтатье.СтатьяСводная+" % от ОБОРОТА";
                   ОбходПоПериоду = ОбходПоСтатье.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                   Пока ОбходПоПериоду.Следующий() Цикл
                       СтрокаОборот = ТабОборот.Найти(ОбходПоПериоду.Период, "Период");
                       Если СтрокаОборот<>Неопределено Тогда
                           Если СтрокаОборот.Сумма<>0 Тогда
                               ОбластьСтатьяПериод.Параметры.Сумма = Строка(Формат(ОбходПоПериоду.Сумма/СтрокаОборот.Сумма*100, "ЧЦ=15; ЧДЦ=2"))+" %";
                           Иначе    
                               ОбластьСтатьяПериод.Параметры.Сумма = 0;
                           КонецЕсли;
                           Если СтрокаОборот.ПланСумма<>0 Тогда
                               ОбластьСтатьяПериод.Параметры.ПланСумма    = Строка(Окр(ОбходПоПериоду.ПланСумма/СтрокаОборот.ПланСумма*100, 2, 1))+" %";
                           Иначе
                               ОбластьСтатьяПериод.Параметры.ПланСумма    = 0;
                           КонецЕсли;
                           Если СтрокаОборот.ПрогнозСумма<>0 Тогда
                               ОбластьСтатьяПериод.Параметры.ПрогнозСумма    = Строка(Окр(ОбходПоПериоду.ПрогнозСумма/СтрокаОборот.ПрогнозСумма*100, 2, 1))+" %";
                           Иначе
                               ОбластьСтатьяПериод.Параметры.ПрогнозСумма    = 0;
                           КонецЕсли;
                       Иначе
                           ОбластьСтатьяПериод.Параметры.Сумма = 0;
                           ОбластьСтатьяПериод.Параметры.ПланСумма    = 0;
                           ОбластьСтатьяПериод.Параметры.ПрогнозСумма = 0;
                       КонецЕсли;
                       ДокументРезультат.Присоединить(ОбластьСтатьяПериод)
                   КонецЦикла;
                   
               КонецЕсли;    
               
               ОбходПоСтатье.Сбросить();
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
12 Maxus43
 
28.11.12
11:30
в консоли посмотри что выдаёт, если там нормально - код ковырять
13 Rom_Kat
 
28.11.12
11:45
(12)А как в консоль ТЗ передать?
14 Maxus43
 
28.11.12
11:47
(13) а откуда ты её вытащил то?
15 Rom_Kat
 
28.11.12
11:49
ТЗ я заполняю результатами кучи запросов.
16 LAAry
 
28.11.12
11:54
(4)ОбходРезультатаЗапроса.ПоГруппировкамСИерархией не?
17 Maxus43
 
28.11.12
11:55
(15) чтоб проверить твой код - обычный запрос сделай куданибудь, где есть подразделение и статья, не надо тех же данных, надо ту же структуру.
и да, попробовать (16) ещё
18 Rom_Kat
 
28.11.12
11:59
(17)проще на месте колдовать, а (16) попробую