Добрый день. Столкнулся с проблемой. Мне нужно по каждому месяцу (которые выбрал пользователь) получать актуальные документы изменения и получать сумму платежа, это я все сделал. Но также нужно для последней строки документа изменения рассчитывать по другому сумму, "Последняя сумма рассчитывается как разность между суммой из графика и рассчитанными суммами платежей по документу." Проблема в том, что когда я делаю расчет для последней строки через СКД, то идет раздвоение строк, т.к. на один предмет аренды может быть несколько документов
Запрос:
Запрос:
ВЫБРАТЬ
ДанныеПредметовАрендыСрезПоследних.Контрагент КАК Лизингодатель,
ДанныеПредметовАрендыСрезПоследних.ДоговорКонтрагента КАК Договор,
ДанныеПредметовАрендыСрезПоследних.ПредметАренды КАК ПредметЛизинга,
ДанныеПредметовАрендыСрезПоследних.Период КАК Период,
ДанныеПредметовАрендыСрезПоследних.СуммаВзаиморасчетовБУ КАК СуммаВзаиморасчетовБУ
ПОМЕСТИТЬ ВТ_СписокЗаписей
ИЗ
РегистрСведений.ДанныеПредметовАренды.СрезПоследних(
&ДатаОкончания,
Лизинг = ИСТИНА
И НЕ ПредметАренды В
(ВЫБРАТЬ
ДанныеПредметовАренды.ПредметАренды
ИЗ
РегистрСведений.ДанныеПредметовАренды КАК ДанныеПредметовАренды
ГДЕ
ДанныеПредметовАренды.Период <= &ДатаОкончания
И ДанныеПредметовАренды.Регистратор ССЫЛКА Документ.ПрекращениеАренды)) КАК ДанныеПредметовАрендыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаНачала, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.АрендныеОбязательства), , ) КАК ХозрасчетныйОстатки
ПО ДанныеПредметовАрендыСрезПоследних.Контрагент = ХозрасчетныйОстатки.Субконто1
И ДанныеПредметовАрендыСрезПоследних.ДоговорКонтрагента = ХозрасчетныйОстатки.Субконто2
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПоступлениеВАрендуПредметыАренды.Ссылка КАК Ссылка,
ПоступлениеВАрендуПредметыАренды.ПредметАренды КАК ПредметЛизинга,
НАЧАЛОПЕРИОДА(ПоступлениеВАрендуГрафикПлатежей.ДатаПлатежа, МЕСЯЦ) КАК ДатаПлатежа,
ПоступлениеВАрендуГрафикПлатежей.СуммаПлатежа / КоличествоПредметов.Количество КАК СуммаПлатежа,
ПоступлениеВАрендуГрафикПлатежей.СуммаПлатежа КАК СуммаПлатежаИзГрафика
ПОМЕСТИТЬ ВТ_СписокПоступлений
ИЗ
ВТ_СписокЗаписей КАК ВТ_СписокЗаписей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеВАренду.ПредметыАренды КАК ПоступлениеВАрендуПредметыАренды
ПО ВТ_СписокЗаписей.ПредметЛизинга = ПоступлениеВАрендуПредметыАренды.ПредметАренды
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеВАренду.ГрафикПлатежей КАК ПоступлениеВАрендуГрафикПлатежей
ПО (ПоступлениеВАрендуПредметыАренды.Ссылка = ПоступлениеВАрендуГрафикПлатежей.Ссылка)
И (ПоступлениеВАрендуГрафикПлатежей.ДатаПлатежа МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ) И КОНЕЦПЕРИОДА(&ДатаОкончания, МЕСЯЦ))
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Предметы.Ссылка КАК Ссылка,
КОЛИЧЕСТВО(Предметы.Ссылка) КАК Количество
ИЗ
Документ.ПоступлениеВАренду.ПредметыАренды КАК Предметы
ГДЕ
Предметы.Ссылка.ПометкаУдаления = ЛОЖЬ
СГРУППИРОВАТЬ ПО
Предметы.Ссылка) КАК КоличествоПредметов
ПО (ПоступлениеВАрендуПредметыАренды.Ссылка = КоличествоПредметов.Ссылка)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
МАКСИМУМ(ИзменениеУсловийАрендыПредметыАренды.Ссылка) КАК Ссылка,
ИзменениеУсловийАрендыПредметыАренды.ПредметАренды КАК ПредметЛизинга,
ИзменениеУсловийАрендыПредметыАренды.Ссылка.Дата КАК Дата
ПОМЕСТИТЬ ВТ_СписокИзменений
ИЗ
ВТ_СписокЗаписей КАК ВТ_СписокЗаписей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ИзменениеУсловийАренды.ПредметыАренды КАК ИзменениеУсловийАрендыПредметыАренды
ПО ВТ_СписокЗаписей.ПредметЛизинга = ИзменениеУсловийАрендыПредметыАренды.ПредметАренды
И ВТ_СписокЗаписей.Договор = ИзменениеУсловийАрендыПредметыАренды.Ссылка.ДоговорКонтрагента
И (НЕ ВТ_СписокЗаписей.СуммаВзаиморасчетовБУ ЕСТЬ NULL)
СГРУППИРОВАТЬ ПО
ИзменениеУсловийАрендыПредметыАренды.ПредметАренды,
ИзменениеУсловийАрендыПредметыАренды.Ссылка.Дата
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДокиТест.Ссылка КАК Ссылка,
ВТ_СписокИзменений.ПредметЛизинга КАК ПредметЛизинга,
НАЧАЛОПЕРИОДА(ИзменениеУсловийАрендыГрафикПлатежей.ДатаПлатежа, МЕСЯЦ) КАК ДатаПлатежа,
ИзменениеУсловийАрендыГрафикПлатежей.СуммаПлатежа / КоличествоПредметов.Количество КАК СуммаПлатежа,
ИзменениеУсловийАрендыГрафикПлатежей.СуммаПлатежа КАК СуммаПлатежаИзГрафика
ПОМЕСТИТЬ ВТ_СписокИзмененийСГрафикомПлатежей
ИЗ
ВТ_СписокИзменений КАК ВТ_СписокИзменений
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ИзменениеУсловийАренды.ГрафикПлатежей КАК ИзменениеУсловийАрендыГрафикПлатежей
ПО ВТ_СписокИзменений.Ссылка = ИзменениеУсловийАрендыГрафикПлатежей.Ссылка
И (ИзменениеУсловийАрендыГрафикПлатежей.ДатаПлатежа МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ) И КОНЕЦПЕРИОДА(&ДатаОкончания, МЕСЯЦ))
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ДокТекущий.Ссылка КАК Ссылка,
ДокТекущий.ПредметЛизинга КАК ПредметЛизинга,
ДокТекущий.Дата КАК ДатаНачалаПериода,
ВЫБОР
КОГДА МИНИМУМ(ДокСледующий.Дата) ЕСТЬ NULL
ТОГДА &ДатаОкончания
ИНАЧЕ МИНИМУМ(ДокСледующий.Дата)
КОНЕЦ КАК ДатаОкончанияПериода
ИЗ
ВТ_СписокИзменений КАК ДокТекущий
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СписокИзменений КАК ДокСледующий
ПО ДокТекущий.ПредметЛизинга = ДокСледующий.ПредметЛизинга
И ДокТекущий.Дата < ДокСледующий.Дата
СГРУППИРОВАТЬ ПО
ДокТекущий.Ссылка,
ДокТекущий.ПредметЛизинга,
ДокТекущий.Дата) КАК ДокиТест
ПО (ИзменениеУсловийАрендыГрафикПлатежей.ДатаПлатежа МЕЖДУ ДокиТест.ДатаНачалаПериода И ДокиТест.ДатаОкончанияПериода)
И (ИзменениеУсловийАрендыГрафикПлатежей.Ссылка = ДокиТест.Ссылка)
И ВТ_СписокИзменений.ПредметЛизинга = ДокиТест.ПредметЛизинга
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Предметы.Ссылка КАК Ссылка,
КОЛИЧЕСТВО(Предметы.Ссылка) КАК Количество
ИЗ
Документ.ИзменениеУсловийАренды.ПредметыАренды КАК Предметы
ГДЕ
Предметы.Ссылка.ПометкаУдаления = ЛОЖЬ
СГРУППИРОВАТЬ ПО
Предметы.Ссылка) КАК КоличествоПредметов
ПО ВТ_СписокИзменений.Ссылка = КоличествоПредметов.Ссылка
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_СписокЗаписей.Договор КАК Договор,
ВТ_СписокЗаписей.Лизингодатель КАК Лизингодатель,
ВТ_СписокЗаписей.ПредметЛизинга КАК ПредметЛизинга,
ВЫБОР
КОГДА ВТ_СписокИзменений.ДатаПлатежа ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.ДатаПлатежа
ИНАЧЕ ВТ_СписокИзменений.ДатаПлатежа
КОНЕЦ КАК ДатаПлатежа,
ВЫБОР
КОГДА ВТ_СписокИзменений.СуммаПлатежа ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.СуммаПлатежа
ИНАЧЕ ВТ_СписокИзменений.СуммаПлатежа
КОНЕЦ КАК СуммаПлатежа,
ВЫБОР
КОГДА ВТ_СписокИзменений.Ссылка ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.Ссылка
ИНАЧЕ ВТ_СписокИзменений.Ссылка
КОНЕЦ КАК Ссылка
ИЗ
ВТ_СписокЗаписей КАК ВТ_СписокЗаписей
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СписокПоступлений КАК ВТ_СписокПоступлений
ПО ВТ_СписокЗаписей.ПредметЛизинга = ВТ_СписокПоступлений.ПредметЛизинга
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СписокИзмененийСГрафикомПлатежей КАК ВТ_СписокИзменений
ПО ВТ_СписокЗаписей.ПредметЛизинга = ВТ_СписокИзменений.ПредметЛизинга
СГРУППИРОВАТЬ ПО
ВТ_СписокЗаписей.Договор,
ВТ_СписокЗаписей.Лизингодатель,
ВТ_СписокЗаписей.ПредметЛизинга,
ВЫБОР
КОГДА ВТ_СписокИзменений.ДатаПлатежа ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.ДатаПлатежа
ИНАЧЕ ВТ_СписокИзменений.ДатаПлатежа
КОНЕЦ,
ВЫБОР
КОГДА ВТ_СписокИзменений.СуммаПлатежа ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.СуммаПлатежа
ИНАЧЕ ВТ_СписокИзменений.СуммаПлатежа
КОНЕЦ,
ВЫБОР
КОГДА ВТ_СписокИзменений.Ссылка ЕСТЬ NULL
ТОГДА ВТ_СписокПоступлений.Ссылка
ИНАЧЕ ВТ_СписокИзменений.Ссылка
КОНЕЦ ПоказатьПрикрепленные файлы:
По теме из базы знаний
- СКД. Как объединить заголовки родительских группировок колонок в таблице
- Агрегатное суммирование строк в запросе – сложно, но не невозможно
- Динамическая расшифровка СКД (на примере отчета)
- Варианты применения СКД вне отчетов в отраслевых конфигурациях
- Смена типа набора данных СКД с сохранением полей программно
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
2.
Avatarzorro
81
27.08.26 10:37
Сейчас в теме
вообще чтобы сделать сумму из разряда "текущая строка + предыдущая" надо прислюнявить таблицу самой к себе внутренним соединением по условию
4.
SweetSweetLoot
27.08.26 11:33
Сейчас в теме
что то не так с соединением, не хватает условий возможно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот