powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Табельный учет
41 сообщений из 41, показаны все 2 страниц
Табельный учет
    #36876931
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует система СКД, которое контролирует доступ сотрудников на предприятие и соответственно время доступа. Так же в программе СКД предусмотрен табельный учет. Но к сожалению система фиксирует лишь время входа сотрудника на предприятие и время выхода, а суммарное время не учитывается. Сотрудников около 4 тыс. поэтому процесс учета суммарного времени необходимо автоматизировать, считать все руками задача для не слабонервных. Опыт программирования полностью отсутствует, так что полагаюсь лишь на вашу помощь.
Пример отчета в приложении. Как я понимаю надо будет вычесть две смежные ячейки и получить время потом следующую пару и т.п., а потом их сложить и получить итоговое время для одного человека и т.д. для всех остальных
...
Рейтинг: 0 / 0
Табельный учет
    #36876969
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,

Такие вещи наиболее просто делаются SQL-запросами, так что сначала вопрос - что, исходные данные возможно получить только в экселе или все же есть вариант сделать запрос непосредственно к БД?
...
Рейтинг: 0 / 0
Табельный учет
    #36876994
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proartfulbag,

Такие вещи наиболее просто делаются SQL-запросами, так что сначала вопрос - что, исходные данные возможно получить только в экселе или все же есть вариант сделать запрос непосредственно к БД?

К сожаления точно не могу сказать поступают ли данные об отчетах с этой системы в SQL, более вероятно что да, они лишь конвертируются в xls файл при выгрузке, так как вся база СКД вращается на MSSQL, но к сожаления информации по базе SQL нет, т.е. нет информации где расположены отчеты в каких таблицы, плюс так же специалистов работающих с SQL к сожалению нет, соответственно этот более лучший вариант отпадает. Поэтому рассматривается вариант работы уже с конечным xls файлом.
...
Рейтинг: 0 / 0
Табельный учет
    #36877003
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,


какой день в табеле
входвыход31 января 23.45 1 февр7.00 похоже февраль31 янв 20.00 1 февр7.00 похоже январь
...
Рейтинг: 0 / 0
Табельный учет
    #36877026
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,

Ну, в принципе, можно и к экселевскому файлу SQL-запрос сделать....

Только есть нюанс, что и как считать, если человек зашел в один день, а вышел в другой?
...
Рейтинг: 0 / 0
Табельный учет
    #36877032
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАartfulbag,


какой день в табеле
входвыход31 января 23.45 1 февр7.00 похоже февраль31 янв 20.00 1 февр7.00 похоже январь

Система в табеле выгружает информацию за сутки, т.е. 31 января 23:45 - 31 января, а 1 февраля 7:00 - это 1 февраля, поэтому скорее всего надо считать вход/выход. То есть если вход был зафиксирован 31 января, а выход 1 февраля, то отнести итоговое время надо к 31 январю. Но как это сделать не представляю.
...
Рейтинг: 0 / 0
Табельный учет
    #36877094
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbagНо как это сделать не представляю.
Предполагается альтруизм или есть бюджет? И сроки какие?
...
Рейтинг: 0 / 0
Табельный учет
    #36877121
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProartfulbagНо как это сделать не представляю.
Предполагается альтруизм или есть бюджет? И сроки какие?

Естественно сроки кратчайшие, до 5-ого октября. Бюджета нет. Мне вменили :) решить вопрос как хочешь. Так что альтруизм, хотите помогайте, хотите нет.
Я в свою очередь ратую за помощь, но конечное решение за вами ;)
...
Рейтинг: 0 / 0
Табельный учет
    #36877132
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо вам придётся сначала начать с нормализации входных данных. а именно, приведения строк к формату DATETIME, а уже потом можете накручивать sql-запросы
...
Рейтинг: 0 / 0
Табельный учет
    #36877154
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необязательно, можно склеить и в запросе, и даже лучше, так как понадобится группировка по дате.
Нормализация тут будет заключаться в группировке по номеру пропуска и дальнейший джойн обратно к первой попавшейся фамилии под этот пропуск....
...
Рейтинг: 0 / 0
Табельный учет
    #36877162
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНеобязательно, можно склеить и в запросе, и даже лучше, так как понадобится группировка по дате.
Нормализация тут будет заключаться в группировке по номеру пропуска и дальнейший джойн обратно к первой попавшейся фамилии под этот пропуск....

на sql - это будет сложно. у него кто во что горазд данные в текством виде пишет с ошибками в названии месяце и тд и тп
...
Рейтинг: 0 / 0
Табельный учет
    #36877169
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneна sql - это будет сложно. у него кто во что горазд данные в текством виде пишет с ошибками в названии месяце и тд и тп

Я что-то не понял. У меня файл нормально открылся, ячейка имеет формат даты, у вас с Пенсионеркой какие-то глюки с файлом?
...
Рейтинг: 0 / 0
Табельный учет
    #36877187
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneна sql - это будет сложно. у него кто во что горазд данные в текством виде пишет с ошибками в названии месяце и тд и тп

Я что-то не понял. У меня файл нормально открылся, ячейка имеет формат даты, у вас с Пенсионеркой какие-то глюки с файлом?


я не открывал, сейчас не на чем открывать. но из примера выше (кусок табличных данных) я вижу , что не взлетит.
...
Рейтинг: 0 / 0
Табельный учет
    #36877192
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneя не открывал, сейчас не на чем открывать. но из примера выше (кусок табличных данных) я вижу , что не взлетит.
не, это сочинения Пенсионерки, файл выглядит абсолютно по-другому.
...
Рейтинг: 0 / 0
Табельный учет
    #36877235
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneя не открывал, сейчас не на чем открывать. но из примера выше (кусок табличных данных) я вижу , что не взлетит.
не, это сочинения Пенсионерки, файл выглядит абсолютно по-другому.

ну тогда простым sql-запросом

DATEDIFF(hour,дата выхода, дата входа)

или в минутах, если надо
...
Рейтинг: 0 / 0
Табельный учет
    #36877481
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneну тогда простым sql-запросом
DATEDIFF(hour,дата выхода, дата входа)
или в минутах, если надо
Там есть две загвоздки

а) входов и выходов в один день может быть несколько
б) может быть вход без выхода и выход без входа (то есть нужен псевдовход в 00:00 и псевдовыход в 23:59:59)
...
Рейтинг: 0 / 0
Табельный учет
    #36877489
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какая разница
пусть для начала все отрезки получит и их длительность, потом начнёт уже в рамки дней вписывать
...
Рейтинг: 0 / 0
Табельный учет
    #36877496
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneкакая разница
пусть для начала все отрезки получит и их длительность, потом начнёт уже в рамки дней вписывать
я разве с этим спорю?
...
Рейтинг: 0 / 0
Табельный учет
    #36877503
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneкакая разница
пусть для начала все отрезки получит и их длительность, потом начнёт уже в рамки дней вписывать

Ты просто не понял, видимо, раз файла не видишь.
Время входа и время выхода там в плоской таблице, то есть они не сопоставлены
...
Рейтинг: 0 / 0
Табельный учет
    #36877508
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneкакая разница
пусть для начала все отрезки получит и их длительность, потом начнёт уже в рамки дней вписывать

Ты просто не понял, видимо, раз файла не видишь.
Время входа и время выхода там в плоской таблице, то есть они не сопоставлены

ясно, ну простор тогда для деятельности у ТС. пусть в базу всё перегонит и начинает анализировать на выборках, что и как и куда
...
Рейтинг: 0 / 0
Табельный учет
    #36877510
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дата СобытияВремя событияФамилияИмяНомер картыОбластьИтого01.10.20107:40ПетровПетр12345ВходСдесь должна быть сумма времени проведенного на заводе; в этом случае она равна 9:05 минут01.10.201012:00ПетровПетр12345Выход01.10.201012:55ПетровПетр12345Вход01.10.201017:10ПетровПетр12345Выход01.10.20107:58ИвановИван123ВходТоже сумма01.10.201017:02ИвановИван123Выход30.09.20107:30СидоровСемен3564ВходТоже сумма времени30.09.201010:10СидоровСемен3564Выход30.09.201011:20СидоровСемен3564Вход30.09.201012:20СидоровСемен3564Выход30.09.201013:05СидоровСемен3564Вход30.09.201014:20СидоровСемен3564Выход30.09.201015:00СидоровСемен3564Вход30.09.201018:00СидоровСемен3564Выход
...
Рейтинг: 0 / 0
Табельный учет
    #36877519
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
групировка по ФИО + вход = одна вьюшка с занесением в промежуточную таблицу времени входа
аналогичная вьюшка по выходу = пишет в ту же промежуточную таблицу время выхода, если день совпал
...
Рейтинг: 0 / 0
Табельный учет
    #36877531
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneгрупировка по ФИО
по номеру карты :)

Konst_One+ вход = одна вьюшка с занесением в промежуточную таблицу времени входа
аналогичная вьюшка по выходу = пишет в ту же промежуточную таблицу время выхода, если день совпал
ну это-то все можно и подзапросами.
Тут вопрос, как лучше сопоставить время входа и выхода (между которыми считать интервал) на чистом SQL, не прибегая к сканированию таблицы....

...можно, к примеру, с помощью временной таблицы и идентити (или автонумерацией в запросе), и связывать с предыдущим, ну тут возникает такой момент, как "сотрудник выпал из окна", то есть два раза вошел, допустим. То есть тут еще должен быть фильтр по таким данным...
...
Рейтинг: 0 / 0
Табельный учет
    #36877541
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneгрупировка по ФИО
по номеру карты :)

Konst_One+ вход = одна вьюшка с занесением в промежуточную таблицу времени входа
аналогичная вьюшка по выходу = пишет в ту же промежуточную таблицу время выхода, если день совпал
ну это-то все можно и подзапросами.
Тут вопрос, как лучше сопоставить время входа и выхода (между которыми считать интервал) на чистом SQL, не прибегая к сканированию таблицы....

...можно, к примеру, с помощью временной таблицы и идентити (или автонумерацией в запросе), и связывать с предыдущим, ну тут возникает такой момент, как "сотрудник выпал из окна", то есть два раза вошел, допустим. То есть тут еще должен быть фильтр по таким данным...


я бы сделал через промежуточную таблицу

PS
по номеру карты конечно группировка, если оно уникально
...
Рейтинг: 0 / 0
Табельный учет
    #36877548
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но, в принципе, можно и экселевский файл просканировать, предварительно отсортировав Юзер-Дата
...
Рейтинг: 0 / 0
Табельный учет
    #36877917
_!_Алекс_!_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот решение!
На листе 2 я сделал кнопку, по нажатию которой получается суммарное время по сотрудникам. Данное время потом переносится на лист 1 функцией ВПР.
Замечания. на листе 1 я добавил столбец ID, без которого работать не будет. Также важно, чтобы "вход"-"выход" чередовались. Также в отчет не попадут те сотрудники, которые на момент формирования исходной информации вошли и не вышли.
Использовал Excel 2003, ADO, SQL, поэтому, если вдруг при компиляции проекта будут ошибки - заходим в редактор VBA, нажимаем Tools->References и ставим галочку на Microsoft ActiveX Data Object 2.x Library.
Вобщем - смотрите прикрепленный файл.
Пишу от имени гостя, т.к. поменял в профиле мейл и не могу активировать.

Удачи!
...
Рейтинг: 0 / 0
Табельный учет
    #36877920
_!_Алекс_!_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, файл не прикрепился.
...
Рейтинг: 0 / 0
Табельный учет
    #36877961
_!_Алекс_!_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или, вариант 2, теперь все автоматически и на листе 1.
...
Рейтинг: 0 / 0
Табельный учет
    #36877963
_!_Алекс_!_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S.
Наименования столбцов в исходной таблице просьба не менять - не будет работать.
...
Рейтинг: 0 / 0
Табельный учет
    #36879525
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_!_Алекс_!_P.S.
Наименования столбцов в исходной таблице просьба не менять - не будет работать.

Спасибо большое, буду пробовать.
...
Рейтинг: 0 / 0
Табельный учет
    #36879530
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_!_Алекс_!_P.S.
Наименования столбцов в исходной таблице просьба не менять - не будет работать.

Алекс, вы спасли меня. Очень вам благодарен. Так как это требуется срочно, то ваш вариант более чем достаточен, будем думать как автоматизировать полностью процесс, но сейчас, еще раз повторюсь - большущее спасибо.
...
Рейтинг: 0 / 0
Табельный учет
    #36879716
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,
Пожалуйста! Но я не могу учесть всех нюансов. Если будете делать отчет на другом наборе данных, лучше проверьте сперва все вручную.
Успехов!


P.S. Я активировал свой профиль!
...
Рейтинг: 0 / 0
Табельный учет
    #36880153
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диклевич Александрartfulbag,
Пожалуйста! Но я не могу учесть всех нюансов. Если будете делать отчет на другом наборе данных, лучше проверьте сперва все вручную.
Успехов!


P.S. Я активировал свой профиль!

ОК, спасибо еще раз ;)
...
Рейтинг: 0 / 0
Табельный учет
    #36884364
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диклевич Александр, спасибо вам за помощь, но возникли вопросы и если поможете их решить (если они решаемые), то буду вам благодарен.
В том файле с макросом происходит подсчет времени сотрудника, но к сожалению всего времени. Нет деления на сутки. В новом вложении описано более подробно. Если возможно, то надо, чтобы считал время за сутки, а если человек вошел например, 4 числа в 23:50, а вышел пятого в 8:00, то в сотруднику посчитал итоговое время как за 4 число и составил 8:10
И если опять такое возможно, то необходимо после произведения всех расчетов убрать промежуточные строки со временем (т.е. чтобы у каждого человека был лишь время входа и время выходы, перерыв на обед не нужны в отчеты, т.е. они нужны для учета времени, для расчетов учитываются, но не нужны в конечном отчете, если возможность после всех расчетов как то скрыть эти строки автоматически и скрыть столбик с минутами)
П.С. Надеюсь на вашу помощь, к сожалению сам не справлюсь.
...
Рейтинг: 0 / 0
Табельный учет
    #36885997
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,
Я подумаю, но в Вашем файле вход Иванова Ивана 06.10.2010 23:50 находится не на своем месте, т.к. он должен идти после Козлова Николая.
Во-вторых, итоговый отчет можно будет сделать таким, но какова будет его информативность - т.к., например, посмотрит руководство - Петров П. вошел 7.50, вышел 17.00, а мы ему ставим 8.10. Где еще час?
Я попробую, но мне надо время. О результатах сообщу.
...
Рейтинг: 0 / 0
Табельный учет
    #36886097
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диклевич Александрartfulbag,
Я подумаю, но в Вашем файле вход Иванова Ивана 06.10.2010 23:50 находится не на своем месте, т.к. он должен идти после Козлова Николая.
Во-вторых, итоговый отчет можно будет сделать таким, но какова будет его информативность - т.к., например, посмотрит руководство - Петров П. вошел 7.50, вышел 17.00, а мы ему ставим 8.10. Где еще час?
Я попробую, но мне надо время. О результатах сообщу.


