Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:51

Работа с запросом (как вытащить данные из документов)?

Автор Pilot741, 06 апр 2012, 12:12

0 Пользователей и 1 гость просматривают эту тему.

Pilot741

Добрый день!

Нужна ваша помощь, а то сама что-то не могу разобраться.

Есть документ "Путевой лист" см. рис.1

Хочу сделать отчет. формирую запрос:


Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;   

    //Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Док = Документ.ПутевойЛист.ТекущийДокумент;
|Водитель = Документ.ПутевойЛист.Водитель;   
|ТабНомер = Документ.ПутевойЛист.Водитель.Код;   
|МаркаМашины = Документ.ПутевойЛист.МаркаМашины;
|Госномер = Документ.ПутевойЛист.ГосНомер;
|ОбщТоннаж = Документ.ПутевойЛист.ОбщТоннаж; 
|Груз = Документ.ПутевойЛист.Груз;
|ОбщийПробег = Документ.ПутевойЛист.ОбщийПробег;
|РасходГорючегоФакт = Документ.ПутевойЛист.РасходГорючегоФакт;
    |ОбщВремяРаботы= Документ.ПутевойЛист.ОбщВремяРаботы;
|Тоннаж = Документ.ПутевойЛист.Тоннаж;
|ТехПеревозка = Документ.ПутевойЛист.ТехПеревозка;
|Группировка Водитель;
|Группировка МаркаМашины;
    |Группировка Док;
  |Функция ТоннажСумма = Сумма(Тоннаж);
  |Условие(ТехПеревозка = 1);
    |"//}}ЗАПРОС
;   
//Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;   
   
// Подготовка к заполнению выходных форм данными запроса 
Если ПоДокументам = 1 Тогда

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ПоДокументам");
Таб.ВывестиСекцию("Шапка");   
Таб.ПовторятьПриПечатиСтроки(6,7); 
Таб.ПараметрыСтраницы(2, 100,,0,0,20,0, 0, 0);

Состояние("Заполнение выходной таблицы...");

Пока Запрос.Группировка(1)=1 Цикл
  Таб.ВывестиСекцию ("Водитель"); 
Пока Запрос.Группировка(2) = 1 Цикл
    Таб.ВывестиСекцию("МаркаМашины"); 
  Пока Запрос.Группировка (3) = 1 Цикл
  Таб.ВывестиСекцию ("Докум");
Таб.ВывестиСекцию ("Груз");
  КонецЦикла;
КонецЦикла;    
КонецЦикла;
   
Таб.ВывестиСекцию("Итого"); 
Таб.ВывестиСекцию("Подвал"); 
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("ПоДокументам", "");   

Иначе

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ПовторятьПриПечатиСтроки(6,7); 
Таб.ПараметрыСтраницы(2, 100,,0,0,20,0, 0, 0);

// Заполнение полей "Шапка"
Таб.ВывестиСекцию("Шапка");
Состояние("Заполнение выходной таблицы...");

Пока Запрос.Группировка(1)=1 Цикл
  Таб.ВывестиСекцию ("Водитель"); 
Пока Запрос.Группировка(2) = 1 Цикл
    Таб.ВывестиСекцию("МаркаМашины"); 
КонецЦикла;    
КонецЦикла;
   
Таб.ВывестиСекцию("Итого");   
Таб.ВывестиСекцию("Подвал"); 
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");       
КонецЕсли;
КонецПроцедуры   


Отчет работает нормально, но выводит не весь Груз какой есть в документе "Путевой лист".  А нужно вывести по Путевому листу весь груз столбиком.

Herby

Ну примерно так:

В тексте запроса добавить 4-ую группировку Груз.

В печатной форма добавляешь отдельную секцию "Груз", в которой будет выводиться груз

И далее по обходу запроса в четвертом вложенном цикле выводишь данную секцию

  Пока Запрос.Группировка (4) = 1 Цикл
    Таб.ВывестиСекцию("Груз");
  КонецЦикла;



Pilot741

Цитата: Herby от 06 апр 2012, 13:11
Ну примерно так:

В тексте запроса добавить 4-ую группировку Груз.

В печатной форма добавляешь отдельную секцию "Груз", в которой будет выводиться груз

И далее по обходу запроса в четвертом вложенном цикле выводишь данную секцию

  Пока Запрос.Группировка (4) = 1 Цикл
    Таб.ВывестиСекцию("Груз");
  КонецЦикла;


вот я бобик! про группировку совсем не подумала ТТ
спасибо!

Pilot741

хм. данные по грузу стали попадать в отчет, но они группируются.
К примеру (на рисунке) в докуменет несколько раз встречается !клинкер" а в отчет выводится один раз.

//|Группировка Груз без групп;
не помогает

sergejK74

   |Группировка СтрокаДокумента; может быть поможет
Кнопочка Спасибо - слева!

Pilot741

Цитата: sergejK74 от 09 апр 2012, 09:41
   |Группировка СтрокаДокумента; может быть поможет

Помогло. спасибо.

Только какая-то запятая перед значением выводится.

Pilot741

ой, нет. все хорошо. это моя запятая стояла.

СПАСИБО

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск