Страницы: 1
RSS
Проблема с разработкой таблицы учета рабочего времени сотрудников, Исходные данные далеки от идеальных
 
Здравствуйте, уважаемые пользователи форума.

Уже несколько дней бьюсь над задачкой:

Дано:
- Выгрузка данных системы системы учета входа/выхода;
- Неидеальные сотрудники, которые могут пропустить отметку на входе и отметиться только на выходе и наоборот.
Которые могут отметиться несколько раз, к примеру, при входе.

Цель:
Получить на выходе сводную таблицу (или просто "умную") в таком виде:
Строки - сотрудники;
Столбцы - даты начала смены;
Значения - временной промежуток между началом смены и концом;

У "правильных" сотрудников, должны правильно проставляться часы.
У "проблемных" сотрудников часы могут проставляться с ошибками или они могут быть убраны вовсе из выборки. Они нас не интересуют в конечном итоге.


Во вложении пример данных и моя попытка реализации решения, но так как я далек от PQ, решение у меня получается очень далеким от удовлетворительного.

Уважаемые знатоки, помогите, пожалуйста, понять в каком направлении мыслить, чтобы реализовать решение на практике.


Нюансы:
- исправление ошибок в исходнике затруднительно, потому что количество сотрудников очень велико;
- бывает такое, что в выгружаемом временном периоде данные начинаются или кончаются "входом" или "выходом", которые не имеют пары. В идеале было бы, чтобы эти "неполные данные" были удалены. Главное, чтобы правильно отображались "полные правильные данные"
Изменено: Nikolay174953 - 31.05.2024 09:42:15
 
Цитата
Nikolay174953 написал:
в каком направлении мыслить, чтобы реализовать решение на практике.
прежде всего, определиться с критериями отбора "правильных" данных. Может ли быть "правильной" комбинацией вход "сегодня", а выход - "завтра"? Что если 2 входа подряд перед выходом - какой вход правильный, а какой отбросить? И т.п. Подумайте и опишите критерии отбора. Остальное - дело техники.
Пришелец-прораб.
 
AlienSx, смены бывают как дневные, так и ночные, как на примере ниже (обе пары строк корректные, потому что 25.05 была дневная смена, а в ночь с 27.05 на 28.05 была ночная смена):

25.05.2024   6:47ВходИванов Иван
25.05.2024   16:30ВыходИванов Иван
27.05.2024   18:42ВходИванов Иван
28.05.2024   7:03ВыходИванов Иван
На основании этого, я думаю, что наиболее корректным критерием отбора данных будет:
-  отображение у сотрудников только правильных смен, т.е. таких где имеется и "Вход" и "Выход", где вход - всегда первая запись.

Цитата
написал:
Что если 2 входа подряд перед выходом - какой вход правильный, а какой отбросить?
В таком случае правильным нужно считать первую запись о входе
 
Nikolay174953, ну хорошо. Сойдет для начала. А если вход сегодня, а выход через неделю? Если вы не на ликеро-водочном заводе работаете, то это будет подозрительно :)
Пришелец-прораб.
 
AlienSx, на нём самом  :)
Насчет таких случаев у меня пока что нет мыслей, как бы можно было обойти. Можно отставить. Просто будет видно, что проблема в исходных данных.
 
Посчитал входы-выходы (первые встречающиеся, т.е. мин дата-время), дату начала смены и продолжительность в часах (десятичное число). Если смены не найдены, то сотрудник есть с null-ми. Сводную не делал - сами решите где и как это делать.
однажды на ЛВЗ
Пришелец-прораб.
 
AlienSx, Большое спасибо!
Все возможные ожидания были превзойдены. Все работает прямо так как и задумывалось.

Я правильно понимаю, чтобы такие вещи воплощать в жизнь своими руками, нужно быть знатоком языка М?
 
Цитата
Nikolay174953 написал:
Я правильно понимаю, чтобы такие вещи воплощать в жизнь своими руками, нужно быть знатоком языка М?
скажем так, навыков создания запросов на языке M только с помощью интерфейса редактора PQ (т.н. "мышкоклацание") будет недостаточно.
Пришелец-прораб.
Страницы: 1
Наверх