8.х Арифметические опперации с результатами запроса для отчета

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

  1. TopicStarter Overlay
    Diakon
    Offline

    Diakon

    Регистрация:
    11 апр 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Такое дело, мне надо написать отчет, который будет выводить долг контрагента по разным договорам (у одного контрагента несколько договоров). Данные хранятся в регистре ВзаиморасчетыСКонтрагентамиОстаткиИОбороты. У меня отчет выводит данные в разрезе договоров. Иными словами сейчас все выглядит так:
    Контрагент Договор Долг
    Фирма Астр Основной договор 100
    Фирма Астр Розничный договор 50

    Бухгалтенра хотят что бы выводился сумарный долг по каждому контрагенту, т.е. :
    Контрагент Долг
    Фирма Астр 150

    Вот у меня и возникает вопрос, как складывать значения...
    Текст процедуры:


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

    Долг хранится в Стр.Долг


    Заранее спасибо всем кто поможет!
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Перемудрили вы что-то. Достаточно было Итоги по контрагенту сделать.

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