8.х Как организовать вывод результатов запроса по группировкам?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Yury, 4 май 2012.

  1. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте,

    В 1С 7.7 результат запроса можно вывести по группировкам, например:
    Код:
     Пока Запрос.Группировка(1) = 1 Цикл
    //
    Пока Запрос.Группировка(2) = 1 Цикл
    //  
    КонецЦикла;
    КонецЦикла;
    
    Как подобный вывод организовать в 8.х???
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    вот код, который генерит "конструктор выходных форм":

    Код:
    Процедура ДействияФормыОтчетСформировать(Кнопка)
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Отчет)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    Отчет(ТабДок);
    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА
    КонецПроцедуры
    Процедура Отчет(ТабДок) Экспорт
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Макет = ВнешняяОбработкаОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    | ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.Номенклатура),
    | ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
    | ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.ТипЦен),
    | ЦеныНоменклатурыСрезПоследних.Цена
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    |ИТОГИ ПО
    | Номенклатура,
    | ТипЦен";
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
    ОбластьТипЦен = Макет.ПолучитьОбласть("ТипЦен");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаНоменклатура.Следующий() Цикл
    ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
    ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень());
    ВыборкаТипЦен = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаТипЦен.Следующий() Цикл
    ОбластьТипЦен.Параметры.Заполнить(ВыборкаТипЦен);
    ТабДок.Вывести(ОбластьТипЦен, ВыборкаТипЦен.Уровень());
    ВыборкаДетали = ВыборкаТипЦен.Выбрать();
    Пока ВыборкаДетали.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
    КонецПроцедуры
    
  3. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    А если не нужны итоги, вот такой запрос, например:
    Код:
    ВЫБРАТЬ
    ХозрасчетныйОбороты.Счет.Ссылка КАК СчетСсылка,
    ХозрасчетныйОбороты.Субконто1.Ссылка КАК Субконто1Ссылка,
    ХозрасчетныйОбороты.Субконто2.Ссылка КАК Субконто2Ссылка,
    СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты (&ДатаНач, &ДатаКон) КАК ХозрасчетныйОбороты
    
    ГДЕ
    ХозрасчетныйОбороты.Счет.Ссылка В (&СписокСчетов) И
    ХозрасчетныйОбороты.Субконто1.Ссылка = &Контрагент
    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Субконто1.Ссылка,
    ХозрасчетныйОбороты.Субконто2.Ссылка,
    ХозрасчетныйОбороты.Счет.Ссылка
    УПОРЯДОЧИТЬ ПО
    СчетСсылка,
    Субконто1Ссылка,
    Субконто2Ссылка,
    СуммаОборотДт
    
    Нужно, чтоб в отчете было
    =================================
    ЗначениеСубконто1
    ЗначениеСубконто2
    ЗначениеСубконто2
    ЗначениеСубконто2
    ЗначениеСубконто1
    ЗначениеСубконто2
    ЗначениеСубконто2

    =======================================

    Вот в таком виде.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Группировку убирите.
  5. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    пихаете этот запрос к "конструктор выходных форм" и смотрите какой получится код.
  6. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Группировка нужна. Сумму считаю по субконто2

Поделиться этой страницей