В запросе хочу получить выборку по расчетному периоду, есть конечная дата, а начальную дату рассчитывает от конца минус кол-во дней отсрочки платежа.

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВзаиморасчетыОстаткиИОбороты.Договор КАК Договор,
    СУММА(ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
    СУММА(ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток
    ИЗ
    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты( ( ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&КонецПериода,ДЕНЬ,(-1)*ВзаиморасчетыОстаткиИОбороты.Договор.СрокОплаты) КАК НачалоСрок)
    , &КонецПериода, Авто, , {(Контрагент).*, (Договор).*, (Организация).*, (Договор.ВалютаВзаиморасчетов = &Валюта) КАК Поле2}) КАК ВзаиморасчетыОстаткиИОбороты
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыОстаткиИОбороты.Договор
```

ругается на функцию

 Синтаксическая ошибка "ВЫБРАТЬ"
РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты( ( <<?>>ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&КонецПериода,ДЕНЬ,(-1)*ВзаиморасчетыОстаткиИОбороты.Договор.СрокОплаты) как НачалоСрок)
Как можно модернизировать запрос? Спасибо.
---
Вот так вот хочешь? Заморочился только ради колонки "ДнейПросрочено" :)
---
может стоит использовать соотвествующую функция РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)
---
Просто мне нужно из одной даты вычесть определённое количество дней:
есть дата 10.11.2016 - нужно узнать сколько он должен был 20 дней назад и сколько оплатил за эти двадцать дней.
А разность(как понял я) просто вычитает из одной даты другую и выдаёт количество дней(в зависимости от третьего параметра) между ними.
---
Да точно тогда так

```1c
    ЫБРАТЬ РАЗРЕШЕННЫЕ
    ВзаиморасчетыОстаткиИОбороты.Договор КАК Договор,
    СУММА(ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
    СУММА(ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток
    ИЗ
    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(ДОБАВИТЬКДАТЕ(&КонецПериода,ДЕНЬ,(-1)*ВзаиморасчетыОстаткиИОбороты.Договор.СрокОплаты)) КАК НачалоСрок)
```
---
Выдаёт такую же ошибку.
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(387)}: Ошибка при вызове конструктора (КонструкторЗапроса): {(5, 54)}: Неверные параметры "РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты, 0"
ИЗ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(<<?>>ДОБАВИТЬКДАТЕ(&КонецПериода,ДЕНЬ,(-1)*ВзаиморасчетыОстаткиИОбороты.Договор.СрокОплаты)
---
мне кажется, что на момент получения таблицы РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты еще нет ВзаиморасчетыОстаткиИОбороты.Договор.СрокОплаты

Дату начала периода надо вычислить ранее
---
Получить таблицу всех договоров и в ней рассчитать дату разницы? Таблица договоров не маленькая - не будет ли это лишним?
---
Таблица договоров не маленькая - так надо для всех договоров или для одного ?
---
Хотел сделать отчет по типу взаиморасчеты, с раскраской просроченных накладных.
---
так периоды сугубо индивидуальны или нет?
---
Подскажи как Вы предлагаете рассчитать ранее, пожалуйста.
---
Вообще я подумал что такой подход будет не совсем верен с точки зрения правильности получения данных , лучше переделать на СКД через 2 набора данных.
---
Не совсем понятно, содержимое этих двух наборов - из дат и сумм?
---
В первом наборе Договоры из Справочника Договоры и СрокОплаты
В втором наборе Ваш регистр Взаиморасчеты с полями договор ,начальный и конечный остаток так же добавляешь поле &СрокОплаты
В параметрах виртуальной таблицы датаНачала &СрокОплаты

Связываешь два набора по Договору , и по СрокамОплаты , В Связи по строкам оплаты в колонке параметр выбираешь СрокОплаты
---
Да сугубо, группировка по Контрагенту(договору) . Я не могу сделать отбор регистра по расчетному полю...
---
Максимальная отсрочка известна? Если да, то

```1c
    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
    ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК Договор,
    ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК КонОст
    ПОМЕСТИТЬ тОст
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Кондата, ) КАК ВзаиморасчетыСКонтрагентамиОстатки
    ;

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ЕСТЬNULL(тОборот.Контрагент, тОст.Контрагент) КАК Контрагент,
    ЕСТЬNULL(тОборот.Договор, тОст.Договор) КАК Договор,
    ЕСТЬNULL(тОст.КонОст, 0) - ЕСТЬNULL(тОборот.Оборот, 0) КАК НачОст,
    ЕСТЬNULL(тОст.КонОст, 0) КАК КонОст,
    ЕСТЬNULL(тОборот.Оборот, 0) КАК Оборот
    ИЗ
    тОст КАК тОст
    ПОЛНОЕ СОЕДИНЕНИЕ тОборот КАК тОборот
    ПО тОст.Контрагент = тОборот.Контрагент
    И тОст.Договор = тОборот.Договор
```
---
Или как в (16), или сгруппировать договора по сроку оплаты (вряд ли у вас там много вариантов - скорее всего 30, 60, 90 дней) и делать отдельный запрос по каждому варианту.
---
Помогите люди добрые - не могу додумать запрос.

Хочу выводить отчет по накладным и рядом колоночку дата оплаты(из договора) с ней нет проблем, а рядом колоночка Оплачено или частично оплачено или сколько осталось оплатить и дни просрочки. Как можно такое замутить?
---
Вот так вот хочешь? Заморочился только ради колонки "ДнейПросрочено" :)