Имя: Пароль:
1C
1С v8
Группировка строк
, ,
0 Neznayka_5
 
24.08.12
05:49
Делаю
ИТОГИ ПО
   Регион,
   Контрагент,
   ДоговорКонтрагента
Подскажите, как вывести это в один столбец табличного документа? Пока получается вывести только Регион:
ДокументРезультат.НачатьАвтогруппировкуСтрок();    

   Пока РезультатЗапроса.Следующий() Цикл
       ОбластьСтрока.Параметры.Регион = РезультатЗапроса.Регион;
       ОбластьСтрока.Параметры.ФактКол = Формат(РезультатЗапроса.Количество, "ЧДЦ=0");
       ОбластьСтрока.Параметры.ФактВал = РезультатЗапроса.Стоимость;
       ОбластьСтрока.Параметры.ФактСр = Формат(РезультатЗапроса.Стоимость / РезультатЗапроса.Количество, "ЧДЦ=2");
       ДокументРезультат.Вывести(ОбластьСтрока, РезультатЗапроса.Уровень());
   КонецЦикла;
   
   ДокументРезультат.ЗакончитьАвтогруппировкуСтрок();
1 Neznayka_5
 
24.08.12
05:57
никто не знает?
2 Рэйв
 
24.08.12
06:03
Если я правильно телепатирую, то

ОбластьСтрока.Параметры.Регион=""+РезультатЗапроса.Регион+","+РезультатЗапроса.Контрагент+","+РезультатЗапроса.ДоговорКонтрагента
3 badboychik
 
24.08.12
06:04
делай на СКД , там есть вертикальная группировка полей
4 Neznayka_5
 
24.08.12
06:07
(2) не совсем то, на втором уровне мне не нужно выводить регион, а потом контрагента, только контрагент нужен, и на третьем только договор контрагента.
(3) скд понятно, но интересно, возможно ли без нее обойтись
5 Wobland
 
24.08.12
06:12
(4) возможно. берёшь да обходишь по группировкам
6 Neznayka_5
 
24.08.12
06:15
(5) РезультатЗапроса = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
не помогает.. или нужно указывать где-то наименование группировки и делать несколько циклов?
7 Wobland
 
24.08.12
06:15
(6) РезультатЗапросаЕщё = РезультатЗапроса .Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
8 Wobland
 
24.08.12
06:16
(7) это после (6)
9 Wobland
 
24.08.12
06:16
(8) в цикле
10 Neznayka_5
 
24.08.12
06:18
Сейчас попробую. И то есть если у меня 4 группировки мне 4 цикла делать?
11 Neznayka_5
 
24.08.12
06:24
(9) Урааа!! Получилось!
Пока РезультатЗапроса.Следующий() Цикл
       ОбластьСтрока.Параметры.Регион = РезультатЗапроса.Регион;
       ОбластьСтрока.Параметры.ФактКол = Формат(РезультатЗапроса.Количество, "ЧДЦ=0");
       ОбластьСтрока.Параметры.ФактВал = РезультатЗапроса.Стоимость;
       ОбластьСтрока.Параметры.ФактСр = Формат(РезультатЗапроса.Стоимость / РезультатЗапроса.Количество, "ЧДЦ=2");
       ДокументРезультат.Вывести(ОбластьСтрока, РезультатЗапроса.Уровень(),,Ложь);
       РезультатЗапроса1 = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       Пока РезультатЗапроса1.Следующий() Цикл
           ОбластьСтрока.Параметры.Регион = РезультатЗапроса1.Контрагент;
           ОбластьСтрока.Параметры.ФактКол = Формат(РезультатЗапроса1.Количество, "ЧДЦ=0");
           ОбластьСтрока.Параметры.ФактВал = РезультатЗапроса1.Стоимость;
           ОбластьСтрока.Параметры.ФактСр = Формат(РезультатЗапроса1.Стоимость / РезультатЗапроса1.Количество, "ЧДЦ=2");
           ДокументРезультат.Вывести(ОбластьСтрока, РезультатЗапроса1.Уровень(),,Ложь);
           РезультатЗапроса2 = РезультатЗапроса1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);  
           Пока РезультатЗапроса2.Следующий() Цикл
               ОбластьСтрока.Параметры.Регион = РезультатЗапроса2.ДоговорКонтрагента;
               ОбластьСтрока.Параметры.ФактКол = Формат(РезультатЗапроса2.Количество, "ЧДЦ=0");
               ОбластьСтрока.Параметры.ФактВал = РезультатЗапроса2.Стоимость;
               ОбластьСтрока.Параметры.ФактСр = Формат(РезультатЗапроса2.Стоимость / РезультатЗапроса2.Количество, "ЧДЦ=2");
               ДокументРезультат.Вывести(ОбластьСтрока, РезультатЗапроса2.Уровень(),,Ложь);
               РезультатЗапроса3 = РезультатЗапроса2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
               Пока РезультатЗапроса3.Следующий() Цикл
                   ОбластьСтрока.Параметры.Регион = РезультатЗапроса3.ДокументПродажи;
                   ОбластьСтрока.Параметры.ФактКол = Формат(РезультатЗапроса3.Количество, "ЧДЦ=0");
                   ОбластьСтрока.Параметры.ФактВал = РезультатЗапроса3.Стоимость;
                   ОбластьСтрока.Параметры.ФактСр = Формат(РезультатЗапроса3.Стоимость / РезультатЗапроса3.Количество, "ЧДЦ=2");
                   ДокументРезультат.Вывести(ОбластьСтрока, РезультатЗапроса3.Уровень(),,Ложь);
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
12 Wobland
 
