Перем Год;

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Пользователи.Наименование КАК Наименование,
    | Пользователи.Ссылка КАК Ссылка,
    | РАЗНОСТЬДАТ(Пользователи.ДатаРождения, &ТекущаяДата, ГОД) КАК Поле1,
    | ДЕНЬ(Пользователи.ДатаРождения) КАК Поле2
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    |ГДЕ
    | ДОБАВИТЬКДАТЕ(Пользователи.ДатаРождения, ГОД, &ТекущийГод - ГОД(Пользователи.ДатаРождения)) МЕЖДУ &ДатаНачала И &ДатаКонец
    |
    |УПОРЯДОЧИТЬ ПО
    | Поле2";
    Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаКонец",КонецДня(ТекущаяДата()+3*86400));
    Запрос.УстановитьПараметр("ТекущийГод", Год(ТекущаяДата()));
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());

    Результат= Запрос.Выполнить();
    Выборка= Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если Выборка.Поле1 >=5 и Выборка.Поле1 <=20 ИЛИ Выборка.Поле1 =0 Тогда
    Год = "лет";
    ИначеЕсли Выборка.Поле1= 1 Тогда
    Год = "год";
    ИначеЕсли Выборка.Поле1>=2 и Выборка.Поле1 <=4 Тогда
    Год = "года";
    Иначе Год = "йцу";
    КонецЕсли;

    Сообщить("У сотрудника "+ Выборка.Ссылка+ " сегодня ДР ему "+ Выборка.Поле1 + Год );

    КонецЦикла;
```
---
Поле1 число, а Прав применяется для строки
---
а где код в котором "Прав(Поле,1)" ?
---
В этом случае выдаёт ошибку, операция сравнения доступна для примитивных типов значений

Если Прав(Выборка.Поле1,1) >=5 и Прав(Выборка.Поле1,2) <=20 ИЛИ Прав(Выборка.Поле1,1) =0 Тогда
Год = "лет";
ИначеЕслиПрав(Выборка.Поле1,1) = 1 Тогда
Год = "год";
ИначеЕсли Прав(Выборка.Поле1,1) >=2 и Прав(Выборка.Поле1,1) <=4 Тогда
Год = "года";
Иначе Год = "йцу";
КонецЕсли;
---
%
---
Поле1 число, а Прав применяется для строки
---
Прав применяется для строки Нынешние "программисты" такими мелочами не заморачиваются - об этом пусть "умная 1С" думает, а он смотрит на число, например, 33 и видит правую цифру - 3. Фсё, о чем тут думать, быстренько говнокод пилить надо! :-)
---
остаток от деления на 100 это и есть последние цифры года
---
Используй ПолучитьСклоненияСтрокиПоЧислу

Как пример:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Пользователи.Наименование КАК Наименование,
    | Пользователи.Ссылка КАК Ссылка,
    | Пользователи.ДатаРождения КАК ДатаРождения
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    |ГДЕ
    | Пользователи.ДатаРождения МЕЖДУ &ДатаНачала И &ДатаКонец
    |
    |УПОРЯДОЧИТЬ ПО
    | Пользователи.ДатаРождения";

    Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаКонец",КонецДня(ТекущаяДата()+3*86400));

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    // К примеру количество лет составило: 21
    КоличествоЛет = Год(ТекущаяДата()) - Год(Выборка.ДатаРождения);

    // К примеру количество лет строкой получилось: 21 год
    КоличествоЛетСтрокой = ПолучитьСклоненияСтрокиПоЧислу("год", КоличествоЛет);

    // Сообщение: Сотруднику Фамилия Имя Отчество 21 год
    Сообщить(СтрШаблон("Сотруднику %1 %2", Выборка.Наименование, КоличествоЛетСтрокой));

    КонецЦикла;
```