Имя: Пароль:
1C
1С v8
Помогите с запросом
0 iwannafly90
 
18.09.14
16:43
Всем привет.
Вот запрос.
ВЫБРАТЬ
    ДИТ_ОтработанноеВремя.Физлицо,
    КОЛИЧЕСТВО(*) КАК КоличествоДнейВОтпуске
ИЗ
    РегистрНакопления.ДИТ_ОтработанноеВремя КАК ДИТ_ОтработанноеВремя
ГДЕ
    ДИТ_ОтработанноеВремя.Статус = &ЕжегодныйОтпуск
    И ГОД(ДИТ_ОтработанноеВремя.Период) = &ПериодГОД
    И ДИТ_ОтработанноеВремя.Физлицо = &Физлицо

СГРУППИРОВАТЬ ПО
    ДИТ_ОтработанноеВремя.Физлицо


В данном запросе по физлицу считается количество дней, когда он был в отпуске.
Проблема в том, что строки считаются включительно. Т.е. например, человек отдыхал с 7 по 20, должно получиться 13 дней, а выходит 14. Как получить эти 13?
Проблема главным образом в том, что данные берутся за год, а за год человек может уйти в отпуск несколько раз и за каждый период отпуска добавляется лишнее значение
1 Балоун
 
18.09.14
16:45
как насчёт оборотов?
2 SUA
 
18.09.14
16:46
с 7 по 20 включительно - это 14 дней
3 iwannafly90
 
18.09.14
16:47
(2) Да, а мне надо, чтобы не было этого включительно. Т.е. итоговая цифра должна быть 13
4 Gogger
 
18.09.14
16:48
"оберни" запрос в запрос и вычти единицу - делов то...
5 Балоун
 
18.09.14
16:48
забавно. что, каждый день записи в регистре появляются?
6 iwannafly90
 
18.09.14
16:49
(4) могут уйти несколько раз в году в отпуск. Если уйдут два раза, то на два больше будет, чем нужно. Если три, то на три.
7 iwannafly90
 
18.09.14
16:49
(5) да, сам офигеваю с них. Кто-то до этого сделал им такой механизм, там регистр в который записывается статус, период и единичка - т.е. типо один день.
8 iwannafly90
 
18.09.14
16:51
(5) в итоге на каждый день создают документ, в котором указаны сотрудники и статусы и он делает движения в этот регистр
9 Балоун
 
18.09.14
16:54
(8) документ создали? единичка стоит? до свидания
10 iwannafly90
 
18.09.14
16:54
(9) ну я им так сказать не могу, хотя очень хочется.
11 Балоун
 
18.09.14
16:55
(10) почему?
12 iwannafly90
 
18.09.14
16:56
(11). Ну как ты себе это представляешь? Я на испытательном сроке в компании и мне задачу эту поставили. Ну не могу же я их послать или отказаться.
13 Балоун
 
18.09.14
16:57
(12) легко себе представляю. отчёт показывает то, что есть в БД, а не выдумывает отсебятину
14 боксер
 
18.09.14
16:57
отними единичку делов то
15 iwannafly90
 
18.09.14
16:58
(14) за каждый период лишнее значение появляется. Если два раза в году уйдет в отпуск, то уже надо будет двойку вычитать
16 Vladal
 
18.09.14
16:58
(3) А если он брал отпуск на 1 день, то есть с 13 по 13 число - это сколько выдаст программа?

Нет. 1 это просто. Надо 2 - с 13 по 14 - сколько это будет?
17 Gogger
 
18.09.14
16:59
не очень понял - в регистраторе стоит тип дня (рабочий/отпуск) и количество дней (1)? Как вообще выглядит регистр - скрин или список полей есть?
18 Зеленый пень
 
18.09.14
17:00
(0) Сгруппируй по дате начала с вычитанием единицы, потом всё сложи еще раз.
19 iwannafly90
 
18.09.14
17:01
(17) Рабочий, отпуск - это статус, там он в документе выбирается, который делает движения в этот регистр.
Измерения - физлицо, статус, подразделение. Ресурсы - дни, часы
20 Балоун
 
18.09.14
17:02
умные все какие

13е - отпуск - 1 штука
14е - отпуск - 1 штука

сколько штук отпуска у человека?
21 Gogger
 
18.09.14
17:03
(19) "статус" - это что?
22 Vladal
 
18.09.14
17:04
(10) Беги от них, пока не поздно.
23 iwannafly90
 
18.09.14
17:05
(21) перечисление. значения - работает, отпуск, болеет и т.д.
24 боксер
 
18.09.14
17:06
а если вместо
КОЛИЧЕСТВО(*) КАК КоличествоДнейВОтпуске
сделать так
СУММА(1) КАК КоличествоДнейВОтпуске
25 Балоун
 
18.09.14
17:07
(24) сэкономим на буквах
26 Gogger
 
18.09.14
17:09
я не понимаю тогда - откуда лишняя единица?
если есть день и статус.
27 боксер
 
18.09.14
17:09
а нафик у тебя физлицо выводится, если по нему отбор?
убери и группировку
28 Gogger
 
18.09.14
17:10
или за один день может быть запись и с отпуском и с рабочим днем?
29 боксер
 
18.09.14
17:10
посмотри свой регистр там видимо двоится у тебя
30 Балоун
 
18.09.14
17:10
(26) 20-7=13, это арифметика прожжёных бухгалтерш
31 боксер
 
18.09.14
17:15
еще вариант
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДИТ_ОтработанноеВремя.Регистратор) КАК КоличествоДнейВОтпуске

или период вместо регистратора, что у тебя там за ключ за день
ну скорее всего (30)
32 Drac0
 
18.09.14
17:21
(0) Объясни, почему должно получиться 13 дней?
33 боксер
 
18.09.14
17:28
(32)наверно бух много раз в году отдыхал и решил уволиться, ну чтобы больше компенсации насчитали за неиспользованные дни :-)