Имя: Пароль:
1C
1С v8
Помогите подправить простенький отчет с колонками
0 ytex
 
01.11.16
13:52
Добрый день.

Есть простенький отчет:

&НаКлиенте
Процедура Сформировать(Команда)
    СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
    
    ТабДок = ЭтотОбъект.ТабДок;
    ТабДок.Очистить();
    Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
    
    ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(ОбластьШапки);
    
    ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СчетНаОплатуПокупателю.Ссылка,
    |    СчетНаОплатуПокупателю.СтатусОплаты
    |ИЗ
    |    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
    |ГДЕ
    |    СчетНаОплатуПокупателю.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И СчетНаОплатуПокупателю.СтатусОплаты <> ЗНАЧЕНИЕ(Перечисление.СтатусОплатыСчетаПокупателю.ПустаяСсылка)";
    
    Запрос.УстановитьПараметр("ДатаНачала", ЭтотОбъект.ПериодОтчета.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ЭтотОбъект.ПериодОтчета.ДатаОкончания);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        СтатусОплаты = ВыборкаДетальныеЗаписи.СтатусОплаты;
        
        Если СтатусОплаты = Перечисления.СтатусОплатыСчетаПокупателю.Оплачен Тогда
            ОбластьСтроки.Параметры.СсылкаОпл =    ВыборкаДетальныеЗаписи.Ссылка;
        ИначеЕсли СтатусОплаты = Перечисления.СтатусОплатыСчетаПокупателю.ОплаченЧастично Тогда
            ОбластьСтроки.Параметры.СсылкаЧастОпл = ВыборкаДетальныеЗаписи.Ссылка;
        ИначеЕсли СтатусОплаты = Перечисления.СтатусОплатыСчетаПокупателю.НеОплачен Тогда
            ОбластьСтроки.Параметры.СсылкаНеОпл = ВыборкаДетальныеЗаписи.Ссылка;
        ИначеЕсли СтатусОплаты = Перечисления.СтатусОплатыСчетаПокупателю.Отменен Тогда
            ОбластьСтроки.Параметры.СсылкаОтм = ВыборкаДетальныеЗаписи.Ссылка;
        КонецЕсли;
        
        ТабДок.Вывести(ОбластьСтроки);
    КонецЦикла;
    
КонецПроцедуры

скрин отчета: http://s8.hostingkartinok.com/uploads/images/2016/11/ba25ca92397bb7af725e2d2bc0ccc23c.png

Подскажите пожалуйста, как решить проблему с задвоением результата и с пустыми строчками в областях колонок?
1 Wirtuozzz
 
01.11.16
13:56
Самый простой способ - сделать отчет на СКД.
2 ytex
 
01.11.16
14:06
(1) СКД пока не вариант. Хотелось бы поправить данный отчет.
3 DrShad
 
01.11.16
14:18
а если область строки получать из макета в цикле по выборке?
4 catena
 
01.11.16
14:30
Очистка незаполненяемых реквизитов избавит от повторений. Но вообще бред.
5 youalex
 
01.11.16
14:33
Как вариант - в запросе ИТОГИ ПО СтатусОплаты
При обходе группировки СтатусОплаты  - создаешь новый табдок, заполняешь его строками, пришпандориваешь к результирующему табдоку (через ВставитьОбласть())

Или делаешь ТЗ. При обходе группировки СтатусОплаты - создаешь колонку, которая будет идентифицировать этот статус, далее заполняешь (новый статус - соответственно с 0-й строки) Потом ТЗ выливаешь в Табдок
6 ytex
 
02.11.16
13:05
(5) спасибо.