Помогите пожалуйста, изучаю самостоятельно...
Дано: Справочник Сотрудников: ФИО / Дата рождения
1) Написать запрос, который вернет всех сотрудников, у кого ДР в ближайших месяц
2) Написать запрос, который вернет всех сотрудников, у которых в ближайший месяц будет юбилей (исполняется 30 лет, 40, 50.. и тд.)
---
так, на вскидку:
1.

```1c
    ВЫБРАТЬ
    Сотрудники.Ссылка КАК Ссылка,
    Сотрудники.ДатаРождения КАК ДатаРождения
    ИЗ
    Справочник.Сотрудники КАК Сотрудники
    ГДЕ
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекДата, ГОД), ДЕНЬ, РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, ГОД),Сотрудники.ДатаРождения, ДЕНЬ)) МЕЖДУ &ТекДата И ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, 30)
```

2.

```1c
    ВЫБРАТЬ
    Сотрудники.Ссылка КАК Ссылка,
    Сотрудники.ДатаРождения КАК ДатаРождения
    ИЗ
    Справочник.Сотрудники КАК Сотрудники
    ГДЕ
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекДата, ГОД), ДЕНЬ, РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, ГОД), Сотрудники.ДатаРождения, ДЕНЬ)) МЕЖДУ &ТекДата И ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, 30)
    И (ГОД(&ТекДата) - ГОД(Сотрудники.ДатаРождения)) / 10 = (ВЫРАЗИТЬ((ГОД(&ТекДата) - ГОД(Сотрудники.ДатаРождения)) / 10 КАК ЧИСЛО(10, 0)))
```
---
1) Написать запрос, который вернет всех сотрудников, у кого ДР в ближайших месяц
Расшифруйте понятие "ближайший месяц".
1. В этом месяце.
2. 30 дней с текущей даты.
---
30 дней с текущей даты
---
так, на вскидку:
1.

```1c
    ВЫБРАТЬ
    Сотрудники.Ссылка КАК Ссылка,
    Сотрудники.ДатаРождения КАК ДатаРождения
    ИЗ
    Справочник.Сотрудники КАК Сотрудники
    ГДЕ
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекДата, ГОД), ДЕНЬ, РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, ГОД),Сотрудники.ДатаРождения, ДЕНЬ)) МЕЖДУ &ТекДата И ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, 30)
```

2.

```1c
    ВЫБРАТЬ
    Сотрудники.Ссылка КАК Ссылка,
    Сотрудники.ДатаРождения КАК ДатаРождения
    ИЗ
    Справочник.Сотрудники КАК Сотрудники
    ГДЕ
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекДата, ГОД), ДЕНЬ, РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, ГОД), Сотрудники.ДатаРождения, ДЕНЬ)) МЕЖДУ &ТекДата И ДОБАВИТЬКДАТЕ(&ТекДата, ДЕНЬ, 30)
    И (ГОД(&ТекДата) - ГОД(Сотрудники.ДатаРождения)) / 10 = (ВЫРАЗИТЬ((ГОД(&ТекДата) - ГОД(Сотрудники.ДатаРождения)) / 10 КАК ЧИСЛО(10, 0)))
```
---
"ВЫБРАТЬ
| Сотрудники.Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ДатаРождения МЕЖДУ &ДатаНачалаМесяца И &ДатаОкончанияМесяца"
---
а второй?
---
```1c
    "ВЫБРАТЬ
    | Сотрудники.Ссылка
    |ИЗ
    | Справочник.Сотрудники КАК Сотрудники
    |ГДЕ
    | Сотрудники.ДатаРождения МЕЖДУ &ДатаНачалаМесяца И &ДатаОкончанияМесяца
    | И (РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, &ДатаНачалаМесяца, Год) = 30
    | ИЛИ РАЗНОСТЬДАТ(Сотрудники.ДатаРождения, &ДатаНачалаМесяца, Год) = 40
    | ИЛИ ... )"
```
---
(6) а почему разные решения? какое лучше?
---
Надо тестировать, а вообще где писать меньше, то и лучше.
---
И что, взлетит? Что такое &ДатаНачалаМесяца и &ДатаОкончанияМесяца? Период, который выбирается в отчете? Например, 01.12.2021 - 31.12.2021? И даты рождения сотрудников должны попадать в этот период? То есть, эти сотрудники еще не родились даже?
---
какое решение вы предлагаете?
---
ГДЕ
    МЕСЯЦ(Сотрудник.ДатаРождения) = МЕСЯЦ(&ДатаНачалаМесяца)
---
Но это не будет работать в случае (12) (30 дней с текущей даты), вообще тема тут всплывала не раз, поиском пробовали пользоваться?
---
А второй за деньги)))
Имейте терпение, думаю
---
```1c
    "ВЫБРАТЬ
    | Сотрудники.Ссылка
    |ИЗ
    | Справочник.Сотрудники КАК Сотрудники
    |ГДЕ
    | Пользователи.ФизЛицо.ДатаРождения МЕЖДУ &ДатаНачалаМесяца И &ДатаОкончанияМесяца
    | И (ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 10) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 20) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 30) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 40) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 50) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 60) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 70) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 80) = &ДатаНачалаМесяца
    | ИЛИ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Сотрудники.ДатаРождения, МЕСЯЦ), ГОД, 90) = &ДатаНачалаМесяца)
```
---
а условие , если будет не 10, а 5 - код перелопатить ?

или слабО подумать, что заказчик передумал :)

55 - это же хороший юбилей.
---
написано же 30, 40, 50 и тд, то есть с шагом 10
---
и ?

55 - на вас такую обиду затянет....
а если это главбух или жена боса ?

по условию - создайте константу,
 куда будут вводится условия "юбилея" или поздравлений , типа "25лет совместной жизни"

и тогда код будет работать не от сиюминутных условий, а от данных, которые имеют значение и вес.
---
у вас должно работать мышление не от циферок 5,10,25

а от реальных условий - что если , или, тогда, а может :)
---
30 дней с текущей даты

как будет с февралем ?
как будет с выходным, рабочим, праздничным или просто пикником :)