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

вывод из запроса в табличный документ

Автор tema111, 05 мая 2012, 20:19

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

tema111

привет всем!

   ТабДок = Новый ТабличныйДокумент;
   
   Макет = ПолучитьМакет("Макет");
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ Различные
   |Номен.Родитель.Ссылка как Родитель,
    |Номен.Наименование как Товар,
    |ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход как Количество,
   |Реализация.Автосалон как Автосалон,
   |Реализация.Склад как Склад,
   |Реализация.Сотрудник как Сотрудник,
   |СрезПоследних.Цена  как Цена
|ИЗ
   |РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон) КАК ТоварыНаСкладахОстаткиИОбороты
   |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номен
   |ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Номен.Ссылка,
      
   |Левое Соединение Документ.Реализация как Реализация
   |по ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Реализация.Товары.Товар.Ссылка,
   
   |Левое Соединение РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон) как СрезПоследних
   |по  ТоварыНаСкладахОстаткиИОбороты.Номенклатура = СрезПоследних.Номенклатура   
   
   |где Номен.Родитель в иерархии (&название)  и ЭтоГруппа = ложь
   |Итоги Сумма (ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) По
|Номен.Родитель.Ссылка Иерархия";

Запрос.УстановитьПараметр("ДатаКон", ДатаОкончания);
Запрос.УстановитьПараметр("ДатаНач", ДатаНачала);
Запрос.УстановитьПараметр("Название", ГруппаТоваров);
Выборка  = Запрос.Выполнить().Выбрать();

ОбластьШапкаГруппа = Макет.ПолучитьОбласть("Шапка|ГруппаТоваров");
ОбластьРодительГруппа = Макет.ПолучитьОбласть("Родитель|ГруппаТоваров");
ОбластьСтрокаГруппа = Макет.ПолучитьОбласть("СтрокаДетали|ГруппаТоваров");

ОбластьШапкаНазвание = Макет.ПолучитьОбласть("Шапка|Название");
ОбластьСтрокаНазвание = Макет.ПолучитьОбласть("СтрокаДетали|Название");

ОбластьШапкаКоличество = Макет.ПолучитьОбласть("Шапка|Количество");
ОбластьРодительКоличество = Макет.ПолучитьОбласть("Родитель|Количество");
ОбластьСтрокаКоличество = Макет.ПолучитьОбласть("СтрокаДетали|Количество");
   

Если ЭлементыФормы.Автосалон.Значение = Ложь и ЭлементыФормы.Склад.Значение = Ложь и
    ЭлементыФормы.Сотрудник.Значение = Ложь и ЭлементыФормы.ЦенаТовара.Значение = Ложь Тогда
   
    ТабДок.Вывести(ОбластьШапкаГруппа);
    ТабДок.Присоединить(ОбластьШапкаНазвание);
    ТабДок.Присоединить(ОбластьШапкаКоличество);

   Пока Выборка.Следующий() Цикл

   ОбластьРодительГруппа.Параметры.Группа = Выборка.Родитель;
      
   ТабДок.Вывести(ОбластьРодительГруппа);
        ОбластьСтрокаНазвание.Параметры.Товар = Выборка.Товар;
        ТабДок.присоединить(ОбластьСтрокаНазвание);
      
        ОбластьСтрокаКоличество.Параметры.Количество = Выборка.Количество;
        ТабДок.присоединить(ОбластьСтрокаКоличество);
      
    КонецЦикла;
    КонецЕсли;

   ТабДок.Показать("Отчет по продажам");
КонецПроцедуры




как можно убрать эти лишние группы в запросе? пытался группировать - не получилось

вот макет

DirecTwiX

Выборка  = Запрос.Выполнить().Выбрать();
Заменить на
Выборка  = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

tema111


sergejK74

внутри Выборка  = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
делаешь еще один цикл, уже по детальным записям
ВыборкаДетальныеЗаписи  = Выборка.Выбрать();

Поищи книжку Простые примеры разработки. Там в главе про табличный документ - это самый первый пункт с большим-большим примером
Кнопочка Спасибо - слева!

DirecTwiX

Цитата: tema111 от 05 мая 2012, 20:51
теперь вот так. без товара=(
Так ты ж сам их зачеркнул)
Тогда да, как sergejK сказал)

tema111

Запрос.УстановитьПараметр("ДатаКон", ДатаОкончания);
Запрос.УстановитьПараметр("ДатаНач", ДатаНачала);
Запрос.УстановитьПараметр("Название", ГруппаТоваров);
Выборка  = Запрос.Выполнить();

ОбластьШапкаГруппа = Макет.ПолучитьОбласть("Шапка|ГруппаТоваров");
ОбластьРодительГруппа = Макет.ПолучитьОбласть("Родитель|ГруппаТоваров");
ОбластьСтрокаГруппа = Макет.ПолучитьОбласть("СтрокаДетали|ГруппаТоваров");

ОбластьШапкаНазвание = Макет.ПолучитьОбласть("Шапка|Название");
ОбластьСтрокаНазвание = Макет.ПолучитьОбласть("СтрокаДетали|Название");


ОбластьШапкаКоличество = Макет.ПолучитьОбласть("Шапка|Количество");
ОбластьРодительКоличество = Макет.ПолучитьОбласть("Родитель|Количество");
ОбластьСтрокаКоличество = Макет.ПолучитьОбласть("СтрокаДетали|Количество");
   

Если ЭлементыФормы.Автосалон.Значение = Ложь и ЭлементыФормы.Склад.Значение = Ложь и
    ЭлементыФормы.Сотрудник.Значение = Ложь и ЭлементыФормы.ЦенаТовара.Значение = Ложь Тогда
   
    ТабДок.Вывести(ОбластьШапкаГруппа);

    ТабДок.Присоединить(ОбластьШапкаНазвание);

    ТабДок.Присоединить(ОбластьШапкаКоличество);

  ВыборкаГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  ВыборкаГруппа.Следующий();
  ОбластьРодительГруппа.Параметры.Группа = ВыборкаГруппа.Родитель;
  ТабДок.Вывести(ОбластьРодительГруппа);
 
   ВыборкаДетальныеЗаписи = Выборка.Выбрать();
   
       Пока ВыборкаДетальныеЗаписи.Следующий() Цикл      
   
      ОбластьСтрокаНазвание.Параметры.Товар = ВыборкаДетальныеЗаписи.Товар;
      ТабДок.вывести(ОбластьСтрокаНазвание);

      ОбластьСтрокаКоличество.Параметры.Количество = ВыборкаДетальныеЗаписи.Количество;
      ТабДок.присоединить(ОбластьСтрокаКоличество);

    КонецЦикла;

    КонецЕсли;



теперь только группа АВТОМОБИЛИ.

и может  как-то неправильно присоединяю области? почему товары выводятся не в той колонке?

sergejK74

не в той колонке потому что область с ценой не выводишь.
Кнопочка Спасибо - слева!

tema111

все равно также=(

и почему еще выводит только одну группу?

Dethmontt

 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл


А для группы где ЦИКЛ ???????????
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск