Запрос, соединение записи регистра накопления со следующей записью по времени и по одному документу расчетов
Добрый день!
УТ 10.3. Необходимо создать запрос, который будет получать данные из регистра накопления
"ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов". Необходимы сроки и суммы просроченной задолженности. Надо соединить по полям "ДокументРасчетовСКонтрагентом" и ПериодДень одной таблицы больше ПериодДень другой таблицы. Но к одной записи первой таблицы, при левом соединении, присоединяется множество записей из второй (все, где дата больше). Не могу придумать условие, чтобы соединялись записи только со следующей, а не со всеми следующими.
Первый запрос чтобы разобраться, второй для конкретного применения.
Условие на конкретный документ расчета с контрагентом добавил для наглядности.
На картинках записи регистра
Результаты первого и второго запросов.
Нужно получить периоды когда контрагент был должен:
02.11.21-27.12.21 долг 628272,1
27.12.21-29.12.21 долг 423214,1
29.12.21-10.01.21 долг 123214,1
УТ 10.3. Необходимо создать запрос, который будет получать данные из регистра накопления
"ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов". Необходимы сроки и суммы просроченной задолженности. Надо соединить по полям "ДокументРасчетовСКонтрагентом" и ПериодДень одной таблицы больше ПериодДень другой таблицы. Но к одной записи первой таблицы, при левом соединении, присоединяется множество записей из второй (все, где дата больше). Не могу придумать условие, чтобы соединялись записи только со следующей, а не со всеми следующими.
Первый запрос чтобы разобраться, второй для конкретного применения.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Запрос 1
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ПериодДень,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата
ПОМЕСТИТЬ ВТ_ДатыВсе
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
Авто,
,
ДоговорКонтрагента = &ДоговорКонтрагента
И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ПериодДень,
// ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата,
ВТ_ДатыВсе.ПериодДень КАК ПериодДень1
ИЗ
ВТ_ДатыВсе КАК ВТ_ДатыВсе
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
Авто,
,
ДоговорКонтрагента = &ДоговорКонтрагента
И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
ПО ВТ_ДатыВсе.ПериодДень > ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ПериодДень
/////////////////////////////////////////////////////////////////////////////////////////////////Запрос2
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом,
-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовОборот,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ), ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + 1) КАК ПериодПросрочкиНачало,
ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор.Дата, ДЕНЬ, -1) КАК ПериодПросрочкиКонец,
ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, 1) КАК ПериодПросрочкиНачалоСледующегоДня,
РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор.Дата, ДЕНЬ) - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности - 1 КАК ЧислоДнейПросрочки,
РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор.Дата, ДЕНЬ) - 1 КАК ЧислоДнейПользованияКредитом,
ВЫРАЗИТЬ((-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) * ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ПроцентПоДоговору / 100 * (РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор.Дата, ДЕНЬ) - 1) КАК ЧИСЛО(15, 2)) КАК ПоДоговору,
ВЫРАЗИТЬ((-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) * ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.Пени / 100 * (РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор.Дата, ДЕНЬ) - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности - 1) КАК ЧИСЛО(15, 2)) КАК Пени,
ВТ_ОстатокПоРеализацииНаТекущуюДату.ОстатокПоРеализацииНаТекущуюДату,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.ПроцентПоДоговору КАК ПроцентПоДоговору,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента.Пени КАК ПроцентПени
ИЗ
ВТ_ОстатокПоРеализацииНаТекущуюДату КАК ВТ_ОстатокПоРеализацииНаТекущуюДату
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
Авто,
,
ДоговорКонтрагента = &ДоговорКонтрагента
И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
ПО ВТ_ОстатокПоРеализацииНаТекущуюДату.ДокументРасчетовСКонтрагентом = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом
ГДЕ
ТИПЗНАЧЕНИЯ(ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор КАК Документ.ПлатежноеПоручениеВходящее)) = ТИП(Документ.ПлатежноеПоручениеВходящее)
УПОРЯДОЧИТЬ ПО
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ПериодДень
ПоказатьУсловие на конкретный документ расчета с контрагентом добавил для наглядности.
На картинках записи регистра
Результаты первого и второго запросов.
Нужно получить периоды когда контрагент был должен:
02.11.21-27.12.21 долг 628272,1
27.12.21-29.12.21 долг 423214,1
29.12.21-10.01.21 долг 123214,1
Прикрепленные файлы:



По теме из базы знаний
- ЗУП для начинающих программистов
- Регистры сведений 1С. Как это устроено.
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ
Найденные решения
(4) Вот пример для документа "Авансовый ответ"
ВЫБРАТЬ
АвансовыйОтчет.Ссылка КАК Ссылка,
МИНИМУМ(СледующийАвансовыйОтчет.Дата) КАК Дата
ПОМЕСТИТЬ ДатаСледующегоДокумента
ИЗ
Документ.АвансовыйОтчет КАК АвансовыйОтчет
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК СледующийАвансовыйОтчет
ПО (АвансовыйОтчет.Дата < СледующийАвансовыйОтчет.Дата)
СГРУППИРОВАТЬ ПО
АвансовыйОтчет.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДатаСледующегоДокумента.Ссылка КАК Документ,
АвансовыйОтчет.Ссылка КАК СледующийДокумент
ИЗ
ДатаСледующегоДокумента КАК ДатаСледующегоДокумента
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет
ПО (ДатаСледующегоДокумента.Дата = АвансовыйОтчет.Дата)
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добрый день, вот вам идея - в таблице с кучей записей больше текущего периода сделать группировку с выявлением минимального периода - потом опять соединить с таблицей и получить нужную таблицу с ближайшим периодом
(4) Вот пример для документа "Авансовый ответ"
ВЫБРАТЬ
АвансовыйОтчет.Ссылка КАК Ссылка,
МИНИМУМ(СледующийАвансовыйОтчет.Дата) КАК Дата
ПОМЕСТИТЬ ДатаСледующегоДокумента
ИЗ
Документ.АвансовыйОтчет КАК АвансовыйОтчет
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК СледующийАвансовыйОтчет
ПО (АвансовыйОтчет.Дата < СледующийАвансовыйОтчет.Дата)
СГРУППИРОВАТЬ ПО
АвансовыйОтчет.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДатаСледующегоДокумента.Ссылка КАК Документ,
АвансовыйОтчет.Ссылка КАК СледующийДокумент
ИЗ
ДатаСледующегоДокумента КАК ДатаСледующегоДокумента
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет
ПО (ДатаСледующегоДокумента.Дата = АвансовыйОтчет.Дата)
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот