Имя: Пароль:
1C
1С v8
Форматированный вывод отчета
,
0 ETurdymuratov
 
21.11.13
13:58
Привет всем, недавно подымал вопрос как в СКД выводить форматированный результат v8: Вывод результата отчета одной строкой.

Теперь появилась необходимость в отчете без использования СКД выводить в таком виде:

Ведомость1|Договор1|      |6000
          |Договор2|      |4400
          |Договор3|      |5600
Ведомость2|Договор4|      |3000
          |Договор5|      |2400
          |Договор6|      |7600

Ведомость3|Договор1|Допик1|3000
          |Договор1|Допик2|2400
          |Договор3|Допик1|7600

Есть код:

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

    Результат = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);

Но он задваивает номера Ведомостей. Как правильно дописать вышеописанный код?

Сейчас выводит вот так:
Ведомость1|Договор1|      |6000
Ведомость1|Договор2|      |4400
Ведомость1|Договор3|      |5600
Ведомость2|Договор4|      |3000
Ведомость2|Договор5|      |2400
Ведомость2|Договор6|      |7600
Ведомость3|Договор1|Допик1|3000
Ведомость3|Договор1|Допик2|2400
Ведомость3|Договор3|Допик1|7600