Имя: Пароль:
1C
1С v8
Хитрый запрос. Реально?
,
0 Dimon1C
 
03.09.11
15:51
Есть таблица данных пропускной системы сотрудников на работу.
Иванов 01.08.2011 09:05 Вход (в здание)
Иванов 01.08.2011 09:25 Выход (из здания)
Иванов 01.08.2011 10:15 Вход
Сидоров 01.08.2011 10:35 Вход
....
Стоит задача получить следующую информацию:
Сколько времени сотрудник провел в здании (на работе), сколько времени отсутствовал (есть график работы)

Как думаете, возможно ли получить эти данные запросом, или все таки доп. таблицы, циклы?
1 zak555
 
03.09.11
15:53
это в РС ?
2 zak555
 
03.09.11
15:53
данные
3 Варвар
 
03.09.11
15:56
да, реально
4 Варвар
 
03.09.11
15:57
у меня GetWorkTimeAtDay
5 sprinter83
 
03.09.11
15:57
Ситуация похожа на рассчёт заработной платы по времени (дням, часам). Можно попробовать через регистры расчета зделать
6 Dimon1C
 
03.09.11
16:21
В регистре сведений данные хранятся.
7 Dimon1C
 
03.09.11
16:22
(4) Не покажете?
8 Лефмихалыч
 
03.09.11
16:22
(0) более чем реально
9 Mort
 
03.09.11
16:24
Запросом можно сделать если сотрудники как роботы или система контроля очень жесткая. А когда выходят покурить по одному пропуску, а возвращаются по другому, нужно анализировать по-другому.
10 kosts
 
03.09.11
16:43
Как то так

Выбрать
   таблица1.Сотр,
   таблица1.Время как время_входа,
   мин(таблица2.Время) как время_выхода
из регистр как таблица1
внутреннее соединение регистр как таблица2
по таблица1.Сотр=таблица1.Сотр и таблица1.Время < мин(таблица2.Время) и (условие что это один рабочий день)

Отдельно найти когда нет входа или выхода
11 Нуф-Нуф
 
03.09.11
16:44
Можно сделать по аналогии с запросом, которые выдает значение на каждую дату запроса.
Делаем два пакетных запроса к регистру сведений, получаем две таблицы
ВХОДЫ
Иванов 01.08.2011 09:05 Вход (в здание)
Иванов 01.08.2011 10:15 Вход
Сидоров 01.08.2011 10:35 Вход
ВЫХОДЫ
Иванов 01.08.2011 09:25 Выход (из здания)

соединяем первую таблицу со второй, по сотруднику (равенство) и по периоду (больше либо равно).

получаем следующую таблицу:
Иванов 01.08.2011 09:05 01.08.2011 09:25
Иванов 01.08.2011 10:15 ПУСТО
Сидоров 01.08.2011 10:35 ПУСТО
где пусто можно заменить текущей датой на момент выполнения запроса.
12 Нуф-Нуф
 
03.09.11
16:45
но в любом случае все варианты будут работать только при условии что не было два входа подряд (нужен механизм еще на моменте регистрации, которые бы исключил подобное)
13 Axel2009
 
03.09.11
16:46
(12) либо в запросах исключать подобное
14 Нуф-Нуф
 
03.09.11
16:50
(13) вот:
Иванов 01.08.2011 09:05 Вход
Иванов 01.08.2011 09:25 Выход
Иванов 01.08.2011 10:15 Вход
Иванов 01.08.2011 11:15 Вход
Иванов 01.08.2011 12:25 Выход

как в запросе такое исключить чтобы получить верную информацию?

я бы на этапе регистрации при фиксации повторного входа в регистр сведений бы добавлял запись о выходе с датой предыдущего входа +1.
т.е. при регистрации повторного входа получили бы такие записи:
Иванов 01.08.2011 09:05 Вход
Иванов 01.08.2011 09:25 Выход
Иванов 01.08.2011 10:15 Вход
Иванов 01.08.2011 11:16 Выход //запись добавлена автоматически
Иванов 01.08.2011 11:15 Вход
Иванов 01.08.2011 12:25 Выход
15 AlexNew
 
03.09.11
16:50
(0) А работать не пробовали?
16 Нуф-Нуф
 
03.09.11
16:51
имхо тут даже больше административный подход в определению времени работы при повторных входах выходах
17 Axel2009
 
03.09.11
16:51
(14) выводить все входы. и получать первый выход после входа. и пусть их будет хоть стотыщьмильонов
18 fisher
 
03.09.11
17:02
(0) Доп-таблицы, циклы.
На первый взгляд нужную информацию запросом получить можно. А на практике нужно отрабатывать много граничных условий.
"Вошли" два раза подряд без "вышли", "вошли" сегодня, а "вышли" через двое суток и т.п.
19 fisher
 
03.09.11
17:04
Вернее, какие доп таблицы? За один проход всё что надо анализируется как угодно.
20 fisher
 
03.09.11
17:08
"Вошли" два раза подряд - надо по разнице времени отличать двойное срабатывание от выхода без регистрации и другие ньюансы.
21 zak555
 
03.09.11
17:30
(12) надо анализировать вход так, что пред был выход =)
если задваиваться - отслеживать - штраф
а так если пришло вход, вход
смотри на предыдуший до тех пор, пока конца не будет или выхода
22 Axel2009
 
03.09.11
17:31
(21) запросом то в 1с? нюню =)