В последнее время мне на глаза попалось несколько запросов в техподдержку, где разработчики, да и сами клиенты хотели бы реализовать возможность оформления отпуска с помощью бизнесс-процессов, но так, чтобы не пользователь выбирал, кто будет утверждать, а он сам определялся автоматически. [spoiler]
Исходные данные: 1)Корпоративный портал 2)Инфоблок со структурой компании
Реализация: 1)Создаем бизнесс процесс, например «Оформление отпуска» 2)Создаем переменную бизнесс процесса с ID «aproved», с типом привязка к пользователю
3)Создаем простенькую структуры бизнесс процесса
Теперь нам необходимо реализовать логику самого автоопределения начальника отдела. Однако также стоит учитывать, что человек делающий заявку также может быть начальником небольшого отдела. Поэтому я придумал такой ход — если пользователь отправивший заявку на отпуск является начальником, то его запрос передается вышестоящему начальству, т.е. Такой особый группе пользователей с начальниками, и только после их общего согласования начальник подотдела уйдет на заслуженный отпуск. Иначе, если это обычный работяга, то его запрос перейдет начальнику отдела.
Где $HEAD_ID = 0; - инициализация ID начальника отдела $STRUCTURE_IB_ID = 5; - ID инфоблока в котором хранится структура компании $DEPARTMENT_ID = 0; - инициализация ID группы пользователей с главными начальниками $DEFAULT_USER_APROVE_ID = 1; ID - пользователя по умолчанию, который будет обрабатывать заявки если не найден начальник отдела либо иной форс-мажор. $BOSS_GROUP_APROVE_ID = 1; - ID группы пользователей с главными начальниками — В нашей реализации это группа администраторов, однако при небольшой доработке, можно брать пользователей из структуры компании
Базовый принцип реализации подобного механизма мы рассмотрели. Интересную информацию, описание некоторого API Бизнесс процессов Вы можете найти в нашей документации http://www.1c-bitrix.ru/download/manu...izproc.pdf
А вообще, если по уму, раз видна такая регулярная необходимость получать босса, то надо вам сделать функцию а-ля GetBoss($USER_ID,$DefaultBoss) или что-нибудь в этом роде, хотя бы в бизнес-процессах. Если ещё доступ к ней в штатных полях действий прикрутить - вообще хорошо.
да, чтобы не ломать CUser, сделать новый класс для интранета. хоть патрон, хоть босс, не важно. я имел ввиду, что сделать в штатном функционале битрикса, а не каждому свои приписки. получать руководителя юзера в корпортале - весьма востребованная операция, достаточная для того, чтобы это сделать, я думаю.
Базовый принцип реализации подобного механизма мы рассмотрели. Интересную информацию, описание некоторого API Бизнесс процессов Вы можете найти в нашей документации http://www.1c-bitrix.ru/download/manu...df
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».