Хочу представить вашему обозрению новый функционал для корпоративного портала, который помогает сотруднику узнать ответ на эти вопросы.
[spoiler]
Обычно сотрудник идет к бухгалтеру и вопрошает - покажите мне мой расчетный листок! Бухгалтер вздыхает, что его оторвали от авансового отчета, и печатает бумажку. Хорошо если сразу, а то бывает и подождать нужно какое то время.
Вообще, многие кто работали в крупных компаниях, знают, что расчетные листки им приносят сразу же после выдачи зарплаты, ну чтобы каждый раз бухгалтерию не напрягать, с одной стороны, а с другой - такое требование прописано в трудовом кодексе. К сожалению очень многие, особенно небольшие компании, это требования просто игнорируют в первую очередь потому, что печатать листки, разносить их сотрудникам и при этом соблюдать конфиденциальность - это работа, это время и это деньги!
И работа, надо сказать, в основном ручная и в большинстве случаев плохо автоматизирована.
Однажды этой проблемой озадачилась и компания 1С-Битрикс, и мы принялись думать, как ее решать. У нас как и у многих компаний в России используется решение "1С:Зарплата и управление персоналом", где и хранится необходимая информация.
Хорошо бы, думали мы, чтобы сотрудник сам мог без обращения в кадры получать свой расчетный листок. Сделать доставку листка не составляет никакого труда, но самое главное - как обеспечить конфиденциальность. Надо ли говорить, что данные по зарплате должны быть надежно защищены и нужно было не просто гарантировать, а железно обеспечить, чтобы они не попали не тем.
Варианты были следующие:
1) Генерировать расчетные листки в 1С и рассылать их по электронной почте.
1С умеет отправлять почту, можно было написать функционал, который это делает. Главный недостаток - плохо с конфиденциальностью. Электронная почта не может гарантировать.
У нас используется Exchange, а соответственно в этом случае письма хранились бы на сервере, а к серверу имеет доступ сисадмин. Внешние ящики? Ну уж увольте.
Кроме того, у большинства почта не запаролена, и, пробравшись к компьютеру я смог бы легко открыть Outlook и найти нужные письма, тем более рассылались бы они регулярно.
2) Выкладывать листки в некоторую персональную папку сотрудника или на корпоративный портал в личный кабинет
Проблема та же, папки настраивает сисадмин, а к корпорталу у нас имеют доступ некоторые разработчики, которые обкатывают функционал. Имея доступ к коду, к базе, при желании можно докопаться до чего угодно.
3) Дать всем сотрудникам доступ в 1С
Это хороший способ. Нужно приобрести лицензии на каждого сотрудника, настроить 1С на доступ через браузер. С конфиденциальностью вроде все хорошо, но данный вариант на наш взгляд не так удобно масштабировать до уровня большой компании. Почему?
Зарплата как мы знаем выдается по графику, и спрос на расчетные листки обычно имеет пиковый характер. Первый день два после начисления, желающих поинтересоваться особо много, потом нагрузка резко падает. Представьте что у вас в компании 1000 сотрудников, и многие из них почти одномоментно решат разузнать подробности о пришедшей смс-ке с суммой.
При этом 1С:ЗУП наверняка приобреталась в расчете на то, что пользоваться ей будут несколько бухгалтеров и специалистов HR, а тут нагрузка увеличится в десятки и сотни раз. Если не поставить хорошее оборудование, то работа в 1С будет затруднена, т.к. сотрудники устроят подобие DDOS-атаки на нее.
и наконец мы пришли к варианту, на котором решили остановиться
4) Обеспечить доступ в 1С с корпоративного портала
На стороне 1С при этом публикуется веб-сервис, который по запросу с портала отдает данные. В 1С создается табличка, где сопоставляются сотрудники и ID пользователей портала. Сотрудник авторизуется на корпортале и данные авторизации используются для того, чтобы идентифицировать сотрудника и показать ему именно свой расчетный листок.
Но сразу стало понятно, что схема не очень надежна. Если я подсмотрю у моего коллеги логин на корпортал, или зайду просто с его компа с сохраненной авторизацией, то тут же все узнаю.
Решили сделать двухфакторную идентификацию, как в банковских картах. Мало иметь саму карту (быть авторизованным на портале), но чтобы ей воспользоваться - нужно знать еще и PIN-код. Так и решили оставить название - PIN, ведь он понятен почти всем.
Схема работы стала выглядеть следующим образом:
- бухгалтер заходит в 1С, находит табличку "Доступ к расчетным листкам", выбирает там сотрудника и генерирует ему PIN.
- печатается документ с пинами каждому сотруднику. Люди получают отрывной листок с фамилией и своим PIN для дальнейшего использования
- сотрудники заходят на корпортал, авторизуются, идут на специальную форму и вводят данные
- портал оправляет запрос веб-сервису 1С, передавая ФИО сотрудника, PIN код и детали запроса. Если все в порядке - 1С генерирует расчетный листок и отдает ответ на запрос. Если нет - сообщает код ошибки.
В принципе да. Но есть в этой схеме вот какой недостаток. PIN-коды знает бухгалтер (в отличие от банковского работника), и сотрудникам отдавать их в специально запечатанном непросматриваемом на свет конверте - проблематично. А если PIN-коды печатаются просто на бумаге, то в процессе транспортировки до сотрудников, есть риск что они могут утечь.
Это конечно, еще полдела, ведь кроме знания PIN-кода вам нужно будет еще и авторизоваться на портале под этим пользователем, но в этом деле лучше подстраховаться. Ну и кроме того, по ФИО сотрудника не совсем правильно идентифицировать, ведь они могут и совпасть.
Придумали улучшение схемы. И вот она:
Итоговая архитектура
Веб-сервис 1С дополнился новым методом: активацией доступа и генерацией PIN-кода. Теперь бухгалтер генерирует из 1С и печатает на бумажке для сотрудников не сразу PIN-код, а код активации.
Ищем функционал в «1С: Зарплата и управление персоналом» в пункте меню Сервис:
Шаг 1. Получение кода активации (делает бухгалтерия).
1. Открываем меню «Выдача кода активации»: Сервис-Интеграция с «1С-Битрикс: Корпоративный портал»-Выдача кода активации.
Нажимаем Добавить , открывается новый документ Выдача кода активации:
Кнопкой Добавить формируем запись по сотруднику, автоматически генерируется код активации
В одном документе, может быть перечислено несколько сотрудников, что облегчает работу бухгалтерии.
Нажимаем кнопку "Печать" и отправляем на принтер документ, который выглядит следующим образом:
Как видно, документ состоит из двух частей. Первая с подписью, на которой сотрудник подтверждает обязанность получать расчетный листок на корпортале, остается в бухгалтерии. Вторая с кодом активации - отдается сотруднику.
Конечно, есть возможность массово напечатать эти листки для всех сотрудников, которым представлен доступ. При этом документы печатаются по три штуки на один лист.
Итак, с отрывным листком с кодом активации сотрудник идет на корпоративный портал в раздел "Сервисы - Зарплата и отпуск". Почему отпуск? Потому что попутно к расчетным листкам решили еще выдавать сотрудникам количество оставшихся дней отпуска Самое сложно было придумать архитектуру, а лишний веб-сервис добавить не проблема!
Сотрудник еще не знает пин-код и его нужно получить. Нажимаем на ссылку "получить пин".
Сотрудник выбирает юрлицо в котором он работает (корпортал один, но юрлиц может быть несколько) и вводит код активации.
После нажатия кнопки "получить ПИН", портал обращается к веб-сервису 1С и передает ID текущего сотрудника, код активации, юрлицо и другие служебные данные.
По коду активации 1С в табличке находит сотрудника, генерирует PIN, записывает туда ID сотрудника на портале, который активировал PIN и разрешает доступ к просмотру расчетного листка. ВСЕ ЭТО ДЕЛАЕТСЯ БЕЗ УЧАСТИЯ БУХГАЛТЕРА.
Веб-сервис сообщает порталу статус операции и в случае успешной активации выводит PIN-код:
Далее сотрудник может воспользоваться первоначальной формой и запросить необходимые данные. В этом случае веб-сервису передаем ID сотрудника, PIN, параметры запроса и служебные данные. Если все совпадает, получаем результат.
Расчетный листок открывается в новом окне (1С сама генерирует готовый HTML для отображения)
(данные естественно вымышленные, в битриксе дворники пока не работают )
Можно запросить остаток дней отпуска:
результат вас возможно порадует, а возможно и нет
Что и требовалось.
В дополнение скажу, что в 1С есть еще один интерфейс - журнал запросов (см.самый первый скриншот). Он показывает кто, когда и что запрашивал с помощью данного функционала.
По каждой транзакции есть подробная информация:
Кстати, на скриншоте четко видно, что PIN-код скрыт.
Это служебный функционал, на основании которого также можно делать какие-то выводы и аналитику, как с технической, так и с организационной стороны.
Преимущества нашего решения:
1) Конфиденциальность. Данные видит только тот, кому они предназначены.
2) Производительность. Веб-сервис дает относительно небольшую нагрузку на 1С, даже при одновременном обращении многих сотрудников одновременно.
3) Безопасность 1С, к ней не нужно организовывать доступ.
4) Просмотр на корпоративном портале там где есть Интернет. Удобство.
Это хороший пример организации своего рода самообслуживания сотрудников. Тема HR SelfService сегодня набирает популярность и мы будем продолжать делать шаги в этом направлении.
Данное решение мы планируем скоро представить рынку как готовое и тиражное. Функционал на стороне портала выйдет в 1С-Битрикс: Корпоративный портал 10.5, а для 1С:ЗУП будет выпущено дополнение, аналогично тому, которое реализовано для выгрузки сотрудников.
Очень будем признательны за ваши замечания и предложения!
PS
в качестве расширения функционала для крупных компаний мы планируем реализацию некоторого подобия "кэширования", когда расчетные листки предварительно генерируются в ЗУП и сохраняются там в сформированном виде (в формате HTML, PDF или XLS). И запросы сотрудников уже не будут вызывать генерацию отчета на лету (как это сделано сейчас). Кроме того, факт генерации расчетных листков вызовет событие на корпортале, которое может сгенерировать массовую рассылку в jabber или sms о том, что доступны расчетные листки!
Фото: