|
СКД, два набора, передача параметра | ☑ | ||
---|---|---|---|---|
0
samozvanec
27.09.13
✎
12:24
|
последний подзапрос набора 1 выглядит так:
ВЫБРАТЬ ВТ_ДоГруппировки.Период КАК Период, ВТ_ДоГруппировки.Регистратор, ВТ_ДоГруппировки.Контрагент, ВТ_ДоГруппировки.ДоговорКонтрагента, СУММА(ВТ_ДоГруппировки.ДолгНаНачало) КАК ДолгНаНачало, СУММА(ВТ_ДоГруппировки.ПереданоНаНачало) КАК ПереданоНаНачало, СУММА(ВТ_ДоГруппировки.ПереданоНаРеализацию) КАК ПереданоНаРеализацию, СУММА(ВТ_ДоГруппировки.Реализовано) КАК Реализовано, СУММА(ВТ_ДоГруппировки.Оплачено) КАК Оплачено, СУММА(ВТ_ДоГруппировки.СуммаВознаграждения) КАК СуммаВознаграждения, СУММА(ВТ_ДоГруппировки.ДолгНаКонец) КАК ДолгНаКонец, СУММА(ВТ_ДоГруппировки.ПереданоНаКонец) КАК ПереданоНаКонец, ЕСТЬNULL(ВТ_СрокиПоДоговорам.Срок, ДАТАВРЕМЯ(1, 1, 2)) КАК Срок ИЗ ВТ_ДоГруппировки КАК ВТ_ДоГруппировки ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СрокиПоДоговорам КАК ВТ_СрокиПоДоговорам ПО ВТ_ДоГруппировки.ДоговорКонтрагента = ВТ_СрокиПоДоговорам.Договор СГРУППИРОВАТЬ ПО ВТ_ДоГруппировки.Регистратор, ВТ_ДоГруппировки.ДоговорКонтрагента, ВТ_ДоГруппировки.Контрагент, ВТ_ДоГруппировки.Период, ЕСТЬNULL(ВТ_СрокиПоДоговорам.Срок, ДАТАВРЕМЯ(1, 1, 2)) запрос набора 2(в который передается параметр): ВЫБРАТЬ &Срок КАК Срок, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента, СУММА(ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток) КАК ОстНаНачСрок, СУММА(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход, 0)) КАК СуммаПлатежаВДеньОплаты, СУММА(ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток - ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход, 0) <= 0 ТОГДА 0 ИНАЧЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток - ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход, 0) КОНЕЦ) КАК Просрочено, ВзаиморасчетыСКонтрагентамиОбороты.Регистратор КАК РегистраторОплаты, ВзаиморасчетыСКонтрагентамиОбороты.Период КАК ПериодОплаты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Срок, Контрагент В ИЕРАРХИИ (&Франчайзи)) КАК ВзаиморасчетыСКонтрагентамиОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Срок, КОНЕЦПЕРИОДА(&Срок, ДЕНЬ), Регистратор, Контрагент В ИЕРАРХИИ (&Франчайзи)) КАК ВзаиморасчетыСКонтрагентамиОбороты ПО ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентамиОбороты.Контрагент И ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента СГРУППИРОВАТЬ ПО ВзаиморасчетыСКонтрагентамиОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОбороты.Период суть отчета - показать просрочку относительно установленных дней оплаты, в данном конкретном случае - это вторник и пятница. вторник подхватывает верно(24.09), и остаток на начало вторника тоже подхватывает верно, но кроме того подхватывает и платежку от 25го. в консоли запросов результат верный, в консоли отчетов - нет. подскажите, почему? связь наборов: http://s016.radikal.ru/i337/1309/ea/6463f65ec333.png результат в консоли запросов: http://s018.radikal.ru/i527/1309/5b/d107a332783c.png результат в консоли отчетов: http://s019.radikal.ru/i600/1309/4b/0a0fbec58a0d.png |
|||
1
samozvanec
27.09.13
✎
12:36
|
конкретно непонятно, почему при значении параметра Срок начало дня 24.09 из таблицы
....РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Срок, КОНЕЦПЕРИОДА(&Срок, ДЕНЬ).... попадает запись с периодом 25.09 |
|||
2
samozvanec
27.09.13
✎
12:46
|
значение Срока пробовал выводить отдельно из обоих наборов. берется верно и всегда совпадает
|
|||
3
samozvanec
30.09.13
✎
09:56
|
всем доброе утро! вопрос актуален, апаю. надеюсь, понедельник пятницы мудренее
|
|||
4
Rovan
гуру
30.09.13
✎
11:57
|
сделай так
... ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОбороты.Период ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Срок, КОНЕЦПЕРИОДА(&Срок, ДЕНЬ), Регистратор, Контрагент В ИЕРАРХИИ (&Франчайзи)) КАК ВзаиморасчетыСКонтрагентамиОбороты ) КАК ВзаиморасчетыСКонтрагентамиОбороты ПО ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентамиОбороты.Контрагент И ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента |
|||
5
samozvanec
30.09.13
✎
15:08
|
так сделать не получится, потому что срок для каждого договора свой и рассчитывается в первом наборе. сделал по-другому, надеюсь мое наблюдение будет полезно для последователей.
1. во втором наборе вместо "Контрагент В ИЕРАРХИИ (&Франчайзи)" в обоих таблицах Договор = &Договор. и на закладке связи его передаю. но это не суть, суть в другом. так просто логически верно. 2. в виртуальных таблицах оборотов СКД автоматом создает параметры НачалоПериода и КонецПериода. Несмотря на то, что я явно указал параметр Срок. таблица оборотов брала значения именно этих параметров. на закладке Компоновка данных установил в параметрах таблиц свой Срок аналогично первой закладке в конструкторе запросов. после этого заработало. важный момент: не пойму почему, но если на первой закладке конструктора параметры виртуальных таблиц не выставлять, они не подставляются совсем. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |