1С: как сравнить в запросе тек элемент с предыдущим, необходимо написать запрос который посчитает разницу между днями рождениями из регистра сведен

введите сюда описание изображенияне понял как сделать перебор

ДеньРождение КАК СледующийДеньРождения, РАЗНОСТЬДАТ(ДеньРождение, СледующийДеньРождения, ДЕНЬ) КАК КоличествоДней


Ответы (1 шт):

Автор решения: santavital

Как я понял из коммента в

регистре 2 измерения* ФИО, ДатаРождения и необходимо найти разницу в днях рождения.

Эта задача довольно сложная для начинающего ... Вам необходимо к первой таблице Т1(РегистрСведений) выполнить ЛЕВОЕ СОЕДИНЕНИЕ ПО Т1.ДеньРождения <= Т2.ДеньРождения где Т2(тот же РегистрСведений) и вычислить разность дат (Т2.ДеньРождения - Т1.ДеньРождения) взять от нее МИНИМУМ()

ВЫБРАТЬ Т1.ФИО, Т1.ДеньРождения, МИНИМУМ(Т2.ДеньРождения - Т1.ДеньРождения)

ИЗ НашРегистрСведений КАК Т1

ЛЕВОЕ СОЕДИНЕНИЕ НашРегистрСведений КАК Т2

ПО Т1.ДеньРождения <= Т2.ДеньРождения 

СГРУППИРОВАТЬ ПО Т1.ФИО, Т1.ДеньРождения

Следует учитывать случай когда после Т1.ДеньРождения уже нет данных; Тогда необходимо учесть это при вычислении разности

МИНИМУМ(
ВЫБОР КОГДА Т2.ДеньРождения ЕСТЬ NULL ТОГДА 999999 
ИНАЧЕ Т2.ДеньРождения - Т1.ДеньРождения 
КОНЕЦ)

Ну и наконец при выводе отчета 999999 заменять на " "

→ Ссылка