Добрый день. Задание такое. Написать запрос который посчитает разницу между днями рождениями.
Пример: В регистр занесены следующие данные (рисунок 1), результат (рисунок 2), что выводит у меня (рисунок 3).
Мой код:

```1c
    ВЫБРАТЬ
    ДниРождения.ФИО КАК ФИО,
    ДниРождения.ДеньРождения КАК ДеньРождения
    ПОМЕСТИТЬ ВременнаяТаблица
    ИЗ
    РегистрСведений.ДниРождения КАК ДниРождения;
    ВЫБРАТЬ
    ДниРождения.ФИО КАК ФИО,
    ДниРождения.ДеньРождения КАК ДеньРождения,
    ВременнаяТаблица.ДеньРождения КАК СледДР,
    РАЗНОСТЬДАТ(ДниРождения.ДеньРождения, ВременнаяТаблица.ДеньРождения, ДЕНЬ) КАК РазницаДней
    ИЗ
    РегистрСведений.ДниРождения КАК ДниРождения
    ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
    ПО (ДниРождения.ДеньРождения < ВременнаяТаблица.ДеньРождения)
    УПОРЯДОЧИТЬ ПО
    ДеньРождения УБЫВ
```

Пишу через консоль запроса в 1с предприятии. Помогите разобраться.
---
```1c
    Выбрать
    т1.ФИО,
    т1.ДР,
    РазностьДат(т1.ДР, т2.ДР, ДЕНЬ)
    ИЗ Регистр.БлаБла КАК т1
    ЛЕВОЕ СОЕДИНЕНИЕ регистр.БлаБла КАК т2
    ПО Т2.ДР В (ВЫБРАТЬ МИНИМУМ(ДР) ИЗ Регистр.БлаБла КАК т3 ГДЕ т3.ДР > т1.ДР)
```
---
```1c
    Выбрать
    т1.ФИО,
    т1.ДР,
    РазностьДат(т1.ДР, т2.ДР, ДЕНЬ)
    ИЗ Регистр.БлаБла КАК т1
    ЛЕВОЕ СОЕДИНЕНИЕ регистр.БлаБла КАК т2
    ПО Т2.ДР В (ВЫБРАТЬ МИНИМУМ(ДР) ИЗ Регистр.БлаБла КАК т3 ГДЕ т3.ДР > т1.ДР)
```
---
Большое спасибо, но теперь оно показывает немного не тот результат.
---
Ну так дату преобразуй к дату без года.
Типа ВЫБРАТЬ ДАТАВРЕМЯ(&ЭтотГод, Месяц(т1.ДР), День(т1.ДР)) КАК ДР...
Ну и вообще надо, получается, для последнего ДР считать первый ДР в следующем году.
В общем не фиг тут что поправить, разберешься.
ЗЫ: в соединении можно заюзать ПЕРВЫЕ 1, но не всегда...
---
Что-то не совсем понимаю как с ДАТАВРЕМЯ работать, пыталась написать как вы предложили, но постоянно выдает ошибку:
Неверные параметры "ДАТАВРЕМЯ"
ДАТАВРЕМЯ(&ЭтотГод, <<?>>Месяц(Т1.ДеньРождения), День(Т1.ДеньРождения)),
Недавно начала запросы изучать. Я не особо еще разобралась как мне для последнего ДР считать первый ДР
---
>Месяц(Ну нет такой функции - я их тож наизусть не помню. Погляди в конструкторе запросов.
---
Проще не получилось:
```1c
    ВЫБРАТЬ
    "Иванов Иван Иванович" КАК ФИО,
    ДАТАВРЕМЯ(1989, 11, 23) КАК ДеньРождения
    ПОМЕСТИТЬ ДниРождения

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    "Петров Петр Петрович",
    ДАТАВРЕМЯ(2000, 2, 23)

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    "Михайлов Михаил Михайлович",
    ДАТАВРЕМЯ(1990, 10, 1)
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДниРождения.ФИО КАК ФИО,
    ДниРождения.ДеньРождения КАК ДеньРождения,
    ДОБАВИТЬКДАТЕ(ДниРождения.ДеньРождения, ГОД, -ГОД(ДниРождения.ДеньРождения)) КАК ДеньРожденияБезГода
    ПОМЕСТИТЬ ДниРожденияБезГода
    ИЗ
    ДниРождения КАК ДниРождения
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДниРожденияБезГода.ФИО КАК ФИО,
    ДниРожденияБезГода.ДеньРождения КАК ДеньРождения,
    ДниРожденияБезГода.ДеньРожденияБезГода КАК ДеньРожденияБезГода
    ПОМЕСТИТЬ ДниРожденияБезГода2
    ИЗ
    ДниРожденияБезГода КАК ДниРожденияБезГода

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДниРожденияБезГода.ФИО,
    ДниРожденияБезГода.ДеньРождения,
    ДОБАВИТЬКДАТЕ(ДниРожденияБезГода.ДеньРожденияБезГода, ГОД, 1)
    ИЗ
    (ВЫБРАТЬ
    МИНИМУМ(ДниРожденияБезГода.ДеньРожденияБезГода) КАК ДеньРожденияБезГода
    ИЗ
    ДниРожденияБезГода КАК ДниРожденияБезГода) КАК ВложенныйЗапрос
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДниРожденияБезГода КАК ДниРожденияБезГода
    ПО ВложенныйЗапрос.ДеньРожденияБезГода = ДниРожденияБезГода.ДеньРожденияБезГода
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Т1.ФИО КАК ФИО,
    Т1.ДеньРожденияБезГода КАК ДеньРожденияБезГода,
    МИНИМУМ(Т2.ДеньРожденияБезГода) КАК ДеньРожденияБезГодаСледующий
    ПОМЕСТИТЬ ВТ_ДниРожденияСоСледующими
    ИЗ
    ДниРожденияБезГода2 КАК Т1
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДниРожденияБезГода2 КАК Т2
    ПО (Т1.ДеньРожденияБезГода < Т2.ДеньРожденияБезГода)

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ДниРожденияСоСледующими.ФИО КАК ФИО,
    ДниРождения.ДеньРождения КАК ДеньРождения,
    ДниРожденияБезГода2.ДеньРождения КАК СледующийДеньРождения,
    РАЗНОСТЬДАТ(ВТ_ДниРожденияСоСледующими.ДеньРожденияБезГода, ВТ_ДниРожденияСоСледующими.ДеньРожденияБезГодаСледующий, ДЕНЬ) КАК КоличествоДней
    ИЗ
    ВТ_ДниРожденияСоСледующими КАК ВТ_ДниРожденияСоСледующими
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДниРождения КАК ДниРождения
    ПО (ВТ_ДниРожденияСоСледующими.ФИО = ДниРождения.ФИО)
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДниРожденияБезГода2 КАК ДниРожденияБезГода2
    ПО (ВТ_ДниРожденияСоСледующими.ДеньРожденияБезГодаСледующий = ДниРожденияБезГода2.ДеньРожденияБезГода)
```
---
"нулевой" год не високосный и если брать разность между обычном годом и високосным с приведением к "нулевому", то будет неточность в 1 день.
---
А можно на примере?
---
на мисте же решили.

там особенность в том, что разность необходима без учета года рождения. Вернее учитывать год для порядка и что год может быть високосным, но разность не абсолютная а в днях относительно месяцев.
---
получился такой простой пример, по нему вопросы
1.как отображать сотрудников у которых совпадают дни рождения (день месяца)
2.как учитывать високосные года?

```1c
    Выбрать "Иванов И.И." как Сотрудник, датавремя(1990,2,23) как ДатаР поместить Таб
    объединить все Выбрать "Петров П.П.", датавремя(1995,10,1)
    объединить все Выбрать "Сидоров С.С.", датавремя(1985,11,23)
    //проверка совпадающих ДР
    объединить все Выбрать "Тест П.П.", датавремя(1995,10,1)
    ;
    выбрать первые 100
    *,
    ДЕНЬГОДА(ДатаР) как ДеньГ,
    АВТОНОМЕРЗАПИСИ() как Ном

    поместить Пром
    из таб
    упорядочить по
    3
    ;
    выбрать
    П1.Сотрудник,
    П1.ДатаР,
    п2.ДатаР как Следующая,
    П2.ДеньГ - П1.ДеньГ как Дни
    из пром П1
    левое соединение Пром П2
    по П1.Ном + 1 = п2.Ном
```
---
давненько велосипеды не изобретали? соскучились? ))