Имя: Пароль:
1C
 
Получить количество дней между регистраторами в запросе
,
0 kIR
 
12.01.17
16:37
Доброго дня!

Появилась задача в запросе к регистру ВзаиморасчетыСКонтрагентами получить количество дней между двумя документами (для расчета процентов по договору займа). Группировка в СКД по договорам.
Кое что подсмотрел тут v8: Количество дней между документами в запросе

Получилось что-то такое https://gyazo.com/c62686ef0c10a03ceefe76a7d9d527f3, но где ошибка - никак не могу понять
Буду благодарен за помощь или тычек носом в место,где ошибся
Спасибо


ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентами.период, ДЕНЬ) КАК Дата,
    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
ПОМЕСТИТЬ Начала
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(
            ,
            ,
            регистратор,
            ,
            ДоговорКонтрагента.дмВидДоговора = ЗНАЧЕНИЕ(перечисление.дмВидыДоговоров.ЗаймВыданный)
                И Организация.ЮрФизЛицо = ЗНАЧЕНИЕ(перечисление.ЮрФизЛицо.ЮрЛицо)
                И ДоговорКонтрагента.дмСтатус = ЗНАЧЕНИЕ(перечисление.дмСтатусыДоговоров.Подписан)) КАК ВзаиморасчетыСКонтрагентами
;

//////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентами.период, ДЕНЬ) КАК Дата,
    ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
ПОМЕСТИТЬ Концы
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(
            ,
            ,
            регистратор,
            ,
            ДоговорКонтрагента.дмВидДоговора = ЗНАЧЕНИЕ(перечисление.дмВидыДоговоров.ЗаймВыданный)
                И Организация.ЮрФизЛицо = ЗНАЧЕНИЕ(перечисление.ЮрФизЛицо.ЮрЛицо)
                И ДоговорКонтрагента.дмСтатус = ЗНАЧЕНИЕ(перечисление.дмСтатусыДоговоров.Подписан)) КАК ВзаиморасчетыСКонтрагентами
;

//////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Получение,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Погашение,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаЗадолженности,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    Начала.Дата,
    МИНИМУМ(РАЗНОСТЬДАТ(Начала.Дата, Концы.Дата, ДЕНЬ)) КАК Срок
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(
            ,
            ,
            Регистратор,
            ,
            ДоговорКонтрагента.дмВидДоговора = ЗНАЧЕНИЕ(перечисление.дмВидыДоговоров.ЗаймВыданный)
                И Организация.ЮрФизЛицо = ЗНАЧЕНИЕ(перечисление.ЮрФизЛицо.ЮрЛицо)
                И ДоговорКонтрагента.дмСтатус = ЗНАЧЕНИЕ(перечисление.дмСтатусыДоговоров.Подписан)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Начала КАК Начала
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Концы КАК Концы
            ПО Начала.ДоговорКонтрагента = Концы.ДоговорКонтрагента
                И Начала.Дата < Концы.Дата
        ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = Начала.ДоговорКонтрагента

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    Начала.Дата,
    Концы.Дата

УПОРЯДОЧИТЬ ПО
    Период
1 mkalimulin
 
12.01.17
17:21
(0) В оригинале, который ты подсматривал, Начала.Дата входит в группировку, а Концы.Дата не входит. В этом вся соль.
2 kIR
 
12.01.17
17:30
(1) Убирал ее - то же самое
3 mkalimulin
 
12.01.17
17:32
(2) Вообще-то в группировке должны быть датаначала и контрагент и все.
4 Лефмихалыч
 
12.01.17
17:33
РАЗНОСТЬДАТ(Дата1, ДАта2, День)
5 kIR
 
12.01.17
17:42
(3) так у меня и полей выбора больше
6 mkalimulin
 
12.01.17
17:43
Основной вопрос - что нужно получить в итоговой таблице.
Если ссылку на документ начала и количество дней, это просто.
Если ссылку на документ начала и ссылку на документ конца, тогда несколько сложнее.
7 mkalimulin
 
12.01.17
17:44
(5) Вот и не надо тебе этих полей.
8 kIR
 
12.01.17
17:44
(4)после этого придется Концы.Дата добавлять в группировку  и практически результат тот же
9 kIR
 
12.01.17
17:45
(6) ну я картинку кидал - там документы в группировке по договору и нужно получить разницу дней между этими документами, то бишь между выдачей займа и его возвратом для начисления процентов
10 mkalimulin
 
12.01.17
17:46
(6) Еще точнее. Если достаточно ссылки на один из двух документов, тогда просто.
11 kIR
 
12.01.17
17:48
(10) Нет, нужны именно все документы (вернее даже просто даты - когда были движения денег)
дата        выдано  получено   дней
01.01.2017  10000  
10.01.2017           3000       10
12.01.2017           7000       2
12 Nuobu
 
12.01.17
17:51
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОборотыНачало.Период КАК ПериодНачала,
    ВзаиморасчетыСКонтрагентамиОборотыНачало.Регистратор КАК РегистраторНачала,
    МИНИМУМ(ВзаиморасчетыСКонтрагентамиОборотыКонец.Период) КАК ПериодКонец
ПОМЕСТИТЬ ВТНачалаИКонц
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, , Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОборотыНачало
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, , Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОборотыКонец
        ПО ВзаиморасчетыСКонтрагентамиОборотыНачало.Период < ВзаиморасчетыСКонтрагентамиОборотыКонец.Период

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОборотыНачало.Регистратор,
    ВзаиморасчетыСКонтрагентамиОборотыНачало.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТНачалаИКонц.ПериодНачала КАК ПериодНачала,
    ВТНачалаИКонц.РегистраторНачала,
    ВТНачалаИКонц.ПериодКонец КАК ПериодКонец,
    ВзаиморасчетыСКонтрагентамиОборотыКонец.Регистратор КАК РегистраторКонец,
    РАЗНОСТЬДАТ(ВТНачалаИКонц.ПериодНачала, ЕстьNull(ВТНачалаИКонц.ПериодКонец,ВТНачалаИКонц.ПериодНачала), ДЕНЬ) КАК Поле1
ИЗ
    ВТНачалаИКонц КАК ВТНачалаИКонц
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, , Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОборотыКонец
        ПО ЕстьNull(ВТНачалаИКонц.ПериодКонец,ВТНачалаИКонц.ПериодНачала)  = ВзаиморасчетыСКонтрагентамиОборотыКонец.Период

УПОРЯДОЧИТЬ ПО
    ПериодНачала,
    ПериодКонец
13 kIR
 
13.01.17
13:18
(12) что то не получилось приспособить это дело под себя...
14 kIR
 
16.01.17
18:19
первые 2 блока оставил такими же,дальше сделал так,но выводит все сроки  = срокам между первымм 2мя документам по договору

ВЫБРАТЬ
    Начала.Дата КАК нДата,
    Начала.ДоговорКонтрагента,
    РАЗНОСТЬДАТ(Начала.Дата, Концы.Дата, ДЕНЬ) КАК Срок
ПОМЕСТИТЬ Сроки
ИЗ
    Начала КАК Начала
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Концы КАК Концы
        ПО Начала.ДоговорКонтрагента = Концы.ДоговорКонтрагента
            И Начала.Дата < Концы.Дата
;

/////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Получение,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Погашение,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаЗадолженности,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    МИНИМУМ(Сроки.Срок) КАК Срок
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(,,Регистратор,,) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Сроки КАК Сроки
        ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = Сроки.ДоговорКонтрагента

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    Сроки.Срок,
    Сроки.нДата,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток

УПОРЯДОЧИТЬ ПО
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период
15 kIR
 
16.01.17
18:19