Просроченная задолженность

1. Cvetic 307 08.07.20 13:51 Сейчас в теме
Задача: Получить просроченную задолженность. Запрос не видит оплат, т.е. если прошла оплата то сумма все равно получается та, что была без оплаты. Как сделать правильно? Конфа самописная. Контрагент , Счет - измерения. ДатаПлатежа - реквизит.

Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВзаиморасчетыСПокупателями.Контрагент КАК Контрагент,
	|	ВзаиморасчетыСПокупателями.Счет КАК Счет,
	|	ВзаиморасчетыСПокупателями.Сумма КАК Сумма,
	|	ВзаиморасчетыСПокупателями.ДатаПлатежа КАК ДатаПлатежа
	|ИЗ
	|	РегистрНакопления.ВзаиморасчетыСПокупателями КАК ВзаиморасчетыСПокупателями
	|ГДЕ
	|	ВзаиморасчетыСПокупателями.ДатаПлатежа <> &ПустаяДата
	|   И ВзаиморасчетыСПокупателями.ДатаПлатежа < &Дата";
	
	Запрос.УстановитьПараметр("Дата", НачалоДня(Дата));
	Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));
	Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
	
	РезультатЗапроса = Запрос.Выполнить();
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. nomad_irk 76 08.07.20 16:28 Сейчас в теме
(1)Для того, чтобы была возможность вести учет просроченной задолженности, необходимо вести учет по документам расчетов.
Нужны остатки в разрезе этих самых документов расчетов.
8. Cvetic 307 08.07.20 16:44 Сейчас в теме
(6) Документ расчета - это Счет.

(7) Т.е. одним запросом это сделать не получиться? Зачем тогда нужен реквизит ДатаПлатежа, если его вытащить нельзя. В типовой УТ он тоже есть. Только там запрос очень сложный не разберусь никак.
9. AndKovalchuk 195 08.07.20 16:52 Сейчас в теме
(8)Ну да. Можно создать сначала виртуальную таблицу или вложенный запрос. А потом все уместить в один запрос.
10. nomad_irk 76 08.07.20 16:53 Сейчас в теме
(8)Можно или нет одним запросом - зависит от того, заполняется ли поле ДатаПлатежа и если заполняется, то соответствует ли значение дате документа, двигающего деньги.

Если заполняется и соответствует, то, ИМХО, условие в запросе должно быть

|ГДЕ
| ВзаиморасчетыСПокупателями.ДатаПлатежа >= ВзаиморасчетыСПокупателями.Счет.Дата"

а на &Дата вы должны получать остатки, чтобы оценить количество дней задолженности, но исходя из структуры регистра - одним запросом вообще не получиться, т.к. остатки и ОстаткиИОбороты не будут содержать ДатаПлатежа, раквизит доступен только в реальной таблице регистра.
2. AndKovalchuk 195 08.07.20 14:19 Сейчас в теме
Ну так это регистр накопления. Используйте виртуальную таблицу остатков, а не выбирайте движения по регистру.
3. Cvetic 307 08.07.20 14:20 Сейчас в теме
(2) В таблице остатков нет реквизита ДатаПлатежа
4. AndKovalchuk 195 08.07.20 14:25 Сейчас в теме
Ну тогда еще и виртуальную таблицу оборотов с группировкой по полю Регистратор.
alex-l19041; +1 Ответить
5. Cvetic 307 08.07.20 16:02 Сейчас в теме
7. AndKovalchuk 195 08.07.20 16:28 Сейчас в теме
(5) Ну да. Просто потом при выборке запроса по регистратору уже можно получить дату платежа и оценить насколько задолженность просрочена.
11. Cvetic 307 08.07.20 17:03 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот