8.х Дублируются строки в отчете

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

  1. TopicStarter Overlay
    maritime
    Offline

    maritime

    Регистрация:
    22 апр 2011
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    почему дублируются строки в отчете не могу понять ?

    Код:
    	
    Процедура КнопкаСформироватьНажатие(Кнопка)  Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	Хозрасчетный.Ссылка
    |ИЗ
    |	ПланСчетов.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |	Хозрасчетный.Ссылка В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновныеСредства))";
    
    Счета01 = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    
    Состояние("Результирующий запрос.");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Счета01",Счета01);
    Запрос.УстановитьПараметр("Период", Период);
    Запрос.УстановитьПараметр("Период",Новый Граница (КонецДня(Период),ВидГраницы.Включая));
    Запрос.Текст = "ВЫБРАТЬ
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ВЗалоге,
    |    Софт_ОсновныеСредстваВЗалогеСрезПоследних.ОсновноеСредство.Код КАК ИнвНомер,
    |    Софт_ОсновныеСредстваВЗалогеСрезПоследних.Контрагент 
    //|    Софт_ОсновныеСредстваВЗалогеСрезПоследних.Договор КАК ДоговорКредита,
    //|    Софт_ОсновныеСредстваВЗалогеСрезПоследних.ДоговорЗалога,
    //|    Софт_ОсновныеСредстваВЗалогеСрезПоследних.Период КАК ДатаЗалога
    |   
    |ПОМЕСТИТЬ ОСВЗалоге
    |
    |ИЗ
    |	РегистрСведений.Софт_ОсновныеСредстваВЗалоге.СрезПоследних(&Период, ) КАК Софт_ОсновныеСредстваВЗалогеСрезПоследних
    |ГДЕ
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ВЗалоге = ИСТИНА
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	ОсновноеСредство
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	Софт_СвязанныеОсновныеСредстваСрезПоследних.СвязанныеОсновныеСредства,
    |    Софт_СвязанныеОсновныеСредстваСрезПоследних.ОсновноеСредство.Код КАК ИнвНомерБезПрефикса,
    |    Софт_СвязанныеОсновныеСредстваСрезПоследних.СвязанныеОсновныеСредства.Код 
    |   
    |ПОМЕСТИТЬ СвязанныеОС
    |
    |ИЗ
    |	РегистрСведений.Софт_СвязанныеОсновныеСредства.СрезПоследних(&Период, ) КАК Софт_СвязанныеОсновныеСредстваСрезПоследних
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	СвязанныеОсновныеСредства
    |;
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	ХозрасчетныйОстатки.Субконто1 КАК ОсновноеСредство,
    |	ХозрасчетныйОстатки.Субконто1.Код КАК ИнвНомер,
    |	СУММА(ВЫБОР
    |			КОГДА ХозрасчетныйОстатки.Счет В (&Счета01)
    |				ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт
    |			ИНАЧЕ 0
    |		КОНЕЦ) КАК БалансоваяСтоимость,
    |	СУММА(ВЫБОР
    |			КОГДА (НЕ ХозрасчетныйОстатки.Счет В (&Счета01))
    |				ТОГДА ХозрасчетныйОстатки.СуммаОстатокКт
    |			ИНАЧЕ 0
    |		КОНЕЦ) КАК СуммаИзноса
    |
    |ПОМЕСТИТЬ Стоимости
    |
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Остатки(
    |			&Период,
    |			Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновныеСредства), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.АмортизацияОсновныхСредств)),
    |			,
    |			Субконто1 В
    |				(ВЫБРАТЬ
    |					ОСВЗалоге.ОсновноеСредство.Ссылка 
    |				ИЗ
    |					ОСВЗалоге КАК ОСВЗалоге)) КАК ХозрасчетныйОстатки  
    |
    |СГРУППИРОВАТЬ ПО
    |	ХозрасчетныйОстатки.Субконто1
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	ОсновноеСредство
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	Стоимости.ОсновноеСредство,
    |    Стоимости.ОсновноеСредство.Код КАК ИнвНомер,
    |	Стоимости.БалансоваяСтоимость КАК БалансоваяСтоимость,
    |	Стоимости.СуммаИзноса КАК СуммаИзноса,
    |	Стоимости.БалансоваяСтоимость - Стоимости.СуммаИзноса КАК ОстаточнаяСтоимость,
    |    ОСВЗалоге.Контрагент,
    //|    ОСВЗалоге.ДоговорКредита,
    //|    ОСВЗалоге.ДоговорЗалога,
    //|    ОСВЗалоге.ДатаЗалога,
    |    ОСВЗалоге.ВЗалоге,
    |    СвязанныеОС.ИнвНомерБезПрефикса
    |ИЗ
    |	Стоимости КАК Стоимости
    |         ЛЕВОЕ СОЕДИНЕНИЕ ОСВЗалоге КАК ОСВЗалоге
    |			ПО Стоимости.ОсновноеСредство = ОСВЗалоге.ОсновноеСредство 
    |        ЛЕВОЕ СОЕДИНЕНИЕ СвязанныеОС КАК СвязанныеОС
    |            ПО Стоимости.ОсновноеСредство = СвязанныеОС.СвязанныеОсновныеСредства
    |
    |УПОРЯДОЧИТЬ ПО
    |    Контрагент,
    |	ИнвНомер
    |ИТОГИ
    |	СУММА(БалансоваяСтоимость),
    |	СУММА(СуммаИзноса),
    |	СУММА(ОстаточнаяСтоимость)
    |   ПО
    |	ОСВЗалоге.Контрагент,
    |    ОБЩИЕ";
    ТаблДокумент = Новый ТабличныйДокумент;
    ТаблДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Софт_ОСВЗалоге";
    
    
    МакетШапка = ПолучитьМакет("ОСВЗалоге");
    ОбластьШапка = МакетШапка.ПолучитьОбласть("Шапка");                                                                     
    ОбластьШапка.Параметры.НаименованиеОтчета = "Основные средства в залоге по состоянию на "+Формат(Период, "ДФ=дд.ММ.гггг");
    ТаблДокумент.Вывести(ОбластьШапка);
    
    НомерСтраницы   = 1;	
    
    ОбластьИтог = МакетШапка.ПолучитьОбласть("Итог");
    ОбластьСтрока = МакетШапка.ПолучитьОбласть("Строка");	
    ОбластьСтрокаГруппа=МакетШапка.ПолучитьОбласть("СтрокаГруппа");
    
    ЗаголовокТаблицы = МакетШапка.ПолучитьОбласть("Заголовок");	
    ЗаголовокТаблицы.Параметры.Страница = "Страница № "+СокрЛП(НомерСтраницы);
    ТаблДокумент.Вывести(ЗаголовокТаблицы);
    
    ТаблДокумент.НачатьАвтогруппировкуСтрок();
    
    // Создаем массив для проверки вывода
    МассивВыводимыхОбластей = Новый Массив;	
    
    ВыборкаИтог = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ЗапросВЗалоге = Новый Запрос;
    ЗапросВЗалоге.УстановитьПараметр("Период",Новый Граница (КонецДня(Период),ВидГраницы.Включая));
    
    
    ЗапросВЗалоге.Текст = "ВЫБРАТЬ
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ОсновноеСредство,
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.Контрагент,
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.Договор,
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ДоговорЗалога
    |ИЗ
    |	РегистрСведений.Софт_ОсновныеСредстваВЗалоге.СрезПоследних(&Период, ) КАК Софт_ОсновныеСредстваВЗалогеСрезПоследних
    |ГДЕ
    |	Софт_ОсновныеСредстваВЗалогеСрезПоследних.ВЗалоге = ИСТИНА";
    РезультатВЗалоге = ЗапросВЗалоге.Выполнить().Выгрузить();
    
    Пока ВыборкаИтог.Следующий() Цикл
    
    ВыборкаПоГруппам = ВыборкаИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаПоГруппам.Следующий() Цикл
    
    МассивВыводимыхОбластей.Очистить();
    ВыборкаДетальныеЗаписи = ВыборкаПоГруппам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Повтор = " ";
    
    Если ВыборкаДетальныеЗаписи.ИнвНомер <> Повтор Тогда
    Повтор = ВыборкаДетальныеЗаписи.ИнвНомер;
    
    ОбластьСтрокаГруппа.Параметры.Заполнить(ВыборкаИтог);
    ТаблДокумент.Вывести(ОбластьСтрокаГруппа,ВыборкаИтог.Уровень());
    
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    МассивВыводимыхОбластей.Очистить();
    МассивВыводимыхОбластей.Добавить(ОбластьСтрока);
    
    // Вывод договоров в одну строчку
    ТекстДоговорКредита = " ";
    ТекстДоговорЗалога = " ";
    
    СтруктураПоиска = Новый Структура("ОсновноеСредство",ВыборкаДетальныеЗаписи.ОсновноеСредство);
    НайденныеСтроки = РезультатВЗалоге.НайтиСтроки(СтруктураПоиска);
    Для I = 0 По НайденныеСтроки.Количество() - 1 Цикл
    ТекСтрока = НайденныеСтроки[I];
    Если    ТекСтрока.Контрагент =ВыборкаДетальныеЗаписи.Контрагент Тогда
    ТекстДоговорКредита = ТекстДоговорКредита + " " + СокрЛП(ТекСтрока.Договор)+";";
    ТекстДоговорЗалога = ТекстДоговорЗалога + " " + СокрЛП(ТекСтрока.ДоговорЗалога)+";";
    КонецЕсли;
    КонецЦикла;
    ОбластьСтрока.Параметры.ДоговорКредита = ТекстДоговорКредита;
    ОбластьСтрока.Параметры.ДоговорЗалога = ТекстДоговорЗалога;
    
    // КОНЕЦ  Вывод договоров в одну строчку 
    
    Если НЕ ТаблДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
    
    НомерСтраницы = НомерСтраницы + 1;
    
    ЗаголовокТаблицы.Параметры.Страница = "Страница № "+СокрЛП(НомерСтраницы);				
    
    ТаблДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    ТаблДокумент.Вывести(ЗаголовокТаблицы,ВыборкаДетальныеЗаписи.Уровень());
    
    КонецЕсли;												  
    
    ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ОбластьСтрока.Параметры.ИнвНомер = СокрЛП(ОбластьСтрока.Параметры.ИнвНомер);
    ТаблДокумент.Вывести(ОбластьСтрока, ВыборкаДетальныеЗаписи.Уровень());
    
    КонецЦикла;	
    //		ОбластьИтог.Параметры.Заполнить(ВыборкаИтог);
    //ТаблДокумент.Вывести(ОбластьИтог);
    КонецЕсли;
    
    КонецЦикла;
    
    КонецЦикла;
    
    ТаблДокумент.ЗакончитьАвтогруппировкуСтрок();
    
    КоличествоЭкземпляров = 1; 
    НаПринтер = Ложь;
    УниверсальныеМеханизмы.НапечататьДокумент(ТаблДокумент, КоличествоЭкземпляров, НаПринтер, "Основные средства в залоге по состоянию на "+Формат(Период, "ДФ=дд.ММ.гггг"));
    
    КонецПроцедуры
    
    
    [warn="Внимание!"]
    Не забываем пользоваться тегами
    [/warn]

    Вложения:

Похожие темы
  1. Signalman
    Ответов:
    1
    Просмотров:
    535
  2. kopteich
    Ответов:
    4
    Просмотров:
    1.095
  3. Gulnaz
    Ответов:
    8
    Просмотров:
    2.083
  4. KatrineKA
    Ответов:
    0
    Просмотров:
    370
  5. MyNameNoName
    Ответов:
    14
    Просмотров:
    805
Загрузка...

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