Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 19:53

Требуется помощь с отчетом по Дебиторской задолженности

Автор Стервятник, 27 ноя 2013, 15:27

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

Стервятник

Доброе время суток, дамы и господа! У меня вопрос по стандартному отчету "Дебиторская задолженность по срокам долга" из конфигурации "Управление торговлей 10.3". Необходимо добавить в данный отчет два новых столбца "Дата последнего платежа" и "Сумма последнего платежа". Данные берутся из "Платежное поручение входящее" и "Приходно-кассового ордер". Имеется код запросов, который определяет последние периоды оплаты из виртуальной таблицы остатков, отбирает документы, по которым последними вносили оплату и выбирает необходимые суммы. Код работает через консоль запросов.
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Организация,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент,
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Период) КАК Период
ПОМЕСТИТЬ ВТ_Время
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов
        ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ДоговорКонтрагента
            И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Контрагент
            И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Организация = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Организация
ГДЕ
    (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
            ИЛИ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее)

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

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

СГРУППИРОВАТЬ ПО
    ВТ_Время.ДоговорКонтрагента,
    ВТ_Время.Организация,
    ВТ_Время.Контрагент;

ВЫБРАТЬ
    ВТ_ПоследниеДокументы.ДоговорКонтрагента,
    ВТ_ПоследниеДокументы.Организация,
    ВТ_ПоследниеДокументы.Контрагент,
    ВТ_ПоследниеДокументы.Регистратор,
    ВТ_ПоследниеДокументы.Регистратор.СуммаДокумента
ИЗ
    ВТ_ПоследниеДокументы КАК ВТ_ПоследниеДокументы


И собственно сам стандартный отчет по дебиторской задолженности.
ТекстЗапросаПоОстаткам =
"ВЫБРАТЬ
| ВзаиморасчетыПоДокументамОстатки.Организация,
| ВзаиморасчетыПоДокументамОстатки.Контрагент,
| ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента,
| ВзаиморасчетыПоДокументамОстатки.Сделка,
| ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом,
| ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток КАК ОстатокДолга0
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
| &ДатаОстатков,
| {(Организация).* КАК Организация, (Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК Сделка}) КАК ВзаиморасчетыПоДокументамОстатки
|ГДЕ
| ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток > 0";

