Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июл 2021, 03:11

Неправильно считает возраст в СКД

Автор Алексей_1985_06, 11 янв 2021, 16:12

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем привет! Подскажите в чем может быть ошибка:
1. Есть процедура в общем модуле (расчет возраста сотрудника)
Функция ВозрастСотрудника(ДатаРождения) Экспорт
Если ДатаРождения <> '00010101000000' Тогда // Проверка на пустую дату
ДатаТекущая = Год(ТекущаяДата())*10000 + Месяц(ТекущаяДата())*100 + День(ТекущаяДата());
ДатаИскомая = Год(ДатаРождения)*10000 + Месяц(ДатаРождения)*100 + День(ДатаРождения);   
КоличествоЛет = Цел((ДатаТекущая-ДатаИскомая)/10000); 
Возраст = СтрокаСЧислом("; %1 год;; %1 года; %1 лет;", КоличествоЛет, ВидЧисловогоЗначения.Количественное, "L=ru");
Возврат (Возраст)
КонецЕсли;
КонецФункции

2. В СКД создал вычисляемое поле "Возраст" Выражение: ВызовСервера.ВозрастСотрудника (Сотрудник.ДатаРождения)
Но почему-то расчет возраста сотрудника (у которого дата рождения отсутствует) все равно происходит...неправильно (скрин во вложении)
Подскажите в чем "затыка" ?

LexaK

попробуйте так

Функция ВозрастСотрудника(ДатаРождения) Экспорт

Если ЗначениеЗаполнено(ДатаРождения) Тогда // Проверка на пустую дату
    ДатаТекущая = Год(ТекущаяДата())*10000 + Месяц(ТекущаяДата())*100 + День(ТекущаяДата());
    ДатаИскомая = Год(ДатаРождения)*10000 + Месяц(ДатаРождения)*100 + День(ДатаРождения);   
    КоличествоЛет = Цел((ДатаТекущая-ДатаИскомая)/10000); 
    Возраст = СтрокаСЧислом("; %1 год;; %1 года; %1 лет;", КоличествоЛет, ВидЧисловогоЗначения.Количественное, "L=ru");   
Иначе
Возраст = "<Нет даты рождения>";
КонецЕсли;

    Возврат Возраст;

КонецФункции
ответ Понравился? (в смысле пригодился?)

Алексей_1985_06

Цитата: LexaK от 12 янв 2021, 10:26
попробуйте так

Функция ВозрастСотрудника(ДатаРождения) Экспорт

Если ЗначениеЗаполнено(ДатаРождения) Тогда // Проверка на пустую дату
    ДатаТекущая = Год(ТекущаяДата())*10000 + Месяц(ТекущаяДата())*100 + День(ТекущаяДата());
    ДатаИскомая = Год(ДатаРождения)*10000 + Месяц(ДатаРождения)*100 + День(ДатаРождения);   
    КоличествоЛет = Цел((ДатаТекущая-ДатаИскомая)/10000); 
    Возраст = СтрокаСЧислом("; %1 год;; %1 года; %1 лет;", КоличествоЛет, ВидЧисловогоЗначения.Количественное, "L=ru");   
Иначе
Возраст = "<Нет даты рождения>";
КонецЕсли;

    Возврат Возраст;

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


LexaK что бы я без Вас делал..... Очередной раз ОГРОМНОЕ ВАМ СПАСИБО ЗА ПОМОЩЬ !!!  :ooifh::ooifh::ooifh:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск