ВЫБРАТЬ
ПлатежныйКалендарьОбороты.CчетНаОплату КАК CчетНаОплату,
ПлатежныйКалендарьОбороты.СуммаОплатыОборот КАК СуммаОплаты
ПОМЕСТИТЬ ТабОплачено
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, , ) КАК ПлатежныйКалендарьОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.CчетНаОплату КАК CчетНаОплату,
ПлатежныйКалендарьОбороты.Регистратор КАК Регистратор,
СУММА(ПлатежныйКалендарьОбороты1.СуммаОборот) КАК СуммаНарастающимИтогом
ПОМЕСТИТЬ ТабНарастающимИтогом
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты1
ПО ПлатежныйКалендарьОбороты.CчетНаОплату = ПлатежныйКалендарьОбороты1.CчетНаОплату
И ПлатежныйКалендарьОбороты.Регистратор.МоментВремени >= ПлатежныйКалендарьОбороты1.Регистратор.МоментВремени
ГДЕ
ПлатежныйКалендарьОбороты.СуммаОборот <> 0
СГРУППИРОВАТЬ ПО
ПлатежныйКалендарьОбороты.CчетНаОплату,
ПлатежныйКалендарьОбороты.Регистратор
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабНарастающимИтогом.CчетНаОплату КАК CчетНаОплату,
СУММА(1) КАК КоличествоНеОплаченных
ИЗ
ТабНарастающимИтогом КАК ТабНарастающимИтогом
ЛЕВОЕ СОЕДИНЕНИЕ ТабОплачено КАК ТабОплачено
ПО ТабНарастающимИтогом.CчетНаОплату = ТабОплачено.CчетНаОплату
ГДЕ
ТабНарастающимИтогом.СуммаНарастающимИтогом > ТабОплачено.СуммаОплаты
СГРУППИРОВАТЬ ПО
ТабНарастающимИтогом.CчетНаОплату
Показать
Если одним регистратором формируется несколько записей в регистре на разные даты, не взлетит
нарастающий итог не посчитать
можно конечно нарастающий итог считать по периоду, но если две записи на одну секунду то никак
(1) А регистр оборотный я так понимаю?
Был бы остаточный, при оплате можно было бы погашать долги по фифо, как при партионном учете. Тогда в отчете получали бы только остатки
(3) Одним запросом обязательно? Самое простое получить все счета, все оплаты, циклом перебрать, оставить непогашенные, вывести в таблицу значений, и ее отдать скд
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.CчетНаОплату КАК CчетНаОплату,
ПлатежныйКалендарьОбороты.СуммаОплатыОборот КАК СуммаОплаты
ПОМЕСТИТЬ ТабОплачено
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, , ) КАК ПлатежныйКалендарьОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.CчетНаОплату КАК CчетНаОплату,
ПлатежныйКалендарьОбороты.Регистратор КАК Регистратор,
СУММА(ПлатежныйКалендарьОбороты1.СуммаОборот) КАК СуммаНарастающимИтогом
ПОМЕСТИТЬ ТабНарастающимИтогом
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты1
ПО ПлатежныйКалендарьОбороты.CчетНаОплату = ПлатежныйКалендарьОбороты1.CчетНаОплату
И ПлатежныйКалендарьОбороты.Регистратор.МоментВремени >= ПлатежныйКалендарьОбороты1.Регистратор.МоментВремени
ГДЕ
ПлатежныйКалендарьОбороты.СуммаОборот <> 0
СГРУППИРОВАТЬ ПО
ПлатежныйКалендарьОбороты.CчетНаОплату,
ПлатежныйКалендарьОбороты.Регистратор
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабНарастающимИтогом.CчетНаОплату КАК CчетНаОплату,
СУММА(1) КАК КоличествоНеОплаченных
ИЗ
ТабНарастающимИтогом КАК ТабНарастающимИтогом
ЛЕВОЕ СОЕДИНЕНИЕ ТабОплачено КАК ТабОплачено
ПО ТабНарастающимИтогом.CчетНаОплату = ТабОплачено.CчетНаОплату
ГДЕ
ТабНарастающимИтогом.СуммаНарастающимИтогом > ТабОплачено.СуммаОплаты
СГРУППИРОВАТЬ ПО
ТабНарастающимИтогом.CчетНаОплату
Показать
Если одним регистратором формируется несколько записей в регистре на разные даты, не взлетит
нарастающий итог не посчитать
можно конечно нарастающий итог считать по периоду, но если две записи на одну секунду то никак
(20) резюмирую, что это то, что нужно! Чуть поправил по периоду:
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.СчетНаОплату КАК СчетНаОплату,
ПлатежныйКалендарьОбороты.СуммаОплатыОборот КАК СуммаОплаты
ПОМЕСТИТЬ ТабОплачено
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, , ) КАК ПлатежныйКалендарьОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.СчетНаОплату КАК СчетНаОплату,
ПлатежныйКалендарьОбороты.Период КАК Период,
СУММА(ПлатежныйКалендарьОбороты1.СуммаОборот) КАК СуммаНарастающимИтогом
ПОМЕСТИТЬ ТабНарастающимИтогом
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты1
ПО ПлатежныйКалендарьОбороты.СчетНаОплату = ПлатежныйКалендарьОбороты1.СчетНаОплату
И ПлатежныйКалендарьОбороты.Период >= ПлатежныйКалендарьОбороты1.Период
ГДЕ
ПлатежныйКалендарьОбороты.СуммаОборот <> 0
СГРУППИРОВАТЬ ПО
ПлатежныйКалендарьОбороты.СчетНаОплату,
ПлатежныйКалендарьОбороты.Период
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабНарастающимИтогом.СчетНаОплату КАК СчетНаОплату,
СУММА(1) КАК КоличествоНеОплаченных
ИЗ
ТабНарастающимИтогом КАК ТабНарастающимИтогом
ЛЕВОЕ СОЕДИНЕНИЕ ТабОплачено КАК ТабОплачено
ПО ТабНарастающимИтогом.СчетНаОплату = ТабОплачено.СчетНаОплату
ГДЕ
ТабНарастающимИтогом.СуммаНарастающимИтогом > ТабОплачено.СуммаОплаты
СГРУППИРОВАТЬ ПО
ТабНарастающимИтогом.СчетНаОплату
(20) подскажите, возможно вы сталкивались. В чем может быть причина - если в запросе формировать, то количества просроченных платежей формируются как положено. А если в СКД запрос положить, то в отчете выводится везде 1, и не важно что по факту 3-4 просроченных платежа. Выводится всегда 1. :-/
(26)
дейсвительно какая то ерунда с 1-ей
немного переделал:
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.СчетНаОплату КАК СчетНаОплату,
ПлатежныйКалендарьОбороты.СуммаОплатыОборот КАК СуммаОплаты
ПОМЕСТИТЬ ТабОплачено
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, , ) КАК ПлатежныйКалендарьОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлатежныйКалендарьОбороты.СчетНаОплату КАК СчетНаОплату,
ПлатежныйКалендарьОбороты.Период КАК Период,
СУММА(ПлатежныйКалендарьОбороты1.СуммаОборот) КАК СуммаНарастающимИтогом
ПОМЕСТИТЬ ТабНарастающимИтогом
ИЗ
РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПлатежныйКалендарь.Обороты(, &Период, Регистратор, ) КАК ПлатежныйКалендарьОбороты1
ПО ПлатежныйКалендарьОбороты.СчетНаОплату = ПлатежныйКалендарьОбороты1.СчетНаОплату
И ПлатежныйКалендарьОбороты.Период >= ПлатежныйКалендарьОбороты1.Период
ГДЕ
ПлатежныйКалендарьОбороты.СуммаОборот <> 0
СГРУППИРОВАТЬ ПО
ПлатежныйКалендарьОбороты.СчетНаОплату,
ПлатежныйКалендарьОбороты.Период
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабНарастающимИтогом.СчетНаОплату КАК СчетНаОплату,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабНарастающимИтогом.Период) КАК КоличествоНеОплаченных
{ВЫБРАТЬ
СчетНаОплату.*,
КоличествоНеОплаченных}
ИЗ
ТабНарастающимИтогом КАК ТабНарастающимИтогом
ЛЕВОЕ СОЕДИНЕНИЕ ТабОплачено КАК ТабОплачено
ПО ТабНарастающимИтогом.СчетНаОплату = ТабОплачено.СчетНаОплату
ГДЕ
ТабНарастающимИтогом.СуммаНарастающимИтогом > ТабОплачено.СуммаОплаты
СГРУППИРОВАТЬ ПО
ТабНарастающимИтогом.СчетНаОплату
Показать
П.С. если кто то разъяснит почему компоновка не суммирует единицы, буду очень признателен
(4) может не совсем понял, но что мне даст информация, для первого примена о сумме 45000 и сумме оплаты 20000 применительно к количеству платежей? Если бы размер их был фиксированным, то конечно достаточно было бы просто разделить разницу между суммой и суммой оплаты на минимум суммы (размер платежа), но он не фиксирован. Отсюда и возникла сложность.
1)создать с помощью запроса упорядоченный массив с суммами
2)посчитать суммарную оплату
3)срезать с массива самые мелкие(ну или фифо) элементы пока не закончится оплата
4)выдать кол-во оставшихся элементов
5)аналитика будет так себе, может тз стоит улучшить?
(11)1) посчитать сумму суммарного долга
2)взять последние n строк с суммой и упорядочить их по дате от самой последней к начальной
3)через вычисляемые поля скд создать столбец в котором будет считаться сумма долга - сумма
4) посчитать через тот же скд кол-во сток>0 и выдать это пользователю?
(16) да, на словах все понятно и логично. Только с п.3 не совсем понятно как реализовать. Может я немного ввел в заблуждение. Все делается в запросе динамического списка. Там вроде вычисляемых полей нет, поправьте.
(14) Измерение Документ долга есть? Если да и оплата идет по документам, то сделать можно без проблем. А если нет, то я бы даже не пытался делать это запросом.
Если уж очень надо в рамках СКД, то просто бы обработал результат СКД, то есть выгрузил бы в таблицу, программно отработал и обратно загрузил.