Имя: Пароль:
1C
1С v8
Ламерский вопрос
,
0 panzer
 
10.04.12
09:06
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
       Пока Выборка.Следующий() Цикл
           ОбластьМакета.Параметры.Заполнить(Выборка);    
           Таб.Вывести(ОбластьМакета,1);
           Таб.ЗакончитьГруппуСтрок();
       КонецЦикла;    

хотел сгруппировать строки по покупателям, получаю ерунду
1 Wobland
 
10.04.12
09:06
а где вопрос?
2 Wobland
 
10.04.12
09:07
отвечаю: НачатьАвтогруппировкуСтрок - цикл - ЗакончитьАвтогруппировкуСтрок
3 DarKySiK
 
10.04.12
09:08
Ты в СП пример посмотри чтоли. Там хороший есть на метод "Вывести" табличного документа.
4 butterbean
 
10.04.12
09:10
(0) а где НачатьГруппуСтрок()??
5 panzer
 
10.04.12
09:24
получается самая верхняя группировка включает в себе те которые ниже. и так для каждой
6 butterbean
 
10.04.12
09:28
(5) весь код покажи
7 panzer
 
10.04.12
10:23
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    Сделка.Ссылка КАК Документ,
                  |    Сделка.Покупатель КАК Покупатель,
                  |    Сделка.Менеджер,
                  |    Сделка.Фирма
                  |ИЗ
                  |    Документ.Сделка КАК Сделка
                  |ГДЕ
                  |    Сделка.ДатаОтгрузки >= &НачПериода
                  |    И Сделка.ДатаОтгрузки <= &КонецПериода
                  |    И Сделка.Статус <> &Статус
                  |    И НЕ Сделка.ПометкаУдаления
                  |ИТОГИ ПО
                  |    Покупатель";
   Запрос.УстановитьПараметр("НачПериода", Отчет.Период.ДатаНачала);
   Запрос.УстановитьПараметр("КонецПериода", Отчет.Период.ДатаОкончания);
   Запрос.УстановитьПараметр("Статус", Перечисления.Статусы.Отмена);
               
       РезультатЗапроса = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       
       Таб = Новый ТабличныйДокумент;
       
       Макет = Отчеты.ОтчетПоОтсутствующимСФ_Покупатели.ПолучитьМакет("Макет");
       ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
       ОбластьМакета.Параметры.Заголовок = "Отсутствующие счета-фактуры покупателям по следующим сделкам по отгрузкам за "  + Отчет.Период;    
       ОбластьМакета.Параметры.Организ = Организ;
       таб.Вывести(ОбластьМакета);
       
       Таб.Вывести(Макет.ПолучитьОбласть("Шапка"));
       Таб.ФиксацияСверху=Макет.Области.Шапка.Низ;
       
       ПорядковыйНомер = 1;
       ОбластьМакета = Макет.ПолучитьОбласть("Строка");
       Пока РезультатЗапроса.Следующий() Цикл
                   Таб.НачатьГруппуСтрок();
                   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
                   ОбластьМакета.Параметры.Докум = Докум;
                   ОбластьМакета.Параметры.Номер = ПорядковыйНомер;
                   ПорядковыйНомер = ПорядковыйНомер + 1;
                   ОбластьМакета.Параметры.ДатаОтгрузки = Формат(Докум.ДатаОтгрузки,"ДЛФ=Д");
                   ОбластьМакета.Параметры.Покупатель = Докум.Покупатель;
                   ОбластьМакета.Параметры.ТипРеализации = Докум.ПокупательТипРеализации;
                   ОбластьМакета.Параметры.Поставщик = Докум.Поставщик;
                   ОбластьМакета.Параметры.СчетНаТовар = Докум.ПокупательСчетТовар;
                   ОбластьМакета.Параметры.СчетНАЖД = Докум.ПокупательСчетЖД;
                   ОбластьМакета.Параметры.Менеджер = Докум.Менеджер;
                   ОбластьМакета.Параметры.Товар = Докум.Товар;
                   ОбластьМакета.Параметры.Вес = Докум.Вес;
                   Таб.ЗакончитьГруппуСтрок();
                   Таб.Вывести(ОбластьМакета);            
       КонецЦикла;
8 butterbean
 
10.04.12
10:26
(7) заканчивать группу строк нужно после вывода области
но у тебя тут вообще группировка не нужна т.к. уровень всего 1
9 Ork
 
10.04.12
10:27
(7)
Таб.НачатьГруппуСтрок();
...
Таб.ЗакончитьГруппуСтрок();

Таб.Вывести(ОбластьМакета);

Всмысле начать, тут же закончить и только потом выводить?
10 panzer
 
10.04.12
10:28
это я сюда с ошибкой скопировал.
11 panzer
 
10.04.12
10:28
всмысле группировка не нужна?
12 butterbean
 
10.04.12
10:29
(11) ну у тебя уровень-то всего один
или ты опять не весь код выложил??
13 panzer
 
10.04.12
10:31
ну вот вообщем покупатель должен разворачиваться, что не так?
14 Ork
 
10.04.12
10:33
(11) Что тебе нужно - решай сам. Логически правильно было бы :

ОбластьМакета = Макет.ПолучитьОбласть("Строка");

Таб.НачатьГруппуСтрок();
Пока РезультатЗапроса.Следующий() Цикл
   ...
   Таб.Вывести(ОбластьМакета);            
КонецЦикла;
Таб.ЗакончитьГруппуСтрок();
15 panzer
 
10.04.12
10:35
в таком случае это все не будет одной большой группой?
16 butterbean
 
10.04.12
10:35
(13) ты на код в (7) посмотри - там ОДИН цикл ну и уровень соответственно один
17 Ork
 
10.04.12
10:36
(15) Будет.
18 Serg_1960
 
10.04.12
10:39
Ну ё-маю :(

Ты написал, что "РезультатЗапроса" - обход по группировка (дерево!), а далее написано - "РезультатЗапроса.Следующий()"... Ну и что ты получил в итоге? Детальные записи группы верхнего уровня кто считывать будет?

"Дед Мазай и зайцы" :(

Цикл чтения - вижу. Пусть горбатый - но есть. А где использование того что ты считываешь? Не вижу :(
19 Serg_1960
 
10.04.12
10:42
Имхо: отступ строк со строки "РезультатЗапроса = ..." наводит на мысль что тс "выдрал" кусок алгоритма откуда-то, не понимая смысла его :(