|
Отчет по периодам в СКД | ☑ | ||
---|---|---|---|---|
0
Zombi
05.04.16
✎
12:39
|
Пишу отчет в СКД, вот запрос:
ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодНеделя, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки КАК Отсрочка, РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, &КонецПериода, ДЕНЬ) КАК ПросроченоДней, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйНачальныйОстаток, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйКонечныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты( &НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ВЫБОР КОГДА &Договор = НЕОПРЕДЕЛЕНО ИЛИ &Договор = ЗНАЧЕНИЕ(справочник.договорыконтрагентов.пустаяссылка) ТОГДА ИСТИНА ИНАЧЕ ДоговорКонтрагента = &Договор КОНЕЦ И ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(перечисление.ВидыДоговоровКонтрагентов.СПокупателем)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты Вывожу по периодам, например по неделям, поля "ПросроченоДней" и просроченные остатки считаются только в тех периодах, где есть движения. Как сделать так, чтобы во всех периодах считались? |
|||
1
Zombi
05.04.16
✎
13:15
|
ап.
|
|||
2
NoiseRND
05.04.16
✎
13:25
|
Делаешь таблицу дней периода, и к ней связываешь свои взаиморасчеты, по каждому дню периода. Работать будет не шустро...
|
|||
3
TolikoSprosit
05.04.16
✎
13:26
|
Тип дополнения в группировке скд
|
|||
4
Zombi
05.04.16
✎
13:31
|
(3) Ставил дополнение в группировке СКД. То же самое.
|
|||
5
Zombi
05.04.16
✎
13:31
|
(2) Возможно...
|
|||
6
Zombi
05.04.16
✎
13:34
|
(2) Только вот периодичность может быть по дням, неделям, месяцам
|
|||
7
Zombi
06.04.16
✎
09:31
|
Подкиньте пример с соединением с каждой датой в запросе. Таблицу дней в запросе я получил, как на каждый этот день остаток получить?
|
|||
8
hhhh
06.04.16
✎
11:19
|
наверно надо в два этапа, сначала формируешь просто остатки, со всеми дополнениями и пишешь в ВТ. Потом уже когда всё есть, уже делаешь РАЗНОСТЬДАТ, выбираешь просроченные.
|
|||
9
Zombi
06.04.16
✎
11:38
|
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.Организация, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента ПОМЕСТИТЬ вт_Контрагенты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстатки ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1000 * Тысячи.Цифра + 100 * Сотни.Цифра + 10 * Десятки.Цифра + Единицы.Цифра КАК Чиселко ПОМЕСТИТЬ Числа ИЗ Цифры КАК Единицы, Цифры КАК Десятки, Цифры КАК Сотни, Цифры КАК Тысячи ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) КАК Даточка, вт_Контрагенты.Контрагент, вт_Контрагенты.Организация, вт_Контрагенты.ДоговорКонтрагента ПОМЕСТИТЬ вт_Дат ИЗ Числа КАК Числа, вт_Контрагенты КАК вт_Контрагенты ГДЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) <= &КонецПериода И НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Чиселко), ДЕНЬ) >= &НачалоПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Организация, ВложенныйЗапрос.Контрагент, ВложенныйЗапрос.ДоговорКонтрагента, МАКСИМУМ(ВложенныйЗапрос.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток, ВложенныйЗапрос.НачалоПериода ПОМЕСТИТЬ вт_Остатки ИЗ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстатки.Организация КАК Организация, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента, &НачалоПериода КАК НачалоПериода, ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовНачальныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ), ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Организация, ВложенныйЗапрос.Контрагент, ВложенныйЗапрос.ДоговорКонтрагента, ВложенныйЗапрос.НачалоПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки.НачалоПериода, МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ОстаткиНаКонец.НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)), СЕКУНДА, -1)) КАК КонецПериода, Остатки.Организация, Остатки.Контрагент, Остатки.ДоговорКонтрагента, Остатки.СуммаВзаиморасчетовНачальныйОстаток ПОМЕСТИТЬ вт_ОстаткиПериодами ИЗ вт_Остатки КАК Остатки ЛЕВОЕ СОЕДИНЕНИЕ вт_Остатки КАК ОстаткиНаКонец ПО Остатки.НачалоПериода < ОстаткиНаКонец.НачалоПериода СГРУППИРОВАТЬ ПО Остатки.НачалоПериода, Остатки.Организация, Остатки.Контрагент, Остатки.ДоговорКонтрагента, Остатки.СуммаВзаиморасчетовНачальныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт_Дат.Организация, вт_Дат.Контрагент КАК Контрагент, вт_Дат.ДоговорКонтрагента, вт_Дат.Даточка КАК Дата, ЕСТЬNULL(вт_ОстаткиПериодами.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК НачальныйОстаток ИЗ вт_Дат КАК вт_Дат ЛЕВОЕ СОЕДИНЕНИЕ вт_ОстаткиПериодами КАК вт_ОстаткиПериодами ПО (вт_Дат.Даточка МЕЖДУ вт_ОстаткиПериодами.НачалоПериода И вт_ОстаткиПериодами.КонецПериода) И вт_Дат.ДоговорКонтрагента = вт_ОстаткиПериодами.ДоговорКонтрагента И вт_Дат.Контрагент = вт_ОстаткиПериодами.Контрагент И вт_Дат.Организация = вт_ОстаткиПериодами.Организация УПОРЯДОЧИТЬ ПО Контрагент Я вот что нагородил. Только в результате дни все в периоде, только начальный остаток я вижу только в периодах, где движения были. Что не так сделал? |
|||
10
Zombi
06.04.16
✎
12:15
|
Остатки периодами вроде я правильно получил. Косяк в последнем пакете получается?
|
|||
11
Zombi
07.04.16
✎
06:41
|
Тему я победил, сделал обычный запрос:
ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстатки.Организация, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента ПОМЕСТИТЬ вт_Фильтр ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецПериода, ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(перечисление.ВидыДоговоровКонтрагентов.СПокупателем)) КАК ВзаиморасчетыСКонтрагентамиОстатки ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодСекунда, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодНеделя, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодМесяц, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки КАК Отсрочка, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйНачальныйОстаток, ВЫБОР КОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки = 0 ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), ДЕНЬ) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень <= ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.рбсДнейПросрочки) ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ КАК ПросроченныйКонечныйОстаток, РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень, &КонецПериода, ДЕНЬ) КАК ПросроченоДней ИЗ вт_Фильтр КАК вт_Фильтр ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ПО вт_Фильтр.Организация = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация И вт_Фильтр.Контрагент = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент И вт_Фильтр.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента В СКД у начального и конечного остатка указал роль "Остатки" и в отчете стали остатки за каждый период выводиться. Теперь вопрос с полем "ПросроченоДней". Как это поле в СКД заставить выводиться в каждом периоде, а не только там где движения были? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |