1С ЗУП 3.1 Программно получить возраст сотрудника

В общем модуле ФизическиеЛицаЗарплатаКадрыКлиентСервер, есть уже готовая функция получения возраста сотрудника.

Выглядит она так:

// Рассчитывает количество полных лет человека по дате его рождения.
// См. также ФизическиеЛицаЗарплатаКадры.Возраст.
//
// Параметры:
//  ДатаРождения - Дата - дата рождения человека, возраст которого нужно рассчитать,
//  ДатаВозраста - Дата - дата, на которую нужно рассчитать возраст.
// 
// Возвращаемое значение:
//  Число, Неопределено - количество полных лет на указанную дату,
//						Неопределено, если дата рождения не заполнена.
//
Функция Возраст(ДатаРождения, ДатаВозраста) Экспорт
	
	ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
		"ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст", "ДатаРождения", ДатаРождения, Новый ОписаниеТипов("Дата"));
	ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
		"ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст", "ДатаВозраста", ДатаВозраста, Новый ОписаниеТипов("Дата"));
	
	Если Не ЗначениеЗаполнено(ДатаРождения) Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Возраст = Год(ДатаВозраста) - Год(ДатаРождения);
	Если Месяц(ДатаРождения) > Месяц(ДатаВозраста) Тогда
		Возраст = Возраст - 1;
	Иначе
		Если Месяц(ДатаРождения) = Месяц(ДатаВозраста) Тогда
			Если День(ДатаРождения) > День(ДатаВозраста) Тогда
				Возраст = Возраст - 1;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;

	Возврат Макс(Возраст, 0);
	
КонецФункции

Можно обратиться к ней следующем образом:

Возраст = ФизическиеЛицаЗарплатаКадрыКлиентСервер.Возраст(СтрокаВыборки.ДатаРождения, ТекущаяДата());

В запросе возраст можно получить, как разность дат:

"ВЫБРАТЬ
		|	РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ТекущаяДата, ГОД) КАК Возраст
		|ИЗ
		|	Справочник.ФизическиеЛица КАК ФизическиеЛица";

Похожие записи

Один комментарий

  1. «В запросе возраст можно получить, как разность дат: ВЫБРАТЬ РАЗНОСТЬДАТ(»
    — И ребенок, родившийся 31 декабря, на следующий день становится годовалым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *