|
Расчет остатков в СКД - как сделать правильно? | ☑ | ||
---|---|---|---|---|
0
xaozai
28.11.13
✎
14:22
|
Запрос:
ВЫБРАТЬ
Настройки: http://s019.radikal.ru/i636/1311/a1/7f2b6701c5a4.png Результат: http://s020.radikal.ru/i713/1311/99/a9271c1a29e3.png Запрос 2: ВЫБРАТЬ
Настройки такие же. Результат: http://i031.radikal.ru/1311/00/80d25114350a.png Вопрос: как сделать, чтобы во втором случае остатки вывелись правильно? |
|||
1
xaozai
28.11.13
✎
14:39
|
up
|
|||
2
xaozai
28.11.13
✎
15:07
|
В реальности запрос примерно такой:
ВЫБРАТЬ
Т.е., в отчете собираются данные из регистра и некоторых документов, которые не пишут в этот регистр. |
|||
3
Veliar_s
28.11.13
✎
15:08
|
А в ресурсах прописать не пробовал.
|
|||
4
xaozai
28.11.13
✎
15:09
|
В ресурсах есть все суммы: приход, расход, остатки...
|
|||
5
Veliar_s
28.11.13
✎
15:16
|
Суммы есть а "Расчитывать по.." - "Общий итог" везде стоит?
|
|||
6
xaozai
28.11.13
✎
15:20
|
(5) "Рассчитывать по" вообще нигде не стоит. По-умолчанию оно должно для всего рассчитывать.
Попробовал поставить только что все галочки для всех сумм - тот же результат. Остаток по группировке "Договор контрагента" и итоговый не считаются. |
|||
7
grayshadow
28.11.13
✎
15:24
|
СКД, ОстаткиИОбороты и Объединить - хреново совместимы, лучше левым соединением попробовать
по месяцу должно быть легко |
|||
8
xaozai
28.11.13
✎
15:32
|
(7) Левое соединение к чему? Очевидно, что во второй таблице есть период, которого нет в первой и следовательно при левом соединении данные, которых нет в первой таблице не попадут вообще.
Всё, сделал. Во втором подзапросе вместо выбора нулей выбрал значения из дописанного левого соединения с тем же регистром по договору и периоду. ВЫБРАТЬ
|
|||
9
xaozai
28.11.13
✎
15:35
|
(8) Хотя, не, не прокатило - та же фигня.
|
|||
10
grayshadow
28.11.13
✎
15:42
|
я прально поняла, что из 2й таблицы надо только сумма?
|
|||
11
xaozai
28.11.13
✎
16:21
|
(10) Да, из второй таблицы только сумма берется.
В общем, сделал так: Получил остатки на каждый, так, как описано здесь: http://kb.mista.ru/article.php?id=579& Только там берется на каждый день, я сделал на начало каждого месяца. Объединил со второй таблицей, и еще одно объединение с оборотами, т.к., метод получения остатков на каждый день не позволяет сразу получить и обороты. |
|||
12
grayshadow
28.11.13
✎
16:27
|
нафига по дням, если периодичность РН - месяц?
ВЫБРАТЬ всё из РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Месяц,) левое соединение (выбрать все доки МойДокумент, сгруппировать по договору и началу месяца) как ВложенныйЗапрос ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = ВложенныйЗапрос.ДоговорКонтрагента И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период = ВложенныйЗапрос.Период |
|||
13
xaozai
28.11.13
✎
16:45
|
(12) см. (11) (я сделал остатки на начало каждого мес.) и (7)
В твоём запросе не будет декабрьских данных, т.к., в регистре нет оборотов за декабрь. |
|||
14
grayshadow
28.11.13
✎
16:51
|
тогда сделать таблицу "начал месяцев" из календаря и к ней левым соединением присобачить остальные
|
|||
15
grayshadow
28.11.13
✎
17:03
|
или совсем красиво - НачалаМесяцевИзРН объединить НачалМесяцевИзДокументов и к ней присобачить
|
|||
16
xaozai
28.11.13
✎
17:09
|
(15) Предлагаю попробовать. В первых сообщениях запросы простые и легко подифицируются под конкретную базу.
|
|||
17
xaozai
28.11.13
✎
17:23
|
P.S.: Сам офигеваю от того, каким в результате запрос получился )
|
|||
18
grayshadow
28.11.13
✎
18:41
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период ПОМЕСТИТЬ ВТДаты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Месяц, Движения, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ОБЪЕДИНИТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, МЕСЯЦ) ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, МЕСЯЦ) КАК РТУДата, РеализацияТоваровУслуг.ДоговорКонтрагента, СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК СуммаДокумента ПОМЕСТИТЬ ВТДоки ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, МЕСЯЦ), РеализацияТоваровУслуг.ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТДаты.Период КАК Период, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, ВТДоки.СуммаДокумента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец ИЗ ВТДаты КАК ВТДаты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Месяц, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДоки КАК ВТДоки ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период = ВТДоки.РТУДата И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента = ВТДоки.ДоговорКонтрагента ПО ВТДаты.Период = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период УПОРЯДОЧИТЬ ПО ДоговорКонтрагентаВладелец, ДоговорКонтрагента, Период |
|||
19
grayshadow
28.11.13
✎
18:42
|
потрачено не час, а 10 минут:)
|
|||
20
xaozai
29.11.13
✎
10:17
|
(18) И что даст внутреннее соединение регистра с документами по периоду, когда в регистре нет такого периода, как в документах?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |