Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Янв 2018, 08:23
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа с запросом (как вытащить данные из документов)?  (Прочитано 3019 раз)

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

Оффлайн Pilot741

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-09-01
  • Сайт: 
  • Профессия: Программист 7.7
Добрый день!

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

Есть документ "Путевой лист" см. рис.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

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Ну примерно так:

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

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

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

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



Оффлайн Pilot741

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-09-01
  • Сайт: 
  • Профессия: Программист 7.7
Ну примерно так:

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

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

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

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


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

Оффлайн Pilot741

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-09-01
  • Сайт: 
  • Профессия: Программист 7.7
хм. данные по грузу стали попадать в отчет, но они группируются.
К примеру (на рисунке) в докуменет несколько раз встречается !клинкер" а в отчет выводится один раз.

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

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
   |Группировка СтрокаДокумента; может быть поможет
Кнопочка Спасибо - слева!

Оффлайн Pilot741

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-09-01
  • Сайт: 
  • Профессия: Программист 7.7
   |Группировка СтрокаДокумента; может быть поможет

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

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

Оффлайн Pilot741

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-09-01
  • Сайт: 
  • Профессия: Программист 7.7
ой, нет. все хорошо. это моя запятая стояла.

СПАСИБО


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
98 Сообщений
AIFrame
77 Сообщений
alex0402
32 Сообщений
kiksi
24 Сообщений
pavl_vs
23 Сообщений
andron81_81
18 Сообщений
alexandr_ll
17 Сообщений
Norfolk
15 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений
LexaK
12 Сообщений

* Кто онлайн

  • Точка Гостей: 512
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal