|
Работа с СКД | ☑ | ||
---|---|---|---|---|
0
новичокфорума
05.12.13
✎
14:17
|
Добрый день всем!
Очень хотелось бы получить помощи от мудрых и опытных людей работающих с СКД отчета. Дело в том, что я формирую отчет по сотрудникам с указанием периода когда он входил/выходил. Своя разработанная система СКУД. Т.е. есть поля физлицо,период,доступ(вход/выход). Так вот, я пытаюсь добавить колонку в которой нужно рассчитать разность периодов между строкой со значением ВЫХОД и строкой со значением ВХОД (как правило это соседние строки). Пытаюсь работать с вычисляемыми полями, но никак не получается. Помогите пожалуйста!!!?? Пример отчета: 1 Физлицо1 05.12.2013 10:00:13 Вход 2 Физлицо1 05.12.2013 12:03:46 Выход Как посчитать разницу т.е. строка2-строка1? |
|||
1
Wobland
05.12.13
✎
14:19
|
наколдуй разность дат
|
|||
2
Wobland
05.12.13
✎
14:20
|
или просто отними
|
|||
3
новичокфорума
05.12.13
✎
14:22
|
(2) Пыталась просто отнять в выражении вычисляемого поля, но при отладке отчета выходит ошибка что не опознан оператор "-"....
|
|||
4
Defender aka LINN
05.12.13
✎
14:22
|
(0) Куда побежишь, когда пользователь другую сортировку поставит?
|
|||
5
новичокфорума
05.12.13
✎
14:24
|
(4) Ну по идее я ограничиваю возможность сортировки пользователю, есть только возможность отбора, т.е. сортировка по полю "физлицо", затем по полю "период".
|
|||
6
bolobol
05.12.13
✎
14:27
|
Фотки нет - не взлетит...
|
|||
7
Feunoir
05.12.13
✎
14:29
|
(2) (3) Отнимают пирожки в школьной столовой, а в математике операция называется вычитание (с) мой школьный учитель физики, мир праху его...
(3) Такая ошибка бывает если один (или оба) операндов равны NULL. Поэтому разность взять и не получается. Показывай как настраивала вычисляемое поле. И фотку обязательно. |
|||
8
новичокфорума
05.12.13
✎
14:44
|
(7) я попробовала сделать через разностьдат в вычисляемом поле, и у меня получилось. Но у меня есть проблема, например:
1 Физлицо1 10:13:59 Вход 2 Физлицо1 10:14:02 Вход 3 Физлицо1 12:05:37 Выход Как можно отсечь первыю строку с входом, и посчитать разницу строка2-строка1? Выражение вычисляемого поля: + Выбор когда Доступ = "Выход разрешен" тогда РазностьДат(ВычислитьВыражение("Период",,,"Предыдущая"),ВычислитьВыражение("Период",,,"Текущая"),"Секунда") Конец - P.S. Я что то не пойму как тут вложить скриншот в сообщении... |
|||
9
новичокфорума
05.12.13
✎
14:45
|
(8) т.е. не строка2-строка1, а строка 3-строка2
прошу прощения за ошибку... |
|||
10
Feunoir
05.12.13
✎
14:49
|
(9) Скриншоты тут не прикладываются. Выкладывай на любой сторонний сервер, а сюда ссылку.
Что означают "Вход" и "Выход". Скорее всего будет достаточно добавить условие в ВЫБОР. ВычислитьВыражение("Период",,,"Текущая") не обязательно. Можно просто Период И как обрабатывать ситуацию Вход Выход Выход |
|||
11
новичокфорума
05.12.13
✎
15:02
|
(10) http://www.pifp.ru/s/file/a263dfe59ba5e62ec7ee1ec9bbc09b4b/32504
Вход и выход это для понимания(данные записываются в Рсв, чтобы понимать в какой период сотрудник вошел а в какой вышел) Вот поэтому я и спрашиваю... а может можно как нибудь удалить строки не нужные для анализа из отчета? |
|||
12
spu79
05.12.13
✎
15:10
|
последняя колонка "время" на размышления не наводит?
|
|||
13
Feunoir
05.12.13
✎
15:11
|
(11) У ВычислитьВыражение есть ещё параметры. Последний из них ОбработкаОдинаковыхЗначенийПорядка. Посмотри, может поможет.
А как удалять "строки не нужные для анализа" я тебе сказать не могу - откуда же я могу знать какие строки нужны, а какие нет. Расскажешь - подумаем. |
|||
14
spu79
05.12.13
✎
15:12
|
)))) фотка обязательна!
|
|||
15
spu79
05.12.13
✎
15:14
|
оставьте СКД в покое. ТС пытается почитать время между событиями, а оно в последней колонке уже посчитано))))))))))))) в секундах!
|
|||
16
Feunoir
05.12.13
✎
15:15
|
(15) Ну так оно у неё и посчитано через вычисляемое поле. Сейчас просто дошлифовываем.
|
|||
17
Бледно Золотистый
05.12.13
✎
15:17
|
(9) Делай проверку если текущая строка "выход" и предыдущая "вход", тогда считаем разницу.
Не понятно что делать когда несколько выходов подряд или последняя запись - "вход", без выхода. |
|||
18
spu79
05.12.13
✎
15:22
|
на сколько видел подобные системы. два одинаковых события подряд идти не могут (просто физически чел не может 2 раза зайти ни куда не выходя) - это просто глюк системы. самый простой вариант отсечь события по фильтру, скажем < 10 сек.
|
|||
19
spu79
05.12.13
✎
15:23
|
ИМХО но я бы это в запросе делал, а не вычисляемом поле...
|
|||
20
samozvanec
05.12.13
✎
15:24
|
а я бы по-другому делал. соединил бы таблицу саму к себе и вычитал бы
|
|||
21
samozvanec
05.12.13
✎
15:25
|
(18) нифига подобного. выходим с кем-нибудь покурить, туда он пикает, обратно я(кто первый идет, тот и пикает). и так весь день. каждый день.
|
|||
22
Feunoir
05.12.13
✎
15:25
|
(18) У нас когда по весне субботник был, выносили "мусор" из серверной. Так на выход девочки с ресепшена нам двери открывали, а на вход сами ключами пикали. Потом у каждого было по 4 входа и ни одного выхода.
(20) вариант хороший, но боюсь начинающий не потянет. |
|||
23
Halyavnik
05.12.13
✎
15:31
|
Создаем временную Таблицу1:
Делаем выборку ВЫХОДОВ, затем Join c выборкой входов по условию ВремяВхода<ВремяВыхода, группируем по времени выхода, функция максимум(время входа). На выходе получаем ВремяВыхода, МаксимальноеВремяВходаМеньшееЧемВремяВыхода. Дополнительные поля типа Сотрудник - по вкусу. Основная выборка: Выборка Выходов Join с Таблицей1. Условия соединения, думаю, сами сможете прописать. Медленно, но, вроде, должно дать необходимый результат. |
|||
24
samozvanec
05.12.13
✎
15:35
|
(22) ну если он так и будет делать "как потянет", то он так всегда будет делать
|
|||
25
Halyavnik
05.12.13
✎
15:42
|
(22) После субботника надо было базку "подчистить" от "брака". Или триггер вставить: если последняя запись по сотруднику - вход, новый вход делать нельзя или делать какое-то сообщение или заблокировать вход и т.д.
|
|||
26
Feunoir
05.12.13
✎
15:45
|
(24) С вычислениями в СКД всё равно в конце концов придётся разбираться, поэтому одно другому не мешает.
(25) Это головная боль админов, службы персонала и безопасников. У меня зарплата от проведённого на работе времени не зависит, так что мне в целом пофиг. (0) Ну и традиционно: http://www.spec8.ru/kurs-po-skd-besplatno |
|||
27
spu79
05.12.13
✎
17:20
|
(21) но одинаковое событие с интервалом в 4-5 сек точно глюк, либо чел стоит у турникета и систему троллит.
|
|||
28
новичокфорума
05.12.13
✎
17:27
|
(27) да, это глюк, потому что не налажена взаимосвязь с турникетом (нет информации о прокрутке на вход/выход)
|
|||
29
spu79
05.12.13
✎
17:32
|
(28) вот выбросить весь этот мусор. Условие "Время" > 10 (выбирайте цифру сами) или Время = 0 (т.е. есть вход, но нет выхода)
|
|||
30
новичокфорума
05.12.13
✎
17:40
|
(29) вот, а как это сделать "выбросить весь мусор"?
|
|||
31
Phace
05.12.13
✎
18:30
|
Не так все просто как кажется, подводных камней еще много будет, например как быть если человек не отметился на входе (либо отметился но произошел сбой и событие не зафиксировалось), а выход есть? А наоборот?
|
|||
32
echo77
05.12.13
✎
20:44
|
(0) Вопрос решился?
Это можно сделать на уровне СКД, добавив вычисляемое поле, создав для него ресурс и вычислять его для группировки, например по физлицу |
|||
33
новичокфорума
06.12.13
✎
08:59
|
(32) Нет, так и не решился, я не могу отсечь ненужные строки из отчета, то есть время считается для тех полей, которые мне нужны, а те которые не соответствуют условию остаются пустыми. (так как я прописывала выражение в вычисляемом поле СКД)
|
|||
34
Feunoir
06.12.13
✎
09:02
|
(33) Да блин! Ты по человечески можешь объяснить что и как тебе отсечь нужно?
Может тебе просто нужно отбор добавить по Время>0 |
|||
35
el7cartel
06.12.13
✎
09:04
|
(0) хм...интересно, а что если будет что строка два будет входом?
|
|||
36
новичокфорума
06.12.13
✎
09:05
|
(34) я пыталась делать отбором в настройках отчета, но выходит ошибка. сейчас кину ссылку наглядную...
|
|||
37
новичокфорума
06.12.13
✎
09:08
|
(35) то по идее у меня не считает время, а оставляет поле пустым, это хорошо, но было бы идеально, если бы я прописала условие которое отсекает строки с дублирующимися строками (Вход или Выход)
|
|||
38
el7cartel
06.12.13
✎
09:12
|
(37)по идеи здесь разные варианты есть! и их несколько! и получится, что тз будет по разному выглядеть! группировать по одной дате, а дальше уже смотреть!
|
|||
39
новичокфорума
06.12.13
✎
09:15
|
||||
40
новичокфорума
06.12.13
✎
09:17
|
(39) Так вот, где прописать условие, чтобы отсекать из отчета строку которая совпадает с предыдущей (т.е. Выход-Выход), промежуток меньще 60 сек?
|
|||
41
el7cartel
06.12.13
✎
09:18
|
(39) прямо в запросе и пропишите! можно, просто сделать, выбрать max по событию на дату, но не так точно будет
|
|||
42
новичокфорума
06.12.13
✎
09:19
|
(40) поле время расчетное, и выражение прописано в вычисляемом поле. а в запросе я это условие прописать не могу, так как у меня используется функция вычислить выражение (для расчета разности между тек. и предыдущей строками)
|
|||
43
Feunoir
06.12.13
✎
09:26
|
(40)
Потом отбор по этому полю |
|||
44
новичокфорума
06.12.13
✎
09:34
|
(43)
точно так? не вот так случайно?: ВЫБОР КОГДА ВычислитьВыражение("Доступ",,, "Предыдущая")="Вход разрешен" И РазностьДат(ВычислитьВыражение("Период",,, "Предыдущая"), Период, "Секунда")>60 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ "доступ - "Вход разрешен" и знак больше 60"? |
|||
45
Feunoir
06.12.13
✎
09:37
|
(44) А теперь переведи на русский язык моё условие, потом своё и сравни оба со своими пожеланиями из (40)
|
|||
46
echo77
06.12.13
✎
09:46
|
А фотка была уже?
|
|||
47
новичокфорума
06.12.13
✎
09:49
|
(45) да, поняла, но теперь прописав Ваше условие, и установив отбор при отладке выходит ошибка...
http://www.pifp.ru/s/file/2452a299f543be4eefa76235228fb9/32509 |
|||
48
новичокфорума
06.12.13
✎
09:50
|
(47) только там в отборе вместо ИСТИНА стоит ЛОЖЬ, не правильный скрин, прошу прощения
|
|||
49
Feunoir
06.12.13
✎
09:53
|
(46) Да вот в том то и дело, что нет. Кощунство какое-то. Пятница, а фотки нет.
(47) Погоди. Зря ты это вписала в поле Время. Лучше бы добавить это в другое вычисляемое поле так как это не время, а условие дублирования. И отбор надо делать не на уровне всего отчета, а на уровне детальных записей. Не надо меня писать на вы, да ещё и с большой буквы. Лучше фотку в профиль прикрепи ;) |
|||
50
новичокфорума
06.12.13
✎
11:21
|
(49) прошу прощения что так долго не выходила на связь, были сбои в коннекте к данному форуму...
а фотку я прикрепить не могу, так как на работе... а по поводу того, что нужно было выражение прописать в другом поле - пробовала, но выходила та же ошибка( |
|||
51
новичокфорума
06.12.13
✎
15:09
|
(50) вроде получилось, но вот теперь отбор не работает (установлен, но не отсекает строки не удовлетворяющие отбору)
для удобства понимания скрин по ссылке: http://www.pifp.ru/s/file/9c6c6a9964adb2b6206fc78cd92268c5/32510 |
|||
52
Phace
06.12.13
✎
16:00
|
Еще раз повторюсь, человек не отметился на входе, есть только выход, что посчитает в твоем примере система? Сколько времени он отработал? 0 часов, прогул?
|
|||
53
новичокфорума
06.12.13
✎
16:20
|
(52) он просто не обрабатывает данную строку, до тех пор пока нам не доработают программу турникета для корректной записи один вход - один выход
|
|||
54
Phace
06.12.13
✎
16:54
|
(53) Не доработают программу, разные ситуации бывают, отключили на пару часов электричество с которого запитаны турникеты с утра, людям надо на работу, что их не пускать туда, пока турникеты не заработают? Пускай все гуляют? Нет. У вас должна быть возможность внести вручную ответственным лицом данные о входе/выходе.
|
|||
55
Phace
06.12.13
✎
17:03
|
(54) Это я все к чему, да к тому что твой подход к автоматизации данной задачи в принципе не правильный. Первую проблему с неработающими турникетами я описал выше. Следующая. Как быть, например, с охранником который работает посменно, в ночь? Т.е. приходит вечером, а уходит на следующий день с утра? Как время посчитается в этом случае у тебя? По хорошему должны быть графики работ для каждого сотрудника назначены. Далее. Что делать когда человек отпросился и не вышел на работу? Или отпросился на пол-дня?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |