Для меня, как для руководителя отдела, это постоянно было предметом головной боли и хотелось навести порядок в этом вопросе.
[spoiler]
Как я хочу видеть
Запрашиваю в бухгалтерии остатки отпусков на конец текущего года и вбиваю их на КП (при желании это легко автоматизировать, но мне кажется пока более удобным раз в год сверяться с бухгалтерией).
Сотрудник отмечает желаемый период для отпуска, выделяя его мышкой, при этом система не даёт выбрать больше дней, чем осталось нераспланированных. Такой период получает статус "запланированный отпуск", сотрудник может менять и удалять его.
Руководитель может двигать все запланированные отпуска. Затем меняет статус на "подтвержденный отпуск", теперь даты отпуска не меняются. На календаре этот статус выделяется интерфейсно.
Если незапланированных дней отпуска нет, сотрудник не может добавить отсутствие вида "запланированный отпуск" (и я соотв. тоже), но может добавить отсутствие других типов: "больничный", "отпуск за свой счет", "отсутствие за счет отработки". Все эти отсутствия тоже требуют подтверждения.
Что получилось
Сначала это был отдельный скрипт на php, но постепенно я нашел время, сделал компонент и довел его до состояния внедрения на КП. Для сотрудника он показывает его отдел, а для руководителя - подчиненных его отделов. Статус подтверждения - это активность инфоблока, а свойства отпуска и привязки к пользователю те же, что для графика отсутствий. Таким образом, этот компонент может жить на КП рядом с графиком отсутствий и работать с теми же данными: после подтверждения внутри отдела отсутствие будет сразу отображаться в общем графике.
А чтобы было совсем просто, сделал отдельный
Как пользоваться
Ставим модуль через маркетплейс, он создает в корне портала файл planner.php (если не было), где подключается нужный компонент. Открываем страницу в браузере а режиме правки, выбираем инфоблок отсутствий (либо заводим отдельный, если это необходимо):
Получаем календарь:
Если включен параметр учета остатков отпусков, то возле фамилии каждого сотрудника показано число оставшихся дней, а руководитель видит плюс, позволяющий менять остатки.
Для простоты дни отпуска хранятся в виде одного числа в пользовательском свойстве "Число дней отпуска" (UF_DAYS), которое автоматически создается при добавлении дней.
При этом остатки отпусков нигде не хранятся, а высчитываются всякий раз на основе запланированных периодов.
Выделяем нужный период, появляется форма редактирования:
После сохранения период будет закрашен не полностью, это означает, что он не подтвеждён:
Клик на овал позволяет редактировать запись, а двойной клик мышкой на незакрашенную область вызывает диалог подтверждения.
Руководитель может нажать на любого сотрудника, это позволит добавить запись за него, типы записей берутся из свойства инфоблока графика отсутствий.
В итоге получаем такую картину:
Особенности работы
В текущем варианте компонент успешно решает задачу отдела техподдержки битрикса, надеюсь, пригодится кому-то ещё.
Доступен в нашем
Обновление от 15.07.2014
Теперь можно включить отображение и управление сотрудниками нижестоящих подразделений. В этом случае директор будет видеть всех сотрудников компании.
Кроме того появилась возможность писать примечание для отсутствия:
Затем оно отображается в всплывающей подсказке:
Обновление от 02.03.2015
- можно работать с отсутствиями короче суток (со всеми кроме отпусков);
- в настройках компонента выставляется группа, которая имеет доступ ко всем данным, админ видит всё;
- интерфейс позволяет выбрать нужный отдел (при наличии доступа);
- появился итоговый отчет за текущий месяц;
- можно выгружать запланированные отсутствия и итоговый отчет в эксель.
В июльском обновлении 2019 года отображаются праздничные дни и переносы выходных. Кроме того, появилась опция автоматического начисления дней отпуска каждый месяц (исходя из 28 дней в год).
Установили модуль, ошибок не было при установке. Но когда открываем страницу planner.php, то нет настроек компонента.
В режиме пхп видим:
Доступен ли компонент через меню в виз. редакторе?
А что вы видите при нажатии на шестеренку?
Теперь все выводится, только почему-то блок Запланированные отсутствия выводит все записи за все года, а не только за 2013...
Может предложете свой вариант, подумаю, что можно сделать?
Вроде на скриншотах в статье у Вас не выводятся отпуска за 2011 год...
Если я нахожусь в 2013 году, лучше не выводить предыдущие записи, а если надо, вывести ссылку Все.
Сделаю фильтр чтобы показывались записи только текущего выбранного года и неподтвержденные.
Думаю его надо добавить в версии 14.5 или 15.0 в крайнем случае.
У других выводятся сотрудники, у меня нет. Вот и спрашиваю, как он подтягивает сотрудников.
У одних там 3 сотрудника отображается, у других все сотрудники, у меня никого, хотя я там типа всех начальников начальник, командиров - командир.
Мне никого не показывает.
но после нажатия на + и введения числа ничего не происходит...
но у некоторых сотрудников почему-то высчитывает отпуск в -
Решается это, в принципе, легко:
сразу после:
а лучше через фильтр.
Поэтому хранится остаток отпусков за все года и, соответственно, за все года идет расчет. В вашем случае лучше написать изначально сумму с учетом всех лет.
Например, после включения компонента у сотрудника оказался -121 день. По бухгалтерии у него 14 дней, сохраните для него в пользовательское поле 135 дней.
Хочу спросить:
как можно добавить пользователя, который может видеть отпуска всех сотрудников без исключения и , соответственно, контролировать/редактировать их. Т.е. у нас есть сотрудник в отделе кадров, который занимается отпусками сотрудников и следит за тем, чтобы соблюдались регламенты выхода. Если, например, руководитель отдела ошибется, то этот сотрудник из отдела кадров его оповестит или сам вручную изменит отпуск.
Как можно такое организовать?
Спасибо еще раз!
Например, график отсутствий корпортала может показыать все отсутствия и давать править их сотруднику отдела кадров.
А то у нас из всех 50 человек только два в списке.
Почему так?
А то он не видит.
Нет, не должен. Список сотрудников получается на основе привязки текущего пользователя к структуре
компании.
А какую задачу вы хотите решить таким образом?
Там решена эта задача.
При попытки ввести интервалы со временем в одном дне 19.05.2014 12:00 - 19.05.2014 14:00 у человека списывается 2 дня
Но не очень понятна задача, которую вы решаете: разве можно брать отпуск на два часа? Насколько я знаю, отпуск считается днями.
Может, в вашем случае просто надо использовать другой тип отсутствия, это же не отпуск?
Например, мы завели у себя тип "отсутствие в счет отработки".
Отсюда появилось время.
А не проще использовать
А у вас в модуле именно эта функция есть.
Как это сделать?Сейчас видны сотрудники только прямого подчинения.
Напишите пожалуйста, каковы ваши планы по дальнейшей разработке этого продукта.
Будет ли возможно хотя-бы чтобы администратор видел график по всем сотрудникам компании?
Спасибо!
Выпустил обновление, теперь в настройках компонента появилась опция "показывать сотрудников нижестоящих подразделений".
Если у вас администратор - директор компании, он будет видеть всех.
Еще вопросы:
-когда кто-то запросил отпуск на один час результатом в график показывает 2 дня;
-когда кто-то запросил отпуск на один день результатом в график показывает 2 дня;
В чем может быть проблема?
Будут ли доработки по этим вопросам?
Спасибо!
решили заюзать ваше решение
вопрос: как настроить сортировку сотрудников, хотя бы по алфавиту
Подтверждно: отпуск ежегодный [22.12.2014 - 31.12.2014]
Думаю многим это необходимо для отдела кадров, после формирования графика отпусков на год.
Удобно было бы использовать Ваш модуль не только для отпуска, но и для прочих отсутствий. Скажем, если человек половину дня отсутствует.
Спасибо.
1.Совершенно не могу понять связи с "графиком отсутствий" и "планированием отпусков" - почему отсутвия переносятся в отпуска без нашего участия,, при этом добавляя совершенно непонятные строчки? Рассмотрю на своём примере - брал 2 часа на получение справок 21го февраля, что нормально отражено в графике отсутствий, но когда я стал выставлять дни отпуска в планировании отпусков, вдруг обнаружил совершенно странную строчку, в которой упоминается 21е число как 2 дня а не 2 часа! Во первых не понятно вообще зачем она, во вторых почему 2 дня? На сами дни отпуска это не влияет, но такое выдаётся у многих и это сильно смущает. (скриншоты бы добавил но не вижу как это можно сделать)
2 Неясность - никак и нигде не смог найти где настраивается кто может подтверждать отпуск в модуле планирование отпусков. Получилось так , что у нас любой сотрудник, который относится к "руководителям" может сам себе выставить отпускные дни и сам же их себе же и подтвердить. Что не очень понятно, т.к. данный отпуск должен согласовывать вышестоящий руководитель, например генеральный директор. Если есть описание и настройки по данному модулю прошу прислать ссылку.
Возможно есть более подробное описание работы с вашим модулем, но я его не смог найти
- можно работать с отсутствиями короче суток (со всеми кроме отпусков);
- в настройках компонента выставляется группа, которая имеет доступ ко всем данным, админ видит всё;
- интерфейс позволяет выбрать нужный отдел (при наличии доступа);
- появился итоговый отчет за текущий месяц;
- можно выгружать запланированные отсутствия и итоговый отчет в эксель.
Такой вопрос: компонент подключается к инфоблоку Оргструктура->График отсутствий.
В него попадают также события из персональных календарей, если пользователь, заводя событие через свой календарь, выставил у него признак absence_type равным «Отсутствую». Таким образом, насколько я понимаю, все события, которые отображаются в стандартном Графике отсутствий, должны отображаться и в Вашем компоненте. Но события из персональных календарей не показываются.
Можно ли каким-то образом отобразить эти события в компоненте?
Огромное спасибо за очень полезный модуль!
С установкой проблем не возникло, все ок. После установки столкнулся вот с чем:
Администратор портала и "Группа с полным доступом:" не могут устанавливать лимиты отпусков другим сотрудникам и не могут назначить другим сотрудникам отпуска. После длительного тестирования, удалось выяснить, что проблема возникает в момент записи, сбрасывается признак "включая подотделы" и фильтр "подразделение", страница сбрасывается, не записав значение, и я вновь получаю самое верхнее подразделение. Или это только у меня так?
Спасибо.
Также хочу поблагодарить Вас за Ваш труд.
В параметрах компонента есть настройка для выбора группы пользователя, которым доступны все данные - это хорошо, конечно.
Возник такой вопрос - не планируете ли дополнить функционал, чтоб появилась подобная настройка, в которой выбирается группа, для которой доступны все данные (и админские права), но только в рамках своего подразделения?
Т.е. если очень большая компания с большим количеством своих подразделений, то не хочется давать права людям видеть/влиять на отпуска других/смежных подразделений, когда в каждом есть свой человек, который следит за этим.
Думаю, данная опция была бы очень полезна многим компаниям.
Спасибо!
Спасибо за проделанную работу.
У нас возник такой момент:
Руководитель отдела когда проставляет отпуск ежегодный, то уведомление вышестоящему руководителю не приходит.
Уведомление приходит только если подчиненный не является руководителем отдела.
Можно ли сделать чтобы руководитель отдела сам не мог подтвердить свой отпуск, а подтверждал только его руководитель?
Спасибо за работу над модулем, все удобно, но...
У нас по какой-то причине нельзя добавить дни отпуска сотрудникам находящимся не в прямом подчинении у руководителя, а в подотделах. Просто для удобной работы у нас есть отделы в которых есть только начальник, но в подотделах подчиненные есть.
Что делаем: ставим галочку "включая подотделы", находим нужного сотрудника, нажимаем плюс, вводим нужное количество дней, нажимаем Enter. Страница обновляется, галочка подотделов слетает (соответственно никого не видим) и ничего не происходит. Количество дней как было "0" так и осталось. Если подчиненные находятся в том же отделе, то добавление происходит корректно. У администратора та же проблема, ничего добавить он не может.
Инфоблок UF_DAYS добавил вручную, поскольку сам он не появился, полагаю что он создался бы при первом запросе к нему, но сообразил уже позже.
Есть ли уже какое-то известное решение такой проблемы?
там есть момент что он подтягивает из инфоблока График отсутствий - все типы отсутствий видимо в виде списка и потом использует внутри при создании отсутствия и списка тип отсутствия.
я даже нашел места где он это делает - но никак не могу понять -
как ему задать только параметр - чтобы он например только Ежегодный отпуск вытягивал.. а все остальное не брал...????
Из интересных изменений: подгрузка праздничных дней РФ и возможность автоматически начислять каждый месяц дни отпуска (из расчёта 28 дней в год). При этом, если отпуск выпадает на праздничные дни, то за эти дни отпуск не вычитается.
Что касается печатной формы - нет, такое не планируется.
Спасибо.
А изначально откуда дни подгружаются? У меня при установке у некоторых сотрудников было указано количество дней, а у других нет
даже без поддержки он вполне себе работает