Функция для вычисления руководителей сотрудника вверх по структуре компании
А вы сталкивались с задачей, когда нужно показывать данные на страницах Битрикс24 только для текущего сотрудника и его руководства?
Если не сталкивались, то это вопрос времени. Ситуации бывают самые разные. Например, в карточке сотрудника нужно выводить число неотгуленных дней отпуска. Логично, что такая информация не должна быть доступна для всех.
Или, пример из недавнего опыта, при помощи списков автоматизирован процесс принятия сотрудника на работу. Некоторые поля списка содержат информацию о условиях, на которые принимается сотрудник. У всех участников процесса должен быть доступ к этому процессу, но не у всех – к данным об условиях (читай, как «определённым полям списка»).
В случае с карточкой пользователя задача решается очень просто: до вывода компонента, добавляем код, который определит, какие поля показывать для каких сотрудников. Обходимся без кастомизации компонента.
В случае со списками и процессами нужно править шаблон компонента списка. Но это не вызовет изменений, препятствующих обновлениям (если всё правильно сделать).
Если показывать поле нужно сотруднику и его руководителям, то сложность тут только одна: правильно вычислить список сотрудников. Учесть нужно, что пользователь может быть сотрудником в нескольких подразделениях, что видеть информацию должен не только непосредственный начальник, но и все начальники до генерального директора. А также, администраторов портала нельзя обделить.
Чтобы ничего не забыть, была написана функция, принимающая на вход параметр «ID владельца информации» (например, сотрудника, чью карточку мы просматриваем), а на выходе выдающая «true», если текущий пользователь может иметь доступ к данным и «false» - если нет.
Заместитель руководителя отдела сопровождения в «Соль». Эксперт по внедрению Битрикс24 и построению BI-отчётов, руководитель проектов. Специализируется на адаптации CRM под задачи клиентов, автоматизации процессов и создании аналитических систем для повышения эффективности бизнеса.
{"form":{"id":3,"sid":"SALT_LICENSE_QUIZ","name":"Квиз «Выбери свой тариф Битрикс24»","signature":"3.30a079170c375e24c89a9b7d5d006437c3ecabb00d4160204116f9efea9264a4"},"questions":[{"sid":"LICENSE_TYPE","title":"Начнём! Какой тип лицензии Битрикс24 вас интересует?","required":true,"sort":100,"answers":[{"id":14,"message":"Облачный","value":"cloud","type":"radio","sort":100},{"id":15,"message":"Коробочный","value":"boxed","type":"radio","sort":200},{"id":16,"message":"Я не знаю, помогите выбрать","value":"need_help","type":"radio","sort":300},{"id":17,"message":"Я уже пользуюсь Битрикс24, нужна помощь","value":"existing","type":"radio","sort":400}]},{"sid":"CLOUD_TASKS","title":"Какие задачи хотите решать с помощью Битрикс24","required":false,"sort":200,"answers":[{"id":18,"message":"Нужна CRM - работа с лидами, сделками, счетами и другое","value":"crm","type":"checkbox","sort":100},{"id":19,"message":"Наладить коммуникацию в компании","value":"communications","type":"checkbox","sort":200},{"id":20,"message":"Оптимизировать работу отдела продаж","value":"sales","type":"checkbox","sort":300},{"id":21,"message":"Автоматизировать бизнес и настроить бизнес-процессы","value":"automation","type":"checkbox","sort":400},{"id":22,"message":"Контролировать процессы внутри компании","value":"control","type":"checkbox","sort":500},{"id":23,"message":"Нужен интернет-магазин","value":"shop","type":"checkbox","sort":600},{"id":24,"message":"Наладить процессы согласования и хранения документов","value":"documents","type":"checkbox","sort":700},{"id":25,"message":"Заниматься маркетингом - рассылки, сегментация клиентов и др","value":"marketing","type":"checkbox","sort":800},{"id":26,"message":"Вести сквозную аналитику","value":"analytics","type":"checkbox","sort":900},{"id":77,"message":"Настройка BI-аналитики","value":"bi_analytics","type":"checkbox","sort":1000},{"id":78,"message":"Внедрение ИИ","value":"ai","type":"checkbox","sort":1100}]},{"sid":"BOXED_PLAN","title":"Какой тариф коробочного Битрикс24 нужен?","required":false,"sort":300,"answers":[{"id":27,"message":"Интернет-магазин + CRM","value":"shop_crm","type":"radio","sort":100},{"id":28,"message":"Корпоративный портал","value":"corporate_portal","type":"radio","sort":200},{"id":29,"message":"Энтерпрайз","value":"enterprise","type":"radio","sort":300},{"id":30,"message":"Не знаю, помогите выбрать","value":"need_help","type":"radio","sort":400}]},{"sid":"USERS_COUNT","title":"Сколько человек будет работать в Битрикс24?","required":false,"sort":400,"answers":[{"id":31,"message":"до 5 человек","value":"up_to_5","type":"radio","sort":100},{"id":32,"message":"5-50 человек","value":"5_50","type":"radio","sort":200},{"id":33,"message":"50-100 человек","value":"50_100","type":"radio","sort":300},{"id":34,"message":"100-250 человек","value":"100_250","type":"radio","sort":400},{"id":35,"message":"250-500 человек","value":"250_500","type":"radio","sort":500},{"id":36,"message":"500+ человек","value":"500_plus","type":"radio","sort":600}]},{"sid":"CLOUD_STORAGE","title":"Сколько места в облаке потребуется?","required":false,"sort":500,"answers":[{"id":37,"message":"до 5 ГБ","value":"5_gb","type":"radio","sort":100},{"id":38,"message":"до 24 ГБ","value":"24_gb","type":"radio","sort":200},{"id":39,"message":"до 100 ГБ","value":"100_gb","type":"radio","sort":300},{"id":40,"message":"до 1024 ГБ","value":"1024_gb","type":"radio","sort":400},{"id":41,"message":"до 3 ТБ","value":"3_tb","type":"radio","sort":500},{"id":42,"message":"более 3 ТБ","value":"over_3_tb","type":"radio","sort":600}]},{"sid":"IMPLEMENTATION_HELP","title":"Нужна помощь с настройкой и внедрением Битрикс24?","required":false,"sort":600,"answers":[{"id":43,"message":"Да, нужна","value":"yes","type":"radio","sort":100},{"id":44,"message":"Не нужна, хочу внедрять сам","value":"no","type":"radio","sort":200}]},{"sid":"EXISTING_HELP","title":"Какая помощь нужна?","required":false,"sort":700,"answers":[{"id":45,"message":"Хочу сменить тариф Битрикс24","value":"change_plan","type":"checkbox","sort":100},{"id":46,"message":"Нужно обучить сотрудников","value":"train_staff","type":"checkbox","sort":200},{"id":47,"message":"Нужно настроить CRM","value":"configure_crm","type":"checkbox","sort":300},{"id":48,"message":"Нужна интеграция с 1С","value":"integrate_1c","type":"checkbox","sort":400},{"id":49,"message":"Нужен комплексный аудит портала","value":"audit","type":"checkbox","sort":500},{"id":50,"message":"Нужно наладить работу с задачами и проектами","value":"tasks_projects","type":"checkbox","sort":600},{"id":51,"message":"Нужна автоматизация процессов","value":"automation","type":"checkbox","sort":700},{"id":52,"message":"Свой вариант","value":"other","type":"text","sort":800}]},{"sid":"EXISTING_PRODUCT_TYPE","title":"Какой Битрикс24 используете сейчас?","required":false,"sort":800,"answers":[{"id":53,"message":"Облачный","value":"cloud","type":"radio","sort":100},{"id":54,"message":"Коробочный","value":"boxed","type":"radio","sort":200}]},{"sid":"EXISTING_CLOUD_PLAN","title":"Какой тариф облачного Битрикс24 используете?","required":false,"sort":900,"answers":[{"id":55,"message":"Бесплатный","value":"free","type":"radio","sort":100},{"id":56,"message":"Базовый","value":"basic","type":"radio","sort":200},{"id":57,"message":"Стандартный","value":"standard","type":"radio","sort":300},{"id":58,"message":"Профессиональный","value":"professional","type":"radio","sort":400},{"id":59,"message":"Энтерпрайз","value":"enterprise","type":"radio","sort":500}]},{"sid":"EXISTING_BOX_EDITION","title":"Какая редакция коробочного Битрикс24 используется?","required":false,"sort":1000,"answers":[{"id":60,"message":"Интернет-магазин + CRM","value":"shop_crm","type":"radio","sort":100},{"id":61,"message":"Корпоративный портал 50","value":"portal_50","type":"radio","sort":200},{"id":62,"message":"Корпоративный портал 100","value":"portal_100","type":"radio","sort":300},{"id":63,"message":"Корпоративный портал 250","value":"portal_250","type":"radio","sort":400},{"id":64,"message":"Корпоративный портал 500","value":"portal_500","type":"radio","sort":500},{"id":65,"message":"Энтерпрайз","value":"enterprise","type":"radio","sort":600}]},{"sid":"GIFT","title":"При покупке Битрикс24, мы дарим подарки. Выбери свой:","required":false,"sort":1100,"answers":[{"id":66,"message":"Скидка до 20% на выбранный тариф","value":"discount","type":"radio","sort":100},{"id":67,"message":"Экспресс-аудит Битрикс24","value":"audit","type":"radio","sort":200},{"id":68,"message":"Курс по внедрению Битрикс24 + курс для пользователей","value":"courses","type":"radio","sort":300}]},{"sid":"EXISTING_GIFT","title":"Всем клиентам мы дарим подарки. Выбери свой:","required":false,"sort":1200,"answers":[{"id":69,"message":"Скидка до 20% на выбранный тариф","value":"discount","type":"radio","sort":100},{"id":70,"message":"Экспресс-аудит Битрикс24","value":"audit","type":"radio","sort":200},{"id":71,"message":"Курс по внедрению Битрикс24 + курс для пользователей","value":"courses","type":"radio","sort":300}]},{"sid":"CLIENT_NAME","title":"Введите имя","required":false,"sort":1300,"answers":[{"id":72,"message":"Имя","value":"name","type":"text","sort":100}]},{"sid":"CLIENT_EMAIL","title":"Введите email","required":false,"sort":1400,"answers":[{"id":73,"message":"E-mail","value":"email","type":"text","sort":100}]},{"sid":"CLIENT_PHONE","title":"Введите телефон","required":true,"sort":1500,"answers":[{"id":74,"message":"Телефон","value":"phone","type":"text","sort":100}]},{"sid":"COMPANY_INDUSTRY","title":"Сфера деятельности компании","required":false,"sort":1600,"answers":[{"id":79,"message":"Сфера деятельности","value":"industry","type":"text","sort":100}]},{"sid":"CLIENT_COMMENT","title":"Комментарий","required":false,"sort":1700,"answers":[{"id":80,"message":"Комментарий","value":"comment","type":"textarea","sort":100}]},{"sid":"PERSONAL_DATA_CONSENT","title":"Нажимая кнопку «Отправить», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Согласии на обработку персональных данных","required":true,"sort":1800,"answers":[{"id":76,"message":"Согласен","value":"Y","type":"checkbox","sort":100}]},{"sid":"MARKETING_CONSENT","title":"Я соглашаюсь получать рекламно-информационные материалы в соответствии с Политикой обработки персональных данных ООО «Соль»","required":false,"sort":1900,"answers":[{"id":81,"message":"Согласен","value":"Y","type":"checkbox","sort":100}]}],"config":{"version":1,"managed":true,"items":[{"sid":"LICENSE_TYPE","mode":"question","step":1,"sort":100,"condition":null},{"sid":"CLOUD_TASKS","mode":"question","step":2,"sort":200,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["cloud","need_help"]}},{"sid":"BOXED_PLAN","mode":"question","step":2,"sort":300,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["boxed"]}},{"sid":"EXISTING_HELP","mode":"question","step":2,"sort":700,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["existing"]}},{"sid":"USERS_COUNT","mode":"question","step":3,"sort":400,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["cloud","need_help"]}},{"sid":"EXISTING_PRODUCT_TYPE","mode":"question","step":3,"sort":800,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["existing"]}},{"sid":"CLOUD_STORAGE","mode":"question","step":4,"sort":500,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["cloud","need_help"]}},{"sid":"EXISTING_CLOUD_PLAN","mode":"question","step":4,"sort":900,"condition":{"questionSid":"EXISTING_PRODUCT_TYPE","operator":"in","values":["cloud"]}},{"sid":"EXISTING_BOX_EDITION","mode":"question","step":4,"sort":1000,"condition":{"questionSid":"EXISTING_PRODUCT_TYPE","operator":"in","values":["boxed"]}},{"sid":"IMPLEMENTATION_HELP","mode":"question","step":5,"sort":600,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["cloud","boxed","need_help"]}},{"sid":"EXISTING_GIFT","mode":"question","step":5,"sort":1200,"condition":{"questionSid":"EXISTING_PRODUCT_TYPE","operator":"answered","values":[]}},{"sid":"GIFT","mode":"question","step":6,"sort":1100,"condition":{"questionSid":"LICENSE_TYPE","operator":"in","values":["cloud","boxed","need_help"]}},{"sid":"CLIENT_NAME","mode":"contact","step":7,"sort":1300,"condition":null},{"sid":"CLIENT_EMAIL","mode":"contact","step":7,"sort":1400,"condition":null},{"sid":"CLIENT_PHONE","mode":"contact","step":7,"sort":1500,"condition":null},{"sid":"COMPANY_INDUSTRY","mode":"contact","step":7,"sort":1600,"condition":null},{"sid":"CLIENT_COMMENT","mode":"contact","step":7,"sort":1700,"condition":null},{"sid":"PERSONAL_DATA_CONSENT","mode":"contact","step":7,"sort":1800,"condition":null},{"sid":"MARKETING_CONSENT","mode":"contact","step":7,"sort":1900,"condition":null}],"contactSids":["CLIENT_NAME","CLIENT_EMAIL","CLIENT_PHONE","COMPANY_INDUSTRY","CLIENT_COMMENT","PERSONAL_DATA_CONSENT","MARKETING_CONSENT"]}}