Вычисление стажа
16.11.2009
16:29
#1
Самописная конфа версии 7.7
Суть : нужно любым образом сделать вычисление стажа сотрудника на текущуюю дату
Вычисление идет от даты приема, я вот написал, но ето не очень:
Цел((ТекущаяДата()-ДатаПрийома)/365.25) - выч. кол лет, такой же принцип и для месяцев, дней..
Если есть другие способы, то напишите, пожалуйста...
Суть : нужно любым образом сделать вычисление стажа сотрудника на текущуюю дату
Вычисление идет от даты приема, я вот написал, но ето не очень:
Цел((ТекущаяДата()-ДатаПрийома)/365.25) - выч. кол лет, такой же принцип и для месяцев, дней..
Если есть другие способы, то напишите, пожалуйста...
16.11.2009
16:58
#2
"Функция РазницаМесяцев(Дата1, Дата2)
Возврат 12*(ДатаГод(Дата2) - ДатаГод(Дата1)) + ДатаМесяцы(Дата2) - ДатаМесяц(Дата1);
КонецФункции"
Возврат 12*(ДатаГод(Дата2) - ДатаГод(Дата1)) + ДатаМесяцы(Дата2) - ДатаМесяц(Дата1);
КонецФункции"
16.11.2009
17:13
#3
Мне нужно типа вот:
ф.эл, текстовое поле, в котором обчисл. стаж _Лет, 2 текстовое поле - _Месяцев , 3 -_Дней
Но количество целое не подходит, тоесть надо типа 2 года 3 месяца 13 дней, а не 132 месяца..
ф.эл, текстовое поле, в котором обчисл. стаж _Лет, 2 текстовое поле - _Месяцев , 3 -_Дней
Но количество целое не подходит, тоесть надо типа 2 года 3 месяца 13 дней, а не 132 месяца..
16.11.2009
17:22
#4
> Мне нужно типа вот:
> ф.эл, текстовое поле, в котором обчисл. стаж _Лет, 2 текстовое поле - _Месяцев , 3 -_Дней
> Но количество целое не подходит, тоесть надо типа 2 года 3 месяца 13 дней, а не 132 месяца..
подумать трудно?
> ф.эл, текстовое поле, в котором обчисл. стаж _Лет, 2 текстовое поле - _Месяцев , 3 -_Дней
> Но количество целое не подходит, тоесть надо типа 2 года 3 месяца 13 дней, а не 132 месяца..
подумать трудно?
16.11.2009
17:51
#5
Ой, извиняюсь, все круто, только вот в чем загвоздка:
если обчисляю дни, и сегодня 16, а датаприема 19, то мне выбивает -3 дня
если обчисляю дни, и сегодня 16, а датаприема 19, то мне выбивает -3 дня
16.11.2009
18:11
#6
"Функция глФормаМножественногоЧисла(Слово1,Слово2,Слово3,ЦелоеЧисло) Экспорт
Если ЦелоеЧисло<>Цел(ЦелоеЧисло) Тогда
// для нецелых чисел - всегда вторая форма
Возврат Слово2;
КонецЕсли;
// остаток
Остаток = ЦелоеЧисло%10;
Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда
// для второго десятка - всегда третья форма
Возврат Слово3;
ИначеЕсли Остаток=1 Тогда
Возврат Слово1;
ИначеЕсли (Остаток>1) И (Остаток<5) Тогда
Возврат Слово2;
Иначе
Возврат Слово3;
КонецЕсли;
КонецФункции
Функция глПредставлениеСтажа(Знач ДатаСтажа,ТекстСтажа,Лет=0,Месяцев=0,Дней=0) Экспорт
Лет = 0; Месяцев = 0; Дней = 0;
// если в тексте стажа пустая строка, то стаж не задан
Если ПустаяСтрока(ТекстСтажа)=1 Тогда
Возврат "<<Стаж не задан>>"
КонецЕсли;
глРазобратьРазностьДат(ДатаСтажа,Дата(ТекстСтажа),Лет,Месяцев,Дней);
Возврат """" +Лет +" "+глФормаМножественногоЧисла("год","года","лет",Лет)
+" "+Месяцев+" "+глФормаМножественногоЧисла("месяц","месяца","месяцев",Месяцев)
+" "+Дней +" "+глФормаМножественногоЧисла("день","дня","дней",Число(Дней))
КонецФункции"
Если ЦелоеЧисло<>Цел(ЦелоеЧисло) Тогда
// для нецелых чисел - всегда вторая форма
Возврат Слово2;
КонецЕсли;
// остаток
Остаток = ЦелоеЧисло%10;
Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда
// для второго десятка - всегда третья форма
Возврат Слово3;
ИначеЕсли Остаток=1 Тогда
Возврат Слово1;
ИначеЕсли (Остаток>1) И (Остаток<5) Тогда
Возврат Слово2;
Иначе
Возврат Слово3;
КонецЕсли;
КонецФункции
Функция глПредставлениеСтажа(Знач ДатаСтажа,ТекстСтажа,Лет=0,Месяцев=0,Дней=0) Экспорт
Лет = 0; Месяцев = 0; Дней = 0;
// если в тексте стажа пустая строка, то стаж не задан
Если ПустаяСтрока(ТекстСтажа)=1 Тогда
Возврат "<<Стаж не задан>>"
КонецЕсли;
глРазобратьРазностьДат(ДатаСтажа,Дата(ТекстСтажа),Лет,Месяцев,Дней);
Возврат """" +Лет +" "+глФормаМножественногоЧисла("год","года","лет",Лет)
+" "+Месяцев+" "+глФормаМножественногоЧисла("месяц","месяца","месяцев",Месяцев)
+" "+Дней +" "+глФормаМножественногоЧисла("день","дня","дней",Число(Дней))
КонецФункции"
Читают тему
(гостей: 1)