Dev ›
Как получить Остатки по счету 60 в разрезе документов поступления? [Запрос] ›
#3
26.07.18 0:25
Вы действительно правильно написали, в документах расчета может быть все что угодно.
И поступления и платежки и возвраты ну и счета поставщиков.
Я делал такой отчет, но только по дебиторам.
Смысл запроса такой...
1. Выбрать долги в разрезе контрагент и договор
2. Выбрать Документы поступления по договорам с долгами
3. Делать таблицу нарастающих сумм по документам (нарастающий итог должен идти от более новых дат к более старым)
4. Распределить сумму долга по документам
Ну и сам запрос
ВЫБРАТЬ
ХозрасчетныйОстатки.Организация КАК Организация,
ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
ХозрасчетныйОстатки.Субконто2 КАК Договор,
ХозрасчетныйОстатки.СуммаРазвернутыйОстатокКт КАК СуммайОстатокКт
ПОМЕСТИТЬ ТаблДолги
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&ПериодОтчета, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , ) КАК ХозрасчетныйОстатки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровУслуг.Дата,
ПоступлениеТоваровУслуг.Ссылка,
ПоступлениеТоваровУслуг.Организация,
ПоступлениеТоваровУслуг.Контрагент,
ПоступлениеТоваровУслуг.ДоговорКонтрагента,
ПоступлениеТоваровУслуг.СуммаДокумента
ПОМЕСТИТЬ ТаблПриход
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
ПоступлениеТоваровУслуг.Проведен = ИСТИНА
И ПоступлениеТоваровУслуг.ДоговорКонтрагента В
(ВЫБРАТЬ
ТаблДолги.Договор
ИЗ
ТаблДолги КАК ТаблДолги)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТаблПриход.Дата,
ТаблПриход.Ссылка,
ТаблПриход.Организация,
ТаблПриход.ДоговорКонтрагента,
ТаблПриход.Контрагент,
ТаблПриход.СуммаДокумента,
СУММА(ТаблПриходКопия.СуммаДокумента) - ТаблПриход.СуммаДокумента КАК СуммаДо,
СУММА(ТаблПриходКопия.СуммаДокумента) КАК СуммаПосле
ПОМЕСТИТЬ ТаблИтоги
ИЗ
ТаблПриход КАК ТаблПриход
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблПриход КАК ТаблПриходКопия
ПО ТаблПриход.ДоговорКонтрагента = ТаблПриходКопия.ДоговорКонтрагента
И ТаблПриход.Контрагент = ТаблПриходКопия.Контрагент
И ТаблПриход.Организация = ТаблПриходКопия.Организация
И ТаблПриход.Дата <= ТаблПриходКопия.Дата
СГРУППИРОВАТЬ ПО
ТаблПриход.Дата,
ТаблПриход.Ссылка,
ТаблПриход.Организация,
ТаблПриход.ДоговорКонтрагента,
ТаблПриход.Контрагент,
ТаблПриход.СуммаДокумента
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВнЗапрос.Дата КАК ДатаДокумента,
ВнЗапрос.Ссылка КАК ДокументПоступления,
ВнЗапрос.Организация КАК Организация,
ВнЗапрос.Контрагент КАК Контрагент,
ВнЗапрос.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВнЗапрос.СуммаДокумента КАК СуммаДокумента,
ВнЗапрос.ДолгБух КАК ДолгПоДоговору,
ВЫБОР
КОГДА ВнЗапрос.Разница >= 0
ТОГДА ВнЗапрос.СуммаДокумента
ИНАЧЕ ВЫБОР
КОГДА ВнЗапрос.СуммаДокумента < -ВнЗапрос.Разница
ТОГДА 0
ИНАЧЕ ВнЗапрос.СуммаДокумента - -ВнЗапрос.Разница
КОНЕЦ
КОНЕЦ КАК ДолгРаспределенный
ИЗ
(ВЫБРАТЬ
ТаблИтоги.Дата КАК Дата,
ТаблИтоги.Ссылка КАК Ссылка,
ТаблИтоги.ДоговорКонтрагента КАК ДоговорКонтрагента,
ТаблИтоги.Организация КАК Организация,
ТаблИтоги.Контрагент КАК Контрагент,
ТаблИтоги.СуммаДокумента КАК СуммаДокумента,
ТаблИтоги.СуммаДо КАК СуммаДо,
ТаблИтоги.СуммаПосле КАК СуммаПосле,
ТаблДолги.СуммайОстатокКт КАК ДолгБух,
ТаблДолги.СуммайОстатокКт - ТаблИтоги.СуммаПосле КАК Разница
ИЗ
ТаблИтоги КАК ТаблИтоги
ЛЕВОЕ СОЕДИНЕНИЕ ТаблДолги КАК ТаблДолги
ПО ТаблИтоги.ДоговорКонтрагента = ТаблДолги.Договор) КАК ВнЗапрос
УПОРЯДОЧИТЬ ПО
ВнЗапрос.ДоговорКонтрагента,
ВнЗапрос.Дата УБЫВ
P.S. В запросе не учтена ситуация когда сумма долга к примеру 10000 а удалось найти Приходных накладных на сумму к примеру 9000...
получается что 1000 не на что распределить
тут уж решайте сами как быть в такой ситуации