Имя: Пароль:
1C
1С v8
Подскажите пожалуйста какой применяется тут алгоритм, как тут считается?
, ,
0 fpopulaf
 
28.05.13
08:27
ВЫБРАТЬ
   СотрудникиОрганизаций.Код,
   СотрудникиОрганизаций.Наименование,
       
   ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/525600)-0.499999 КАК ЧИСЛО(15,0)) КАК Лет,
   ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ЧАС)/730)-0.499999 КАК ЧИСЛО(15,0)) - ВЫРАЗИТЬ(РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ДЕНЬ)/365- 0.499999  КАК ЧИСЛО(5,0))*12   КАК Месяцев,
   ВЫБОР
    КОГДА
   ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/1440)-0.499999 КАК ЧИСЛО(15,0))-(ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/525600)-0.499999 КАК ЧИСЛО(15,0)))*365 - (ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ЧАС)/730)-0.499999 КАК ЧИСЛО(15,0)) - ВЫРАЗИТЬ(РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ДЕНЬ)/365- 0.499999  КАК ЧИСЛО(5,0))*12)*31 >0
   ТОГДА ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/1440)-0.499999 КАК ЧИСЛО(15,0))-(ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/525600)-0.499999 КАК ЧИСЛО(15,0)))*365 - (ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ЧАС)/730)-0.499999 КАК ЧИСЛО(15,0)) - ВЫРАЗИТЬ(РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), ДЕНЬ)/365- 0.499999  КАК ЧИСЛО(5,0))*12)*31
   ИНАЧЕ 0
  КОНЕЦ как Дней,
   
   

   
   
   СотрудникиОрганизаций.ДатаПриемаНаРаботу,
   СотрудникиОрганизаций.Актуальность
ИЗ
   Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
1 vicof
 
28.05.13
08:35
Алгоритм Байеса-Мура с поправкой на лунный календарь
2 Jonny_Khomich
 
28.05.13
08:36
(1) на пол офиса засмеялся после твоего сообщения))
3 Ненавижу 1С
 
гуру
28.05.13
08:38
(0) несмещенная пiздиалинезация второго порядка
4 mikecool
 
28.05.13
08:52
стаж это блеать, стаж!!!
обломал кайф?
5 DarKySiK
 
28.05.13
09:02
Сорри за офф, но ТС - а что твой ник означает)? А по сабжу - (4) прав)
6 Godofsin
 
28.05.13
09:12
(5) ф попу лаф )))) жеееееесть)))))
7 magicSan
 
28.05.13
09:20
-0.499999 - почему?
8 DarKySiK
 
28.05.13
09:21
(7) отброс дробной части в запросе
9 DarKySiK
 
28.05.13
09:22
+(8) вроде... не вникала в тонкости этого запроса, но обычно этот прием используется для нестандартного округления
10 magicSan
 
28.05.13
09:28
круто не знал
11 magicSan
 
28.05.13
09:34
пересчитал - округляет верно \(^_^)/
12 magicSan
 
28.05.13
09:39
а если год високосный и человек отработал 365 - по алгоритму получается что он отработал год ....
13 mikecool
 
28.05.13
09:41
(12) это правила расчета стажа - любой год >= 365 считается годом
14 drcrasher
 
28.05.13
09:44
прикольно, но почему считается от жестко прописанной даты в запросе?
15 DarKySiK
 
28.05.13
09:51
(14) В отчете Списки сотрудников организации это нормально считается. А тут видимо затычка для чего-то)
16 fpopulaf
 
28.05.13
10:27
ник просто удобен везде его использую, високосный год 1 С не считает сама и вообще некоторых сотрудников правильно некоторых пару дней +-  а некоторых полный бред выдаёт цифры с потолка, а теперь по делу ктонить скажет? спасибо
17 fpopulaf
 
28.05.13
10:33
как она считает не могу понять
18 fpopulaf
 
28.05.13
10:39
требуют описание алгоритма простыми словами
19 oreshka7387
 
28.05.13
10:40
это типовой запрос??? пойду проверять нашу зуп...
20 fpopulaf
 
28.05.13
10:42
нет
21 fpopulaf
 
28.05.13
10:42
не типовой
22 Бледно Золотистый
 
28.05.13
10:43
(18) А вы по должности кто?
23 oreshka7387
 
28.05.13
10:44
фух... ну тогда про логику обращения к конкретной дате нужно у разработчика спрашивать ))) у меня ощущение, что в запросе остались "тестовые" данные
24 fpopulaf
 
28.05.13
11:17
только это можно    ДАТАВРЕМЯ(2013, 05, 08) заменить на
&ТекущаяДата
25 fpopulaf
 
28.05.13
11:19
функцию нашёл в интернете а вот принцип как считает не могу понять кого то правильно кого то нет причём расхождение не 2-3 дня а годы
26 EvgenOrvin
 
28.05.13
11:33
Попробую :)
ВЫРАЗИТЬ((РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(2013, 05, 08), МИНУТА)/525600)-0.499999 КАК ЧИСЛО(15,0))
Итак:
Выразить как число максимальной длины 15, разность дат
8 мая 2013 - дата приема на работу с точностью до минуты
27 EvgenOrvin
 
28.05.13
11:33
И так далее..
28 EvgenOrvin
 
28.05.13
11:36
525600 = 24*60*365 - количество минут в Году, минус 0,4999(как я понимаю убирает из получившегося числа время?)
29 fpopulaf
 
28.05.13
11:38
это для  наименьшой погрешности
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан