Имя: Пароль:
1C
1С v8
Дебиторка с отсрочкой по договорам одним запросом.
0 Dimulka
 
18.10.13
14:27
Учет ведется "по договорам в целом".
Дебиторку получилось сделать всеми нелюбимым запросом в цикле. Как все впихнуть в один запрос ума не приложу (для каждого договора приходится менять начало периода соответствено отсрочке). Реально ли?

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

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

    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        НП=Период-86400*Выборка.Отсрочка;
        КП=Период;
        
        ЗапросДолг=Новый Запрос;
        ЗапросДолг.Текст="ВЫБРАТЬ
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент,
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
        |    СУММА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовРасход) КАК Долг,
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК Отсрочка
        |ИЗ
        |    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(&НП, &КП, , , ДоговорКонтрагента = &Договор) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
        |
        |СГРУППИРОВАТЬ ПО
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента,
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент,
        |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности";
        ЗапросДолг.УстановитьПараметр("НП",НП);
        ЗапросДолг.УстановитьПараметр("КП",КП);
        ЗапросДолг.УстановитьПараметр("Договор",Выборка.Договор);
    КонецЦикла;
1 neckto
 
18.10.13
14:36
Получи сальдо ДЗ в разрезе дат возникновения задолженности, к каждой дате прибавь отсрочку.
2 Dimulka
 
18.10.13
14:48
(1), хитро, но надо поигратся