1) Можно конечно сортировать не по дате, а по номеру карты, тогда Иванов Иван будет на своем месте и первой строкой будет вход 06.10.2010 23:50, а второй выход 07.10.2010 8:00, это не принципиально для меня. Если получится реализовать только таким образом, т.е. будет вход и выход подряд (на своем месте), то реализуйте.
2) Так надо для отдела охраны, то есть вошел в 7:50, вышел 17:00 (при этом ходил на обед с 12 до 13) итого 8:10, это нормально. Никто не потеряет этот час. Есть другие формы отчетов где все это можно посмотреть, в этом отчете надо только время. Если получится удалить промежуточные строки то будет хорошо.
P.S. Это лишь дополнительные требования, главное, чтобы он считал итого время по дням, а не за весь выбранный период.
Спасибо вам большое, за труды. Буду ждать вестей :)
...
Рейтинг: 0 / 0
Табельный учет
    #36887859
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,
Оставим пока вопросы...
Так. Я придумал. Начну с начала - теперь мухи отдельно, котлеты отдельно. Теперь будет исходная информация и надстройка, которая эту информацию обрабатывает и делает отчет.
Сразу предупрежу, что исходная информация меняется при обработке, так что всегда делайте копию. Итак, исходная инфа, как Вы ее предоставили, находится в файле Inputs.xls. Второй файл - это надстройка Excel Reportbuilder.xla, которая при открытии добавляет к стандартному меню дополнительное "Построитель отчетов". У меня в Excel 2003 оно появляется сразу посте меню "Справка". Далее, жмем на меню, видим два подменю - "Отчет по времени" и "Завершение работы". Последнее просто убирает это меню и закрывает надстройку, а первое - то что нам нужно. Жмем на "Отчет по времени", Excel попросит нас выбрать файл с исходными данными, и сделает отчет.

Замечания:
Еще раз - исходная информация меняется при обработке, так что всегда делайте копию.
Два - В исходном файле данные должны находится на первом листе.
Три - Имена столбцов не менять в исходнике.
Четыре - "ручной" контроль.
Пять - никаких гарантий и ответственности.

Код открыт, смотрите, разбирайтесь, модернизируйте как Вам захочется.
...
Рейтинг: 0 / 0
Табельный учет
    #36888466
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диклевич Александрartfulbag,
Оставим пока вопросы...
Так. Я придумал. Начну с начала - теперь мухи отдельно, котлеты отдельно. Теперь будет исходная информация и надстройка, которая эту информацию обрабатывает и делает отчет.
Сразу предупрежу, что исходная информация меняется при обработке, так что всегда делайте копию. Итак, исходная инфа, как Вы ее предоставили, находится в файле Inputs.xls. Второй файл - это надстройка Excel Reportbuilder.xla, которая при открытии добавляет к стандартному меню дополнительное "Построитель отчетов". У меня в Excel 2003 оно появляется сразу посте меню "Справка". Далее, жмем на меню, видим два подменю - "Отчет по времени" и "Завершение работы". Последнее просто убирает это меню и закрывает надстройку, а первое - то что нам нужно. Жмем на "Отчет по времени", Excel попросит нас выбрать файл с исходными данными, и сделает отчет.

Замечания:
Еще раз - исходная информация меняется при обработке, так что всегда делайте копию.
Два - В исходном файле данные должны находится на первом листе.
Три - Имена столбцов не менять в исходнике.
Четыре - "ручной" контроль.
Пять - никаких гарантий и ответственности.

Код открыт, смотрите, разбирайтесь, модернизируйте как Вам захочется.

Огромное спасибо, буду разбираться
...
Рейтинг: 0 / 0
Табельный учет
    #36888473
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, все работает. С меня пиво ;) Если вы из Екатеринбурга, то непременно угощу :)
...
Рейтинг: 0 / 0
Табельный учет
    #36888851
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artfulbag,
Не, я из Донецка, Украина.
Я мог в коде немного перемудрить, но будет время - я подумаю, как можно упростить.
...
Рейтинг: 0 / 0
Табельный учет
    #36889746
artfulbag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Диклевич Александрartfulbag,
Не, я из Донецка, Украина.
Я мог в коде немного перемудрить, но будет время - я подумаю, как можно упростить.

Жаль, что не из Екатеринбурга. Про код, не могу судить, так как являюсь админом, а обязали решить вопрос, мало относящийся к моей специальности, но это лирика. Работает все как надо, не устану говорить вам спасибо:) Если у заказчика появятся новые требования (они уже не критичны, так как система считает все как надо) для наведения лоска, вам сообщу, а вы уж сами решите хотите ли вы до шлифовать или нет. Но я думаю, что ваша работа сделана прекрасна и очень удобно пользоваться надстройкой. Респект вам и уважуха :)
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Табельный учет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]