ТекстЗапросаПоОборотам =
"ВЫБРАТЬ
| ВзаиморасчетыПоДокументамОбороты.Организация,
| ВзаиморасчетыПоДокументамОбороты.Контрагент,
| ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента,
| ВзаиморасчетыПоДокументамОбороты.Сделка,
| ВзаиморасчетыПоДокументамОбороты.ДокументРасчетовСКонтрагентом,
| ВЫБОР
| КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход > 0
| ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ - ВЫБОР
| КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход < 0
| ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход
| ИНАЧЕ 0
| КОНЕЦ КАК УвеличениеДолга1
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(
| &НачалоИнтервала1,
| &КонецИнтервала1,
| ,
| {(Организация).* КАК Организация, (Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК Сделка}) КАК ВзаиморасчетыПоДокументамОбороты";

КолИнтервалов = ТабИнтервалы.Количество();

ТекстЗапросаОстатокИОбороты =
"ВЫБРАТЬ
| Остатки.Организация,
| Остатки.Контрагент,
| Остатки.ДоговорКонтрагента,
| Остатки.Сделка,
| Остатки.ДокументРасчетовСКонтрагентом,
| Остатки.ОстатокДолга0";
Для Ном = 1 По КолИнтервалов - 1 Цикл
ОборотыНом = "Обороты" + Ном;
ТекстЗапросаОстатокИОбороты = ТекстЗапросаОстатокИОбороты + ",
| ЕСТЬNULL(Обороты" + Ном + ".УвеличениеДолга" + Ном + ", 0) КАК УвеличениеДолга" + Ном;
КонецЦикла;
ТекстЗапросаОстатокИОбороты = ТекстЗапросаОстатокИОбороты + "
|ИЗ
| (" + ТекстЗапросаПоОстаткам + ") КАК Остатки";
Для Ном = 1 По КолИнтервалов - 1 Цикл
ТекстЗапросаПоОборотамИнтервала = СтрЗаменить(ТекстЗапросаПоОборотам, "УвеличениеДолга1", "УвеличениеДолга" + Ном);
ТекстЗапросаПоОборотамИнтервала = СтрЗаменить(ТекстЗапросаПоОборотамИнтервала, "&НачалоИнтервала1", "&НачалоИнтервала" + Ном);
ТекстЗапросаПоОборотамИнтервала = СтрЗаменить(ТекстЗапросаПоОборотамИнтервала, "&КонецИнтервала1", "&КонецИнтервала" + Ном);
ОборотыНом = "Обороты" + Ном;
ТекстЗапросаОстатокИОбороты = ТекстЗапросаОстатокИОбороты + "
|ЛЕВОЕ СОЕДИНЕНИЕ
| (" + ТекстЗапросаПоОборотамИнтервала + ") КАК " + ОборотыНом + "
| ПО
| Остатки.Организация = " + ОборотыНом + ".Организация
| И Остатки.Контрагент = " + ОборотыНом + ".Контрагент
| И Остатки.ДоговорКонтрагента = " + ОборотыНом + ".ДоговорКонтрагента
| И Остатки.Сделка = " + ОборотыНом + ".Сделка
| И Остатки.ДокументРасчетовСКонтрагентом = " + ОборотыНом + ".ДокументРасчетовСКонтрагентом";
КонецЦикла;

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

ТекстПоказателей = "
| ОстаткиПоПериодам.ОстатокДолга0 КАК ОстатокДолга";
Для Ном = 1 По КолИнтервалов - 1 Цикл
ТекстПоказателей = ТекстПоказателей + ",
| ОстаткиПоПериодам.ОстатокДолга" + (Ном - 1) + " - ОстаткиПоПериодам.ОстатокДолга" + Ном + " КАК ОстатокПериода" + Ном;
КонецЦикла;
Если КолИнтервалов > 0 Тогда
ТекстПоказателей = ТекстПоказателей + ",
| ОстаткиПоПериодам.ОстатокДолга" + (КолИнтервалов - 1) + " КАК ОстатокПериода" + КолИнтервалов;
КонецЕсли;

ТекстЗапроса =
"ВЫБРАТЬ
| ОстаткиПоПериодам.Организация КАК Организация,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Организация) КАК ОрганизацияПредставление,
| ОстаткиПоПериодам.Контрагент КАК Контрагент,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Контрагент) КАК КонтрагентПредставление,
| ОстаткиПоПериодам.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление,
| ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов) КАК ВалютаВзаиморасчетовПредставление,
| ОстаткиПоПериодам.Сделка КАК Сделка,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Сделка) КАК СделкаПредставление,
| ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
| ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом) КАК ДокументРасчетовСКонтрагентомПредставление,"
+ ТекстПоказателей + "
| //ПОЛЯ_СВОЙСТВА
| //ПОЛЯ_КАТЕГОРИИ
|{ВЫБРАТЬ
| Организация.*,
| Контрагент.*,
| ДоговорКонтрагента.*,
| ВалютаВзаиморасчетов.*,
| Сделка.*,
| ДокументРасчетовСКонтрагентом.*,"
+ ТекстПоказателей + "
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}
|ИЗ
| (" + ТекстЗапросаОстаткиПоПериодам + ") КАК ОстаткиПоПериодам
| //СОЕДИНЕНИЯ
|{ГДЕ"
+ ТекстПоказателей + "
| //УСЛОВИЯ_СВОЙСТВА
| //УСЛОВИЯ_КАТЕГОРИИ
|}
|{УПОРЯДОЧИТЬ ПО
| Организация.*,
| Контрагент.*,
| ДоговорКонтрагента.*,
| Сделка.*,
| ДокументРасчетовСКонтрагентом.*,
| ВалютаВзаиморасчетов.*,
| ОстатокДолга";
Для Ном = 1 По КолИнтервалов Цикл
ТекстЗапроса = ТекстЗапроса + ",
| ОстатокПериода" + Ном;
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + "
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}
|ИТОГИ
| СУММА(ОстатокДолга)";
Для Ном = 1 По КолИнтервалов Цикл
ТекстЗапроса = ТекстЗапроса + ",
| СУММА(ОстатокПериода" + Ном + ")";
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + "
| //ИТОГИ_СВОЙСТВА
| //ИТОГИ_КАТЕГОРИИ
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| Организация.*,
| Контрагент.*,
| ДоговорКонтрагента.*,
| Контрагент.*,
| Сделка.*,
| ДокументРасчетовСКонтрагентом.*,
| ВалютаВзаиморасчетов.*
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}";

Каким образом можно запрос по документам оплат добавить в отчет по Дебиторской задолженности, чтобы в отчете появились два столбца "Дата" и "Сумма" последней оплаты? Я пробовал много раз внедрить вышеуказанный код, но так и смог вставить его правильно. Получалось: суммы не соответствуют последним, даты совершенно другие. Вообщем, каша полная. В отдельности всё работает и всё показывает правильно. Помогите пожалуйста, если конечно реально такое сделать... :dfbsdfbsdf:

Стервятник

Никто не может помочь добавить в штатный отчет "Дебиторская задолженность по периодам" в УТ10.3 две колонки оплата и дата оплаты (последние)?!

Теги:

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

Рейтинг@Mail.ru

Поиск