#0
by новичокфорума
Добрый день всем! Очень хотелось бы получить помощи от мудрых и опытных людей работающих с СКД отчета. Дело в том, что я формирую отчет по сотрудникам с указанием периода когда он входил/выходил. Своя разработанная система СКУД. Т.е. есть поля физлицо,период,доступ(вход/выход). Так вот, я пытаюсь добавить колонку в которой нужно рассчитать разность периодов между строкой со значением ВЫХОД и строкой со значением ВХОД (как правило это соседние строки). Пытаюсь работать с вычисляемыми полями, но никак не получается. Помогите пожалуйста!!!?? Пример отчета: 1 Физлицо1 05.12.2013 10:00:13 Вход 2 Физлицо1 05.12.2013 12:03:46 Выход Как посчитать разницу т.е. строка2-строка1?
#3
by новичокфорума
Пыталась просто отнять в выражении вычисляемого поля, но при отладке отчета выходит ошибка что не опознан оператор "-"....
#5
by новичокфорума
Ну по идее я ограничиваю возможность сортировки пользователю, есть только возможность отбора, т.е. сортировка по полю "физлицо", затем по полю "период".
#7
by Feunoir
Отнимают пирожки в школьной столовой, а в математике операция называется вычитание (с) мой школьный учитель физики, мир праху его... Такая ошибка бывает если один (или оба) операндов равны NULL. Поэтому разность взять и не получается. Показывай как настраивала вычисляемое поле. И фотку обязательно.
#8
by новичокфорума
я попробовала сделать через разностьдат в вычисляемом поле, и у меня получилось. Но у меня есть проблема, например: 1 Физлицо1 10:13:59 Вход 2 Физлицо1 10:14:02 Вход 3 Физлицо1 12:05:37 Выход Как можно отсечь первыю строку с входом, и посчитать разницу строка2-строка1? Выражение вычисляемого поля: + Выбор когда Доступ = "Выход разрешен" тогда РазностьДат(ВычислитьВыражение("Период",,,"Предыдущая"),ВычислитьВыражение("Период",,,"Текущая"),"Секунда") Конец - P.S. Я что то не пойму как тут вложить скриншот в сообщении...
#10
by Feunoir
Скриншоты тут не прикладываются. Выкладывай на любой сторонний сервер, а сюда ссылку. Что означают "Вход" и "Выход". Скорее всего будет достаточно добавить условие в ВЫБОР. ВычислитьВыражение("Период",,,"Текущая") не обязательно. Можно просто Период И как обрабатывать ситуацию Вход Выход Выход
#11
by новичокфорума
Вход и выход это для понимания(данные записываются в Рсв, чтобы понимать в какой период сотрудник вошел а в какой вышел) Вот поэтому я и спрашиваю... а может можно как нибудь удалить строки не нужные для анализа из отчета?
#13
by Feunoir
У ВычислитьВыражение есть ещё параметры. Последний из них ОбработкаОдинаковыхЗначенийПорядка. Посмотри, может поможет. А как удалять "строки не нужные для анализа" я тебе сказать не могу - откуда же я могу знать какие строки нужны, а какие нет. Расскажешь - подумаем.
#15
by spu79
оставьте СКД в покое. ТС пытается почитать время между событиями, а оно в последней колонке уже посчитано))))))))))))) в секундах!
#17
by БледноЗолотистый
Делай проверку если текущая строка "выход" и предыдущая "вход", тогда считаем разницу. Не понятно что делать когда несколько выходов подряд или последняя запись - "вход", без выхода.
#18
by spu79
на сколько видел подобные системы. два одинаковых события подряд идти не могут (просто физически чел не может 2 раза зайти ни куда не выходя) - это просто глюк системы. самый простой вариант отсечь события по фильтру, скажем < 10 сек.
#21
by samozvanec
нифига подобного. выходим с кем-нибудь покурить, туда он пикает, обратно я(кто первый идет, тот и пикает). и так весь день. каждый день.
#22
by Feunoir
У нас когда по весне субботник был, выносили "мусор" из серверной. Так на выход девочки с ресепшена нам двери открывали, а на вход сами ключами пикали. Потом у каждого было по 4 входа и ни одного выхода. вариант хороший, но боюсь начинающий не потянет.
#23
by Halyavnik
Создаем временную Таблицу1: Делаем выборку ВЫХОДОВ, затем Join c выборкой входов по условию ВремяВхода<ВремяВыхода, группируем по времени выхода, функция максимум(время входа). На выходе получаем ВремяВыхода, МаксимальноеВремяВходаМеньшееЧемВремяВыхода. Дополнительные поля типа Сотрудник - по вкусу. Основная выборка: Выборка Выходов Join с Таблицей1. Условия соединения, думаю, сами сможете прописать. Медленно, но, вроде, должно дать необходимый результат.
#25
by Halyavnik
После субботника надо было базку "подчистить" от "брака". Или триггер вставить: если последняя запись по сотруднику - вход, новый вход делать нельзя или делать какое-то сообщение или заблокировать вход и т.д.
#26
by Feunoir
С вычислениями в СКД всё равно в конце концов придётся разбираться, поэтому одно другому не мешает. Это головная боль админов, службы персонала и безопасников. У меня зарплата от проведённого на работе времени не зависит, так что мне в целом пофиг. Ну и традиционно:
#27
by spu79
но одинаковое событие с интервалом в 4-5 сек точно глюк, либо чел стоит у турникета и систему троллит.
#28
by новичокфорума
да, это глюк, потому что не налажена взаимосвязь с турникетом (нет информации о прокрутке на вход/выход)
#29
by spu79
вот выбросить весь этот мусор. Условие "Время" > 10 (выбирайте цифру сами) или Время = 0 (т.е. есть вход, но нет выхода)
#31
by Phace
Не так все просто как кажется, подводных камней еще много будет, например как быть если человек не отметился на входе (либо отметился но произошел сбой и событие не зафиксировалось), а выход есть? А наоборот?
#32
by echo77
Вопрос решился? Это можно сделать на уровне СКД, добавив вычисляемое поле, создав для него ресурс и вычислять его для группировки, например по физлицу
#33
by новичокфорума
Нет, так и не решился, я не могу отсечь ненужные строки из отчета, то есть время считается для тех полей, которые мне нужны, а те которые не соответствуют условию остаются пустыми. (так как я прописывала выражение в вычисляемом поле СКД)
#34
by Feunoir
Да блин! Ты по человечески можешь объяснить что и как тебе отсечь нужно? Может тебе просто нужно отбор добавить по Время>0
#36
by новичокфорума
я пыталась делать отбором в настройках отчета, но выходит ошибка. сейчас кину ссылку наглядную...
#37
by новичокфорума
то по идее у меня не считает время, а оставляет поле пустым, это хорошо, но было бы идеально, если бы я прописала условие которое отсекает строки с дублирующимися строками (Вход или Выход)
#38
by el7cartel
по идеи здесь разные варианты есть! и их несколько! и получится, что тз будет по разному выглядеть! группировать по одной дате, а дальше уже смотреть!
#40
by новичокфорума
Так вот, где прописать условие, чтобы отсекать из отчета строку которая совпадает с предыдущей (т.е. Выход-Выход), промежуток меньще 60 сек?
#41
by el7cartel
прямо в запросе и пропишите! можно, просто сделать, выбрать max по событию на дату, но не так точно будет
#42
by новичокфорума
поле время расчетное, и выражение прописано в вычисляемом поле. а в запросе я это условие прописать не могу, так как у меня используется функция вычислить выражение (для расчета разности между тек. и предыдущей строками)
#44
by новичокфорума
точно так? не вот так случайно?: ВЫБОР КОГДА ВычислитьВыражение("Доступ",,, "Предыдущая")="Вход разрешен" И РазностьДат(ВычислитьВыражение("Период",,, "Предыдущая"), Период, "Секунда")>60 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ "доступ - "Вход разрешен" и знак больше 60"?
#45
by Feunoir
А теперь переведи на русский язык моё условие, потом своё и сравни оба со своими пожеланиями из
#47
by новичокфорума
да, поняла, но теперь прописав Ваше условие, и установив отбор при отладке выходит ошибка...
#48
by новичокфорума
только там в отборе вместо ИСТИНА стоит ЛОЖЬ, не правильный скрин, прошу прощения
#49
by Feunoir
Да вот в том то и дело, что нет. Кощунство какое-то. Пятница, а фотки нет. Погоди. Зря ты это вписала в поле Время. Лучше бы добавить это в другое вычисляемое поле так как это не время, а условие дублирования. И отбор надо делать не на уровне всего отчета, а на уровне детальных записей. Не надо меня писать на вы, да ещё и с большой буквы. Лучше фотку в профиль прикрепи ;)
#50
by новичокфорума
прошу прощения что так долго не выходила на связь, были сбои в коннекте к данному форуму... а фотку я прикрепить не могу, так как на работе... а по поводу того, что нужно было выражение прописать в другом поле - пробовала, но выходила та же ошибка(
#51
by новичокфорума
вроде получилось, но вот теперь отбор не работает (установлен, но не отсекает строки не удовлетворяющие отбору) для удобства понимания скрин по ссылке:
#52
by Phace
Еще раз повторюсь, человек не отметился на входе, есть только выход, что посчитает в твоем примере система? Сколько времени он отработал? 0 часов, прогул?
#53
by новичокфорума
он просто не обрабатывает данную строку, до тех пор пока нам не доработают программу турникета для корректной записи один вход - один выход
#54
by Phace
Не доработают программу, разные ситуации бывают, отключили на пару часов электричество с которого запитаны турникеты с утра, людям надо на работу, что их не пускать туда, пока турникеты не заработают? Пускай все гуляют? Нет. У вас должна быть возможность внести вручную ответственным лицом данные о входе/выходе.
#55
by Phace
Это я все к чему, да к тому что твой подход к автоматизации данной задачи в принципе не правильный. Первую проблему с неработающими турникетами я описал выше. Следующая. Как быть, например, с охранником который работает посменно, в ночь? Т.е. приходит вечером, а уходит на следующий день с утра? Как время посчитается в этом случае у тебя? По хорошему должны быть графики работ для каждого сотрудника назначены. Далее. Что делать когда человек отпросился и не вышел на работу? Или отпросился на пол-дня?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Работа из 1С с Excel (да и вообще работа через OLE)
- Работа с индексами.
- Некорректная работа выгрузки в 7.7бухгалтерию из УТ
- СКД: СКД. Программное формирование из документа.
- СКД: СКД. Понимает ли СКД ссылки на МенеджерВременныхТаблиц?
- СКД: СКД. Как задать устанавливать параметры вложенных схем СКД?
- СКД: Как в СКД вывести остатки за каждый день месяца
- СКД: СКД: Программное обращение к полям группировки СКД
- СКД: СКД. Как переоределить действие кнопки "Сформировать" отчета, созданного в СКД?
В этой группе 1С
- СКД необычный вывод остатков
- v7: Виртуальная таблица остатков и оборотов 1С++
- СКД в вычисляемом поле получить остаток по группировке
- Параметризуемые глобальные команды
- Почему не заполняется декларация по налогу на прибыль. бух. 3.0
- СКД параметр с типом Булево не принимает значение Ложь
- Управление небольшой фирмой. Дисконтные карты
- СКД: если не задано значение параметра-даты
- НаСервереБезКонтекста не работает в модуле команды
- (8.3.4.317) Теряется параметр запроса ДинамическогоСписка
- v7: Сохранение в Excel 97-2003
- Размещение общей команды на форме списка документа. УТ 11
- Как получить значение реквизита формы в модуле менеджера документа УТ 11.1
- Количество занятых ставок различается в типовых отчетах
- Корректировка реализации или Возврат от покупателя
- ЗУП 2.5 Увольнение из организации не считаются дни
- Word Делаю find execute у вставляемого текста первая буква становится заглавной.
- Обработка подбор номенклатуры в УТ 10.3
- Как в БП3.0 (БСП) получить структру адреса?
- УТ11 Возврат товаров другой организации(интеркампани)