1С ЗУП 3.1 Программно получить возраст сотрудника
В общем модуле ФизическиеЛицаЗарплатаКадрыКлиентСервер, есть уже готовая функция получения возраста сотрудника.
Выглядит она так:
// Рассчитывает количество полных лет человека по дате его рождения.
// См. также ФизическиеЛицаЗарплатаКадры.Возраст.
//
// Параметры:
// ДатаРождения - Дата - дата рождения человека, возраст которого нужно рассчитать,
// ДатаВозраста - Дата - дата, на которую нужно рассчитать возраст.
//
// Возвращаемое значение:
// Число, Неопределено - количество полных лет на указанную дату,
// Неопределено, если дата рождения не заполнена.
//
Функция Возраст(ДатаРождения, ДатаВозраста) Экспорт
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
"ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст", "ДатаРождения", ДатаРождения, Новый ОписаниеТипов("Дата"));
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
"ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст", "ДатаВозраста", ДатаВозраста, Новый ОписаниеТипов("Дата"));
Если Не ЗначениеЗаполнено(ДатаРождения) Тогда
Возврат Неопределено;
КонецЕсли;
Возраст = Год(ДатаВозраста) - Год(ДатаРождения);
Если Месяц(ДатаРождения) > Месяц(ДатаВозраста) Тогда
Возраст = Возраст - 1;
Иначе
Если Месяц(ДатаРождения) = Месяц(ДатаВозраста) Тогда
Если День(ДатаРождения) > День(ДатаВозраста) Тогда
Возраст = Возраст - 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Макс(Возраст, 0);
КонецФункции
Можно обратиться к ней следующем образом:
Возраст = ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст(СтрокаВыборки.ДатаРождения, ТекущаяДата());
В запросе возраст можно получить, как разность дат:
"ВЫБРАТЬ
| РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) КАК Возраст
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица";
«В запросе возраст можно получить, как разность дат: ВЫБРАТЬ РАЗНОСТЬДАТ(»
— И ребенок, родившийся 31 декабря, на следующий день становится годовалым.