24.08.12
06:27
(11) РезультатЗапроса.Стоимость / РезультатЗапроса.Количество

докажи, что количество всегда будет не равно нулю
13 Wobland
 
24.08.12
06:31
однако, с Область.Заполнить() было б короче. а формат в свойствах ячейки можно сказать
14 Neznayka_5
 
24.08.12
06:34
(12) не думала об этом, ну сейчас условие поставлю
(13) ну это ладно, а формат, если задать в области ячейки не всегда отрабатывает..
15 Wobland
 
24.08.12
06:36
(14) отрабатывает всегда. просто результат отличается от ожидаемого ;)
16 Neznayka_5
 
24.08.12
06:39
(15) вот именно. ну у меня не 20 строк в запросе, можно и повторить:)
17 Neznayka_5
 
24.08.12
06:39
(16) в выборке запроса
18 Wobland
 
24.08.12
06:45
(16) поди ждёшь в такие минуты, что NULL тебе будет показываться с двумя знаками после запятой?
19 Neznayka_5
 
24.08.12
06:47
(18) не поняла. это к (12) относится?
20 Wobland
 
24.08.12
06:49
(19) это относится к (14) и (15)
21 Neznayka_5
 
24.08.12
06:54
проверила, не будет)
22 Neznayka_5
 
24.08.12
06:59
решила добавить в
ИТОГИ ПО
   Регион,
   Контрагент,
   ДоговорКонтрагента,
Еще и
   ДокументПродажи
и теперь все строки задваиваются на самом нижнем уровне, как исправить?
23 Wobland
 
24.08.12
07:00
(22) а цикл не добавила?
24 Neznayka_5
 
24.08.12
07:01
добавила, но я в консоли пока проверяю. Выбрать Различные тоже не помогло
25 Wobland
 
24.08.12
07:02
(24) ты неверно интрепретируешь результат
26 Neznayka_5
 
24.08.12
07:04
(25) хм.. самое странное то, что в отчете отрабатывает замечательно все, без повторений..
27 Neznayka_5
 
24.08.12
07:04
(26) дура я! это ж последний уровень группировки то и есть!)
28 Wobland
 
24.08.12
07:04
(27) спасибо
29 Neznayka_5
 
24.08.12
07:05
(28) пятница дает о себе знать:)
30 Neznayka_5
 
24.08.12
07:05
мысли не о том..)
31 Neznayka_5
 
24.08.12
07:19
как работает объединить, если есть группировка и итоги?
32 Wobland
 
24.08.12
07:19
(31) не помню точно. засунь свой объединить в подзапрос и применяй итоги уже у нему для пущей гарантии
33 Dimel
 
24.08.12
08:44
А можно все запросом сделать например так:
ИТОГИ
   ЕСТЬNULL(ДокументПродажи, ЕСТЬNULL(ДоговорКонтрагента, ЕСТЬNULL(Контрагент, Регион))) КАК Регион,
   СУММА(СуммаОстаток)
ПО
   Регион,
   Контрагент,
   ДоговорКонтрагента,
   ДокументПродажи
И в поле запроса "Регион" все данные соберутся ;)
AdBlock убивает бесплатный контент. 1Сергей