helpf.pro
Регистрация
 0 
Распечатать

Вычислить возраст человека и выразить его прописью

Основная функция будет использовать в себе три вспомогательных:

Код 1C v 8.х
 Функция РазностьМеждуДатамиВМесяцах(Дата1,Дата2)

Год1 = Год(Дата1);
Год2 = Год(Дата2);
Месяц1 = Месяц(Дата1);
Месяц2 = Месяц(Дата2);
День1 = День(Дата1);
День2 = День(Дата2);

Результат = (Год1 - Год2) * 12 + Месяц1 - Месяц2;
Если Результат < 0 Тогда Результат = 0 - Результат; КонецЕсли;
Если ((Дата1 > Дата2) И (День1 < День2)) ИЛИ ((Дата1 < Дата2) И (День1 > День2)) Тогда
Результат = Результат - 1;
КонецЕсли;
Возврат Результат;

КонецФункции


Код 1C v 8.х
 Функция ВозрастВМесяцахИГодах(Месяцы)

Структура = Новый Структура;
Структура.Вставить("Год");
Структура.Вставить("Месяц");
Структура.Месяц = Месяцы % 12;
Структура.Год = (Месяцы - Структура.Месяц) / 12;

Возврат Структура;

КонецФункции


Код 1C v 8.х
 Функция ВозрастПрописью(Структура)

Строка = "";
Если Структура.Год > 0 Тогда
ПоследняяЦифраГода = Число(Сред(Строка(Структура.Год), СтрДлина(Строка(Структура.Год)), 1));
Если (ПоследняяЦифраГода = 1) И (Структура.Год <> 11) Тогда Строка = Строка(Структура.Год) + " год"; КонецЕсли;
Если (ПоследняяЦифраГода >= 2) И (ПоследняяЦифраГода <=4) И ((Структура.Год < 12) ИЛИ (Структура.Год > 14)) Тогда Строка = Строка(Структура.Год) + " года"; КонецЕсли;
Если ((ПоследняяЦифраГода >= 5) И (ПоследняяЦифраГода <=9)) ИЛИ (ПоследняяЦифраГода = 0) Тогда Строка = Строка(Структура.Год) + " лет"; КонецЕсли;
Если (Структура.Год >= 11) И (Структура.Год <= 14) Тогда Строка = Строка(Структура.Год) + " лет"; КонецЕсли;
КонецЕсли;

Если (Структура.Год > 0) И (Структура.Год < 3) И (Структура.Месяц > 0) Тогда
Строка = Строка + ", ";
КонецЕсли;

Если (Структура.Месяц > 0) И (Структура.Год <= 3) Тогда
Если Структура.Месяц = 1 Тогда Строка = Строка + "1 месяц"; КонецЕсли;
Если (Структура.Месяц >= 2) И (Структура.Месяц <= 4) Тогда Строка = Строка + Строка(Структура.Месяц) + " месяца"; КонецЕсли;
Если Структура.Месяц >= 5 Тогда Строка = Строка + Строка(Структура.Месяц) + " месяцев"; КонецЕсли;
КонецЕсли;

Возврат Строка;

КонецФункции


А вот и основная:


Код 1C v 8.х
 Функция ВозрастВычислить(Возраст,Дата)

Месяцы = РазностьМеждуДатамиВМесяцах(Возраст,Дата);
ВозрастСтруктура = ВозрастВМесяцахИГодах(Месяцы);
ВозрастПрописью = ВозрастПрописью(ВозрастСтруктура);

Возврат ВозрастПрописью;

КонецФункции


Изменения 2011.07.26: Небольшие доработки в процедуре ВозрастПрописью - теперь всё работает правильно.
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 7841
 0 
Распечатать
Возможно, вас также заинтересует
Быстрый отбор в справочнике по первой букве 0
В статье описан способ быстрой организации отбора в списке справочника по первой букве наименования. Механизм легко дотачивается под собственные нужды. https://helpf.pro/uploads/img/_1-T4ZDj6uNPX.png // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ ...
Вывод Диаграммы График Валют, Сохранение диаграммы, графиков и гистограмм в виде Картинки 0
Алгоритм обработки выполняет запрос к регистру сведений " курсы валют" за определенный пользователем период. Полученные данные выборки в цикле выводятся в элемент экранной формы " диаграмма" в режиме построения...
Вывод картинки в строках отчета на СКД 4
В этом примере показан метод вывода в строку отчета картинки, вид которой завист от значения другого поля. Ради примера, в отчет выведем справоник «Банки» - реквизит «Ссылка» и картинку возле этого реквизита. Вид...
Выполнить движений Приход или Расход в регистр остатков 0
Методы ДвижениеПриходВыполнить и ДвижениеРасходВыполнить, доступны только при проведении документа в предопределенной процедуре ОбработкаПроведения. Регистр.ТовЗап.Склад = Склад; ВыбратьСтроки(); ...
Горячие клавиши 1С Разработчику [ Конфигуратор ] 20
Основные команды: Кодирование: Ctrl+Пробел - вызов подсказки Ctrl+Q - вызов шаблона Ctrl+F1 - поиск в синтакс-помощнике Ctrl + L - удалить текущую строку Alt+Shift+F - отформатировать код Исследование: F12 - ставим курсор на...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.