|
Получить количество дней между регистраторами в запросе | ☑ | ||
---|---|---|---|---|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |