Функция ПолучитьПолноеЧислоЛетСДаты(Знач ДатаНачала, Знач ДатаОкончания) Экспорт ВозрастЛет = Год(ДатаОкончания) - Год(ДатаНачала); Если Месяц(ДатаОкончания) < Месяц(ДатаНачала) Или Месяц(ДатаОкончания) = Месяц(ДатаНачала) И День(ДатаОкончания) < День(ДатаНачала) Тогда ВозрастЛет = ВозрастЛет - 1; КонецЕсли; Возврат ВозрастЛет; КонецФункции Функция ПолучитьВозрастСтрокой(Знач ДатаРождения, Знач ДатаОтсчета = Неопределено, Выводить0Лет = Ложь, ТолькоПолныхЛет = Ложь) Экспорт Если Не ЗначениеЗаполнено(ДатаРождения) Тогда Возраст = ""; Иначе Если Не ЗначениеЗаполнено(ДатаОтсчета) Тогда ДатаОтсчета = НачалоДня(ТекущаяДата()); КонецЕсли; ВозрастЛет = ПолучитьПолноеЧислоЛетСДаты(ДатаРождения, ДатаОтсчета); Если ВозрастЛет >= 0 Тогда Возраст = Формат(ВозрастЛет,"ЧГ=0; ЧН="); Послед = Число(Прав(Возраст,2)); Если Послед > 20 Тогда Послед = Послед % 10; КонецЕсли; // Склонение года Если Послед = 1 Тогда Возраст = Возраст + " " + НСтр("ru='год'"); ИначеЕсли Послед = 0 Или Послед > 4 Тогда Возраст = Возраст + " " + НСтр("ru='лет'"); Иначе Возраст = Возраст + " " + НСтр("ru='года'"); КонецЕсли; Если ВозрастЛет = 0 И Не Выводить0Лет Тогда Возраст = ""; КонецЕсли; // Для детей до 3 лет выводится количество месяцев Если ВозрастЛет < 3 Тогда ВозрастМесяцев = 0; // Находим последний день рождения. мДата = ДатаРождения; Пока мДата <= ДатаОтсчета Цикл мДата = ДобавитьМесяц(мДата, 12); КонецЦикла; ПоследнийДР = ДобавитьМесяц(мДата, -12); мДата = ДатаОтсчета; Пока Истина Цикл мДата = ДобавитьМесяц(мДата,-1); Если мДата > ПоследнийДР Тогда ВозрастМесяцев = ВозрастМесяцев + 1; Иначе Прервать; КонецЕсли; КонецЦикла; Если ВозрастМесяцев = 0 Тогда // 0 месяцев - выводим количество дней ВозрастДней = Цел((ДатаОтсчета- ДатаРождения) / 86400); Возраст = Формат(ВозрастДней,"ЧН=0") + " " + НСтр("ru='дней'"); ИначеЕсли ВозрастЛет = 0 Или Не ТолькоПолныхЛет Тогда Возраст = Возраст + " " + Формат(ВозрастМесяцев,"ЧН=0"); // Склонение месяца Если ВозрастМесяцев = 1 Тогда Возраст = Возраст + " " + НСтр("ru='месяц'"); ИначеЕсли ВозрастМесяцев >= 2 И ВозрастМесяцев <= 4 Тогда Возраст = Возраст + " " + НСтр("ru='месяца'"); Иначе Возраст = Возраст + " " + НСтр("ru='месяцев'"); КонецЕсли; КонецЕсли; КонецЕсли; Иначе Возраст = ""; КонецЕсли; КонецЕсли; Возврат Возраст; КонецФункцииПроцедура ВозрастТек()/// Значение строкой типа 45 лет 21 год Объект.Возраст = ПолучитьВозрастСтрокой(ДатаРождения);КонецПроцедуры |