|
v7: Расчет стажа ..... |
☑ |
0
boris
02.02.12
✎
06:08
|
Процедура ПриОкончанииРедактированияСтроки(Флаг);
ДнейВсего=(Дата(Дата2)-Дата(Дата1));
Лет=Цел(ДнейВсего)/365;
Месяц=Цел((Цел(ДнейВсего)-Цел(ЛетНе))*365)/30;
Дней =(Цел(ДнейВсего)-Цел(ЛетНе)-Цел(Месяц))/30;
КонецПроцедуры
не могу понять где я не прав
|
|
1
SeraFim
02.02.12
✎
06:14
|
Переменная неопределена "ЛетНе"
уточняй - в чем проблема-то?) ошибки валятся. или результаты не сходятся?
|
|
2
boris
02.02.12
✎
07:03
|
Ой
Процедура ПриОкончанииРедактированияСтроки(Флаг);
ДнейВсего=(Дата(Дата2)-Дата(Дата1));
Лет=Цел(ДнейВсего)/365;
Месяц=Цел((Цел(ДнейВсего)-Цел(Лет))*365)/30;
Дней =(Цел(ДнейВсего)-Цел(Лет)-Цел(Месяц))/30;
КонецПроцедуры
результату не правильно
|
|
3
de Bug
02.02.12
✎
07:17
|
Процедура ПриОкончанииРедактированияСтроки(Флаг);
ДнейВсего=Дата2-Дата1+1;
Лет=Цел(ДнейВсего/365);
Месяц=Цел(ДнейВсего%365)/30;
Дней =ДнейВсего-Лет*365-Месяц*30;
КонецПроцедуры
|
|
4
Wobland
02.02.12
✎
07:19
|
когда уже будем на 86400 для ДнейВсего делать?
|
|
5
Wobland
02.02.12
✎
07:19
|
(4) *делить на 86400
|
|
6
de Bug
02.02.12
✎
07:21
|
(5) Это семерка...
(3) Поправочка.
Месяц=Цел(ДнейВсего%365/30);
или
Месяц=Цел((ДнейВсего - Лет*365)/30);
|
|
7
Эмбеддер
02.02.12
✎
07:44
|
Бред
|
|
8
ParaWiz
02.02.12
✎
07:57
|
кстати а почему 30 а не 30.25 как принято?
|
|
9
KishMish
02.02.12
✎
07:58
|
(0)
везде не прав
надо наверное так
ДнейВсего=(Дата(Дата2)-Дата(Дата1));
Лет=Цел(ДнейВсего/365);
ОставшихсяДней=(ДнейВсего-Лет*365);
Месяцев=Цел(ОставшихсяДней/30);
Дней =ОставшихсяДней-Месяцев*30;
|
|
10
napagokc
02.02.12
✎
08:07
|
Пример из справки 8.2:
Процедура ПолучитьСтажЗаПериод(Знач ДатаОкончанияПериода,
Знач ДатаНачалаПериода,
Лет=0, Месяцев=0, Дней=0) Экспорт
Если ДатаОкончанияПериода >= ДатаНачалаПериода тогда
Лет1 = Год(ДатаОкончанияПериода);
Месяцев1 = Месяц(ДатаОкончанияПериода);
Если НачалоДня(ДатаОкончанияПериода) <> НачалоДня(КонецМесяца(ДатаОкончанияПериода)) Тогда
Дней1 = День(ДатаОкончанияПериода);
Иначе
Дней1 = 30;//В каждом месяце ровно 30 дней
КонецЕсли;
Лет2 = Год(ДатаНачалаПериода);
Месяцев2 = Месяц(ДатаНачалаПериода);
Если НачалоДня(ДатаНачалаПериода) <> НачалоДня(КонецМесяца(ДатаНачалаПериода)) Тогда
Дней2 = День(ДатаНачалаПериода);
Иначе
Дней2 = 30;//В каждом месяце ровно 30 дней
КонецЕсли;
Лет = Лет1 - Лет2;
Месяцев = Месяцев1 - Месяцев2;
Дней = Дней1 - Дней2 + 1; //1 день на увольнение
Иначе
Лет = 0;
Месяцев = 0;
Дней = 0;
КонецЕсли;
КонецПроцедуры //ПолучитьСтажЗаПериод
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший