Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2022, 10:23

Отчет по дебиторской задолженности СКД в УПП

Автор slCh, 16 ноя 2017, 09:57

0 Пользователей и 1 гость просматривают эту тему.

slCh

Всем день добрый!
В общем есть отчет на СКД по дебиторской задолженности. Работает вроде правильно. Долг тянет. Дней отсрочки тянет. И все бы ничего, но при определенном стечении обстоятельств вылазит косячек. Пример:
У клиента 3 договора. На 1м из договоров 3 реализации: №1 10.11.17-1000 р., №2 11.11.17-2000 р., №3 12.11.17-2000 р. Реализации №2 и №3 закрыты полностью. Отсрочка по договору 2 дня, соответственно реализация №1 просрочена. При формировании отчета в поле регистратора попадает последняя реализация по дате, т.е. №3 (хоть она и полностью оплачена), но с суммой долга от просроченной реализации №1. Косяк в коде найти не получается. Код:
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОбороты.Период,
ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
ВзаиморасчетыСКонтрагентамиОбороты.Организация,
ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот,
ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрОборот
ПОМЕСТИТЬ ВтВзаиморасчеты
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), Регистратор, {(Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК Сделка}) КАК ВзаиморасчетыСКонтрагентамиОбороты
ГДЕ
ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Взаиморасчеты.Период КАК Период,
Взаиморасчеты.Регистратор,
СУММА(Взаиморасчеты1.СуммаВзаиморасчетовОборот) КАК СуммаПриходаПослеАкта,
Взаиморасчеты.ДоговорКонтрагента
ПОМЕСТИТЬ ВтПриходыПослеАкта
ИЗ
ВтВзаиморасчеты КАК Взаиморасчеты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтВзаиморасчеты КАК Взаиморасчеты1
ПО Взаиморасчеты.ДоговорКонтрагента = Взаиморасчеты1.ДоговорКонтрагента
И Взаиморасчеты.Период < Взаиморасчеты1.Период

СГРУППИРОВАТЬ ПО
Взаиморасчеты.Регистратор,
Взаиморасчеты.Период,
Взаиморасчеты.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстатки.Организация,
ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,
ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток
ПОМЕСТИТЬ ВтДолги
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ) КАК ВзаиморасчетыСКонтрагентамиОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтВзаиморасчеты.Период КАК Период,
ВтВзаиморасчеты.Регистратор,
ВтВзаиморасчеты.Организация,
ВтВзаиморасчеты.Контрагент,
ВтВзаиморасчеты.ДоговорКонтрагента,
ВтВзаиморасчеты.СуммаВзаиморасчетовОборот,
ВтВзаиморасчеты.СуммаУпрОборот,
ЕСТЬNULL(ВтПриходыПослеАкта.СуммаПриходаПослеАкта, 0) КАК СуммаПослеАкта,
ЕСТЬNULL(ВтДолги.СуммаВзаиморасчетовОстаток, 0) КАК СуммаДолга,
ВЫБОР
КОГДА ЕСТЬNULL(ВтДолги.СуммаВзаиморасчетовОстаток, 0) - ЕСТЬNULL(ВтПриходыПослеАкта.СуммаПриходаПослеАкта, 0) > ВтВзаиморасчеты.СуммаВзаиморасчетовОборот
ТОГДА ВтВзаиморасчеты.СуммаВзаиморасчетовОборот
ИНАЧЕ ВЫБОР
КОГДА ЕСТЬNULL(ВтДолги.СуммаВзаиморасчетовОстаток, 0) - ЕСТЬNULL(ВтПриходыПослеАкта.СуммаПриходаПослеАкта, 0) > 0
ТОГДА ЕСТЬNULL(ВтДолги.СуммаВзаиморасчетовОстаток, 0) - ЕСТЬNULL(ВтПриходыПослеАкта.СуммаПриходаПослеАкта, 0)
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ КАК ОстатокДолга,
ВЫБОР
КОГДА ВтВзаиморасчеты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
ТОГДА ВтВзаиморасчеты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
ИНАЧЕ &ЧислоДнейПоУмолчанию
КОНЕЦ КАК ДопустимоеЧислоДнейЗадолженности
ПОМЕСТИТЬ ВтДолгиПоДокументам
ИЗ
ВтВзаиморасчеты КАК ВтВзаиморасчеты
ЛЕВОЕ СОЕДИНЕНИЕ ВтПриходыПослеАкта КАК ВтПриходыПослеАкта
ПО ВтВзаиморасчеты.Регистратор = ВтПриходыПослеАкта.Регистратор
И ВтВзаиморасчеты.ДоговорКонтрагента = ВтПриходыПослеАкта.ДоговорКонтрагента
ЛЕВОЕ СОЕДИНЕНИЕ ВтДолги КАК ВтДолги
ПО ВтВзаиморасчеты.ДоговорКонтрагента = ВтДолги.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтДолгиПоДокументам.Период КАК Период,
ВтДолгиПоДокументам.Регистратор,
ВтДолгиПоДокументам.Организация,
ВтДолгиПоДокументам.Контрагент,
ВтДолгиПоДокументам.ДоговорКонтрагента,
ВтДолгиПоДокументам.СуммаВзаиморасчетовОборот КАК СуммаДокумента,
ВтДолгиПоДокументам.СуммаУпрОборот КАК СуммаДокументаУпр,
ВтДолгиПоДокументам.ОстатокДолга,
ВЫБОР
КОГДА ВЫБОР
КОГДА РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгиПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ) > ВтДолгиПоДокументам.ДопустимоеЧислоДнейЗадолженности
ТОГДА РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгиПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ) - ВтДолгиПоДокументам.ДопустимоеЧислоДнейЗадолженности
ИНАЧЕ 0
КОНЕЦ > 0
ТОГДА ВтДолгиПоДокументам.ОстатокДолга
ИНАЧЕ 0
КОНЕЦ КАК СуммаДолгаПросроченная,
ВтДолгиПоДокументам.ДопустимоеЧислоДнейЗадолженности,
РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгиПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ) КАК ДнейДолга,
ВЫБОР
КОГДА РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгиПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ) > ВтДолгиПоДокументам.ДопустимоеЧислоДнейЗадолженности
ТОГДА РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгиПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ) - ВтДолгиПоДокументам.ДопустимоеЧислоДнейЗадолженности
ИНАЧЕ 0
КОНЕЦ КАК ПросроченоДней
ИЗ
ВтДолгиПоДокументам КАК ВтДолгиПоДокументам
ГДЕ
ЕСТЬNULL(ВтДолгиПоДокументам.ОстатокДолга, 0) > 0


Sy4a

Слишком нагромажденный отчет копать лень если честно). Попробуйте изменить отчет чтобы вам падали все документы, т.е. где просрочка 0 и долг 0 и посмотрите куда упадет эта ваша сумма и вообще попадет ли туда нужный вам документ из полученных данных уже копайте.

Добавлено: 16 ноя 2017, 16:22


Ещё посоветую сформируйте сначало первый пакет запросов и посмотрите результат, затем вместе со вторым и так далее и посмотрите в каком именно месте у вас начинает пропадать либо сумма у нужного документ и тем самым его нет (как вариант эту сумма к каждому документу берется и вытягивается последний просто),  либо сам документ выпадает.
А чтобы появилась возможность протестить ваш отчет пишите номер конфигурации и номер платформы чтобы знать на чем его можно проверить.
В дополнении на всякий случай посмотрите в регистрах информация вообще верная лежит?

Теги: 1c УПП 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск