Имя: Пароль:
1C
1C 7.7
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;
   КонецЕсли;    
КонецПроцедуры //ПолучитьСтажЗаПериод