Русский
Русский
English
Статистика
Реклама

Битрикс24

Меняем страницу просмотра элемента универсальных списков в коробочном Битрикс24

08.09.2020 10:16:23 | Автор: admin
Всем привет.

Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редактирования. Единственное отличие если у пользователя права только на чтение, то на странице не будет кнопок Сохранить и Применить. Согласитесь, не самый приятный интерфейс.



И поэтому когда на работе возникла необходимость использования универсальных списков, я решил поменять страницу детального просмотра, благо мы используем коробку, и возможности для кастомизации просто неограниченные.

ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ

Создатели Битрикс24 крайне не рекомендуют менять интерфейс корпоративного портала, поскольку в коробке публичная часть приравнивается к ядру, и при обновлении системы есть риск, что все ваши модификации будут стёрты.

Если же вы решите скопировать нужные шаблоны в папку local и издеваться над ними как хотите, то при обновлении они затронуты не будут. Но и новые фичи к ним тоже не будут применены.

Поэтому единственно верный способ в данном случае это модификация DOM-дерева через Javascript

По сути нам нужно всего-то подменить ссылку на детальную страницу в таблице списка:



Однако на деле это не так просто реализовать, т.к. нужно лезть в компонент, отвечающий за вывод универсальных списков и править ссылку там.

Поэтому мы пойдём иным путём через Javascript будем открывать страницу в слайдере, используя битриксовую библиотеку SidePanel.

Сделать это можно двумя способами в init.php и своём модуле. Также необходимо зарегистрировать свою JS-библиотеку.

И хотя второй способ более удобен, я покажу вам именно первый, а в конце статьи дам ссылку на свой модуль.

Итак, поехали. Все действия нужно выполнять в папке local.

Для начала нужно создать отдельную папку, где будет храниться наша библиотека. Назовём её, к примеру, viewer, и будет она иметь следующую структуру:

/viewer
-/js
--viewer.js // наша js-библиотека
-include.php // файл, который мы будем подключать в init.php


Здесь немного остановимся. Для php-кода я создал отдельный файл, который потом подключу в init.php, чтобы не засорять последний.

Давайте теперь зарегистрируем нашу библиотеку с помощью метода старого ядра CJSCore::RegisterExt:

// include.php// т.к. в битриксе есть js-библиотека viewer, то нужно использовать другое названиеCJSCore::RegisterExt('elementviewer', [     'js' => '/local/viewer/js/viewer.js', // путь к библиотеке    'rel' => ['SidePanel'] // слайдер]);

Осталось только подключить данную библиотеку на странице универсальных списков методом CJSCore::Init, и, казалось бы, дело в шляпе можно приступать к написанию самой библиотеки.

Однако не всё так просто, т.к. перед подключением необходимо проверить, что мы находимся на нужной странице. Делать это лучше с помощью регулярных выражений, т.к. id списка в адресе может меняться

// include.php$pattern = '/\/lists\/(\d+)\/view\//'; // часть адреса страницы универсального списка, где (\d+) = id списка$server = Bitrix\Main\Context::getCurrent()->getServer(); // объект Server, потребуется для получения адреса страницыif(preg_match($pattern, $server->getRequestUri())) {       CJSCore::Init(['elementviewer']); // подключаем библиотеку}

Итак, библиотеку подключили, осталось её написать. Для этого создаём файл viewer.js (если ранее не создали) и первым делом объявляем неймспейс с помощью функции BX.namespace:

const ElementViewer = BX.namespace('Viewer');

Теперь все переменные и функции можно объявлять следующим способом:

ElementViewer.init = function() {}


Чтобы не писать весь код в одной функции, разобьём её для удобства на более мелкие.

Первым делом нам необходимо найти на странице узел, содержащий ссылку на детальную страницу. Для этого воспользуемся функцией BX.findChildren, которая должна вернуть нам список всех объектов, содержащих ссылки на детальную страницу:

ElementViewer.findCell = function () {    return BX.findChildren(document, {        class: 'main-grid-cell-content' // css-класс узла с искомой ссылкой    }, true);}

Заодно напишем функцию, которая будет извлекать id списка и элемента из ссылки для дальнейшей работы:

ElementViewer.pattern = '/lists/(\\d+)/element/0/(\\d+)'; // часть адреса страницы детального просмотра элемента универсального списка, где первый шаблон = id списка, а второй = id элемента.ElementViewer.extractListData = function (url) {    let match = url.match(this.pattern); // проверяем ссылку регуляркой    if(match) {        return {            list_id: Number(match[1]),            element_id: Number(match[2])        };    }}

Вернёмся к BX.findChildren. Особенность данной функции в том, что она возвращает список всех объектов с указанным css-классом, и не факт, что это будет ссылка. Поэтому нам нужно выполнить проверку, и уже только после этого отменять событие открытия ссылки и открывать слайдер:

ElementViewer.init = function (sliderUrl) {    const cell = this.findCell();    cell.forEach(item => {        let itemChild = item.children;        let child = itemChild[0];        if(child && child.tagName === 'A') {            const listData = this.extractListData(child.toString()); // получаем id списка и элемента из ссылки            if(listData !== undefined) {                child.addEventListener('click', (e) => {                    e.preventDefault(); // отменяем переход по ссылке                    this.openSlider(sliderUrl, listData.list_id, listData.element_id); // открываем слайдер                })            }        }    });}

Нам осталось написать последнюю функцию, которая будет открывать слайдер. Для этого задействуем библиотеку SidePanel:

ElementViewer.openSlider = function (sliderUri, listId, elementId) {// в слайдер можно передавать данные методом POST, поэтому воспользуемся этой возможностью для передачи id списка и элемента    let sliderParams = {        list_id: listId,        element_id: elementId    }    return BX.SidePanel.Instance.open(sliderUri, {        allowChangeHistory: false,        cacheable: false,        requestMethod: 'POST',        requestParams: sliderParams    });}

Ну что же, библиотека написана, осталось вызвать функцию init после подключения. Для этого вернёмся в include.php, где проверяется адрес страницы:

if(preg_match($pattern, $server->getRequestUri())) {       CJSCore::Init(['elementviewer']); // подключаем библиотеку       $asset = Bitrix\Main\Page\Asset::getInstance();       $script = '<script>BX.ready(function() {  ElementViewer.init();})</script>';      $asset->addString($script);}

Остался последний штрих подключить наш код в init.php:

// init.php$file = $_SERVER['DOCUMENT_ROOT'] . '/local/path/to/viewer/include.php';if(file_exists($file)) {   require $file;}

Если всё сделано правильно, то при нажатии на элемент универсального списка откроется слайдер:





В заключении, как и обещал, ссылка на модуль, реализующий то же самое.

Спасибо за внимание.
Подробнее..

Как быстро получить много данных от Битрикс24 через REST API

17.01.2021 12:19:01 | Автор: admin

Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционный способ для этого - обращение к серверу через метод *.list (например, crm.lead.list для лидов) с параметром select, перечисляющим список требуемых полей.

Однако в силу того, что информация сервером выдается постранично, существует несколько стратегий для того, чтобы получить весь список, и некоторые из них позволяют ускорять процесс на порядки по сравнению с последовательным запросом страниц.

Стратегии

Ниже мы описываем три стратегии, которые мы условно назвали "ID filter", "Start increment' и "List + get".

Первые две стратегии ("ID filter" и "Start increment") предложены в официальной документации Битрикс24, но мы ниже предлагаем их "докрутить".

ID filter

Запросы отправляются к серверу последовательно с параметром "order": {"ID": "ASC"} (сортировка по возрастанию ID), и в каждом последующем запросе используются результаты предыдущего (фильтрация по ID, где ID > максимального ID в результатах предыдущего запроса).

При этом для ускорения используется параметр start = -1 для отключения затратной по времени операции расчета общего количества записей (поле total), которое по умолчанию возвращается в каждом ответе сервера при вызове методов вида *.list.

В потенциале для ускорения можно попытаться параллельно передвигаться по списку сущностей в два потока: с начала списка и с конца, продолжая получать страницы, пока ID в двух потоках не пересекутся. Такой способ, возможно, будет давать двукратное ускорение до тех пор, пока не будет исчерпан пул запросов к серверу и не потребуется включить throttling.

Start increment

Стратегия, при которой перебираются страницы путем увеличения параметра start, который является средством позиционирования курсора для получения следующей страницы.

Если перед нами стоит цель получить полный набор сущностей, то, в отличие от предыдущей стратегии, эта хорошо поддается ускорению (несмотря на то, что она требует использования параметра start, что замедляет работу сервера).

После того, как мы получили первую страницу и увидели в ней общее количество элементов (поле total), то дальнейшее ускорение запросов можно получить двумя нижеописанными способами.

Объединение запросов в батчи

Зная общее количество элементов, можно сразу создать запросы на все страницы и объединить их в батчи. (Битрикс поддерживает батчи в 50 запросов.) Использование батчей позволяет обойти ограничения на максимальную скорость запросов, так как один батч считается за один запрос при учете сервером количества получаемых запросов.

Параллельная отправка батчей к серверу

Примеры кода в официальной документации Битрикс24 REST API везде предлагают последовательную отправку запросов и описывают лишь ограничения на скорость отправки запросов. Но параллельная отправка запросов возможна и позволяет сильно ускорить обмен информацией с сервером.

Впрочем, таким образом достаточно просто перегрузить сервер, который даже при соблюдении скорости запросов начинает обрывать соединение и уходить в таймауты. Поэтому такой подход требует нахождения пределов нагрузки на сервер экспериментальным способом.

Именно такая стратегия сейчас заложена в метод get_all() в питоновской библиотеке fast_bitrix24 (пиарюсь - библиотеку написал я).

List + get

Составная стратегия, при которой при помощи стратегии "Start increment" от сервера получается сначала список всех ID по методу *.list (с указанием, что нужны только ID - 'select': ['ID']) , а потом через метод *.get получается содержимое всех полей для каждого ID. При этом в обоих шагах используются описанные выше способы ускорения "Объединение запросов в батчи" и "Параллельная отправка батчей".

Тест

Чтобы проверить эффективность этих стратегий, мы провели тест (код теста).

Тест запрашивает страницы лидов (метод crm.lead.list) через 3 вышеописанные стратегии (при этом стратегия "ID filter" реализована в один поток - с начала списка ID). Для каждой стратегии запрашиваются 1, 50, 100 и 200 страниц и замеряется время выполнения запроса.

Тест использует библиотеку fast_bitrix24 для автоматического контроля скорости запросов к серверу Битрикс24.

Тест проводим на 7-й версии REST API на списке в ~35000 лидов.

Результаты теста

Getting 1 pages:ID filter: 0.3 sec.Start increment: 0.73 sec.Getting ID list for the 'list+get' strategy, method crm.lead: 2.17 sec.List + get: 2.61 sec.Getting 50 pages:ID filter: 12.8 sec.Start increment: 21.39 sec.List + get: 1.84 sec.Getting 100 pages:ID filter: 49.67 sec.Start increment: 39.97 sec.List + get: 3.28 sec.Getting 200 pages:ID filter: 99.67 sec.Start increment: 78.05 sec.List + get: 6.36 sec.

Выводы

В целом, стратегии, использующие батчи и параллельные запросы ("Start increment" и "List + get"), показали себя лучше.

Однако при этом, к моему удивлению, стратегия "List + get" оказалась на порядок продуктивнее остальных, даже несмотря на то, что в ней приходится пробегаться по всему списку два раза. (Возможно, эту статью увидят разработчики Битрикс24 и объяснят этот феномен?)

Я не уверен в существовании высокоуровневых библиотек для PHP, позволяющих пользователю реализовывать такие стратегии, не парясь упаковкой запросов в батчи и организацией параллельных запросов с контролем их скорости. Но если вы пишете на Python - милости прошу использовать fast_bitrix24, который позволяет выгружать данные из Битрикс24 со скоростью до тысяч элементов в секунду.

Подробнее..

Разработка бизнес-процесса в Битрикс24. Советы руководителю отдела

02.02.2021 10:16:21 | Автор: admin

В прошлой части мы поговорили о советах директору по разработке бизнес-процесса в Битрикс24, сейчас же я постараюсь дать советы руководителям отделов, поскольку по моему опыту почти всегда заказчиками являются именно они, но при этом им меньше всего нужно это в итоге, от них больше всего вреда в процессе и они же меняются в фирме чаще всего. Почему так получается я не знаю и очень надеюсь что у вас это не так. А теперь давайте перейдем непосредственно к самим советам.

Совет первый: плохие процессы, бывшие до вас

Каким бы крутым специалистом вы себя не считали (возможно, что вы даже являетесь таковым) и какой бы откровенно отвратительный процесс вы не видели, то не пытайтесь с ходу налетать коршуном на сам процесс и уж тем более на тех, кто его делал (даже если это некое мифическое лицо). Если на тот момент процесс был сделан именно так и до сего момента люди им пользовались (процессы написанные в стол рассматривать мы не будем), то отсюда напрашивается сразу два вывода: во-первых, директор всё это позволил, а, во-вторых, если сделали именно так, значит, на то были причины.

Пример из жизни: новый сотрудник проработав (если перекуры и знакомства можно так назвать) всего неделю решает всем доказать что на своё место руководителя чего-то там он сел не просто так и не придумывает ничего лучше, чем начать поливать грязью тех кто придумал так сделать и тех кто это всё реализовал. Правда нужно отметить, что поскольку человек совершенно не разобрался в том, кто писал процесс, и кто придумал сделать именно так, вышло что самоучка (хотя я в этом слове ничего обидного не вижу, я, например, тоже самоучка), первый раз видел crm, ты точно лучше сделаешь и коронное я бы его уволила это именно тот человек, который стоял и слушал всё это про себя (сами понимаете, какое ответы на свои откровенно тупые вопрос стал получать великий специалист). Но если уж на то пошло, то услышать про себя такое не так уж и удивительно, как узнать что собственник хреновый управленец и ничего не понимает в бизнесе. И всё это в присутствии других сотрудников, которые внимательно слушали этот диалог. Человеку конечно потом доброжелатели всё рассказали, с рук вроде как сошло, поскольку собственнику никто не пошёл докладываться, а вот осадочек остался у всех, недоверие к новоявленному гуру скатилось до нуля, а сам человек вынужден был сесть на измену и не потому, что они всё узнали, а потому что язык длинный.

Совет второй: уже работающие процессы

Иногда процесс есть, он работает, но никто не может объяснить, почему он работает именно так, ибо процесс представляет собой франкенштейна, писавшегося и правившегося уже пару лет, всегда в авральном режиме и без чёткого ТЗ. Вероятно, что лучше всего про работу процесса вам может объяснить человек писавший его, если он ещё работает в фирме или есть способ связаться с ним, а бывший сотрудник готов уделить вам время (подсказка: почти всегда готов ответить на 1-2 интересных вопроса и почти никогда не готов рассказывать детально, особенно если ушёл давно).

Если вдруг вы решили изменить процесс, то вам нужно сначала детально провести аудит самого процесса, лично запустить его пару раз, посмотреть на проблемы, возникающие в ходе и только потом уже лезть с вашими советами, как нужно переделать. Пока вы не испытаете его на своей шкуре, вам будет сложно понять, почему у сотрудников есть претензии к процессу. Я ни разу в жизни не видел бизнес-процесса который нравился бы всем, а чтобы ещё и работал как положено. Сами должны понимать, что на бумаге после совещаний получается одно, а в жизни всё бывает совершенно иначе и, казалось бы, очевидные процессы, которые действительно могут улучшить, ускорить и удешевить работу половины фирмы игнорируются не то, чтобы отделами, а двумя-тремя отдельно взятыми людьми из-за чего работа становится парализованной.

Совет третий: если можете, то сделайте лучше

Если у вас действительно есть опыт и возможность продвигать свои решения, то при должном старании вы можете существенно облегчить жизнь тем, кто по несколько раз в день (или даже час) запускает один и то же бизнес-процесс.

Пример: в одной фирме был бизнес-процесс на оплату. Процесс хороший, нужный, но цепочка длинновата, иногда могло доходить до 5 (пяти) подтверждений, причём на абсолютно любые суммы. Если при миллионных затратах это понятно, то когда тебе весь день согласовывают 200 рублей то это очень долго. Пришёл человек и сказал теперь до 1000 подтверждает ваш руководитель, до 100000 я, а всё остальное директор. Вроде бы одна фраза, час на доработку процесса, но с учётом того, что большинство заявок были очень маленькие, работа ускорилась буквально в разы. Конечно, до того как это сказать он это с директором согласовал, но, заметьте, что после согласования это ещё и заработало, причём без дополнительных финансовых затрат.

НОВЙ ПРОЦЕСС

А теперь давайте поговорим о том, что создать новый бизнес-процесс, при этом не потерять доверие, зарплату и своё место, а ещё и сделать так, чтобы этот процесс был не очередной имитацией бурной деятельности или отчётом о ловле мух, а действительно работающим инструментом. Первым делом вы должны выявить потребность и пожелания у всех участников. То есть не взять и изобрести колесо, а найти проблемное (возможно, что пока что потенциально проблемное) место и попробовать сделать так, чтобы оно перестало быть таким. Возможно, что все острые углы можно сгладить без бизнес-процесса, но если речь идёт о крупных суммах и возможности человеческой ошибки, то иногда бизнес-процесс пускай и тормозит работу на несколько минут, но зато он является гарантом того, что невиновный не будет наказан, а провинившийся как минимум будет выявлен, а как максимум будут выявлены все те, кто этому способствовал.

Пример первый: чуть ранее я писал о том, что в некой фирме был бизнес-процесс Оплата. Появился он благодаря тому, что в бухгалтерию толпами шли сотрудники с просьбой что-нибудь оплатить, но при этом почти никогда никто не мог внятно объяснить кто утвердил эту оплату помимо руководителя, а если утвердил руководитель то было ли у него на это право. С учётом того, что почти всегда человек берет товар у поставщика и начинает использовать, после чего наступает оплата, складывалась нехорошая тенденция что под честное имя фирмы и её собственника люди берут практически всё что угодно, а потом другие люди думают, где взять денег на оплату, что делать с закупленным товаром или оплаченной услугой и вообще было ли это нам нужно. Но самое страшное, когда деньги бездумно выдавались в обход руководителя, а он по факту узнавал. Один раз приходит новый руководитель из соседнего отдела и говорит: Представляете, я только что узнал что у меня сотрудник в Москву в командировку уехал. Мало того, что без моего разрешения, так ещё и клиент сомнительный в плане перспектив, зато у него офис не особо далеко от стадиона где сегодня играет команда, за которую менеджер болеет. Вот что прикажете думать?!. Бухгалтерия, кстати, так и не смогла ответить почему выдали деньги в обход руководителя. Промямлили что-то про то что менеджеры всегда так делают и плавно съехали с темы.

Пример второй: продукция которая привозится под заказ. Вот как менеджеру заставить закупщика закупить и привезти товар или кладовщика переместить с другого склада? А что делать если не то купят или переместят не вовремя? В этот момент на помощь могут придти бизнес-процессы по закупке и перемещению товара.

Как видите, идею для нового бизнес-процесса всегда легко найти, но при этом следует заранее узнать как минимум пожелания тех, в чьих интересах это делается, нужно ли им это или у них есть другой стабильный канал обмена информацией который прекрасно работает. В идеале нужно узнать пожелания вообще у всех участников процесса чтобы выяснить что им нужно, найти золотую середину и исключить вариант того, что вы банально не сможете заставить людей работать с новым бизнес-процессом (особенно тех, кто вам не подчиняется).

Рассчитываем себестоимость и когда это окупится

Автоматизация ради автоматизации это однозначно плохая идея, особенно в той ситуации когда она никому не нужна и при этом никогда не сможет окупиться. Перед написанием бизнес-процесса своими силами и уж тем более при заказе на стороне не поленитесь посчитать расходы на это мероприятие и когда оно сможет окупиться. Не забудьте, что в процессе со временем придётся что-то править, возможно что-то переделывать и т.п.

Пример: внутри некой фирмы учёт рабочего времени ведётся через Битрикс24. Да, наверное вы не хуже меня знаете про многие нюансы такого контроля, но не суть. Лучше так чем вообще никак. Руководство видит, что народ откровенно обнаглел, то есть регулярно опаздывает кто на 10 минут, кто на 20, меняют рабочие графики и иногда даже раньше уходят. Ввели штрафы за опоздания (не за каждое конкретное, а за совокупность опозданий), но пока ничего не подсчитано штрафовать же нельзя, верно? Верно, стали считать руками. Долго, люди сбиваются, надоедает это всё. Временные затраты на подсчёт, выявление аномалий и аналитику меньше двух часов, процесс повторяется каждый месяц. Стали искать людей кто напишет бизнес-процесс. А дальше уже не смешно, цены берутся буквально с потолка 30, 50, 70. Чего? Тысяч рублей, разумеется! К тому же полный доступ к CRM, серверу, в корпоративную сеть и желательно сразу контракт на обслуживание подписать годовой, ну и лицензию через них продлить. И каждый раз говоришь ребята, а вы техническое задание читали? За что такие деньги?. Если кратко, то за то, что это понты автоматизация, а хороший понт хорошая автоматизация дороже денег. Как итог рассчитали окупаемость на самом дешевом варианте, получается что-то в районе 15 лет по сравнению с тем, чтобы брать грузчика за 250 рублей в час и не товар носить отправлять, а сидеть в тёплом офисе и считать на калькуляторе. И не 2 часа ровно, а как сделает то свободен.

Проект был свёрнут и отброшен как нерентабельный, но тут уж всё совсем просто и очевидно было. А бывают ситуации намного сложнее, где сразу так вот и не понятно как долго будет окупаться, но если вы собрались в фирме работать долго, то лучше рассчитать сразу, до начала работ, чтобы в процессе не оказаться крайним.

Выбираем правильного подрядчика и читаем договор

Если в фирме есть человек, который пишет процессы, то не факт, что он сделает это хорошо. И далеко не факт, что известнейшая организация, входящая, например, в ТОП-10 по России по внедрению Битрикс24 сделает хорошо. Не спрашивайте почему, просто поверьте на слово.

Итак, прочитав абзац выше вы поняли, что никому нельзя верить и вообще лучше бы сесть на измену написать процесс самому, но у вас не хватает опыта/нет времени/нет желания или другая причина, чтобы не делать это самому. Окей, не вопрос, так даже правильнее что руководитель руководит, а специалист делает, поэтому давайте выберем подрядчика.

Если у вас в фирме есть человек, который этим занимается, то обязательно дайте ему шанс. Либо он сделает сам, либо он же будет искать людей на выполнение этого процесса, т.е. участвовать ему придётся в любом случае, а если с ходу заявить у тебя не хватит опыта или ты никогда это не делал, то есть шанс что человек очень сильно обидится, настолько сильно, что просто уйдёт из фирмы.

Если человека нет или он говорит что, нужна помощь со стороны, то можно начинать искать исполнителей. Тут сложно дать какой-то однозначный совет как найти фирму, поэтому я напишу список вещей, которые вам просто нужно принять:

1. Если фирма мега-известная, то им может быть просто плевать на вас и ваши запросы, поскольку работы хватает и так.

2. Небольшая фирма может плясать вокруг вас до получения денег, а потом просто забить на вас, так как ваши отзывы и претензии особого вреда им не нанесут. Впрочем, так же может поступать и большая фирма.

3. Наличие офиса не делает фирму лучше или хуже, равно как и месторасположение офиса и его оформление.

4. Узнайте сколько человек в штате и сколько проектов ведут (конечно же если это возможно) и для себя прикиньте, хватит у них времени на вас или нет.

5. Максимально внимательно читайте договор, особенно в части того, что вы получите в результате выполнения всего объема работ, какая оплата полагается за каждый этап и как вы будете согласовывать принятие каждого этапа.

Несмотря на то, что скорее всего у вас горят сроки и вчера нужно было если не закончит, то хотя бы начать работы, не торопитесь максимально быстро начинать работу с первыми попавшимися людьми, ведь, скорее всего, работать будете с ними несколько лет и те нюансы, на которые вы сейчас готовы закрыть глаза, станут камнем преткновения в дальнейшем. Хотя, если вы эффективный менеджер, может даже более эффективный чем Сова, то можете не заморачиваться мелочами :-)

Принимаем промежуточные этапы

Если вы заказали написание большого бизнес-процесса, то вряд ли там работы меньше чем на 15-20 человеко-часов, что с учётом всех согласований, параллельной загруженности и т.п. обычно работы могут растянуться на 1-2 недели. Многие совершают ошибку полагая, что принимать нужно разом и в конце срока, ведь проект не такой уж и огромный, поэтому можно вполне подождать неделю. Так вот, несколько раз я имел возможность убедиться в том, что даже при написанном ТЗ выяснялось что люди подписывали его не глядя и процесс в принципе не может работать как нужно по вине заказчика. Нюансов там может быть много, поэтому не ленитесь проверять как можно раньше, особенно в тех местах где формы ввода данных и сложные ветвления процесса. Хуже не станет. Исполнитель хоть и проведёт минимальное тестирование, но это будут базовые тесты именно того, что процесс работает правильно с логической и математической точки зрения, а не с точки зрения фирмы.

Принимаем работу и документацию

Несмотря на то, что вы уже потратили кучу времени на чтение различных документов, провели бессонные ночи в ожидании того, когда же процесс будет готов и вы наконец-то начнёте им пользоваться или хотя бы отчитаетесь руководству о том, что всё готово, не старайтесь ставить финальную подпись до того, как вы проверите работу. Если каждый сотрудник запустит 1-2 варианта процесса и потратит на это менее 5 минут времени, то вряд ли это скажется на прибыли фирмы, зато позволит избежать многих проблем в будущем. Из самых распространённых это невидимые комментарии, открепившиеся файлы, недоступность данных после завершения процесса, длительная смена ответственных лиц, зависание процесса на дни или недели из-за отсутствия ключевых сотрудников и т.п.

А ещё многие забывают про такую мелочь, как документацию к процессу. По своему опыту могу сказать, что когда пишешь большой процесс то неплохо помнишь где что как устроено только первые неделю-две активных правок, а когда там всё работает и никто не просит трогать то забывается в течение 1-2 месяцев. Если процесс висел без доработок несколько месяцев, а то и лет, то иногда кажется что проще переписать с нуля, нежели править старый.

ВАС НЕ БУДУТ РУГАТЬ, А ПРОСТО ЗАМЕНЯТ

Именно эту фразу я хочу донести до вас в качестве основного посыла статьи. Как бы не косячили рядовые менеджеры обычно именно они и приносят фирме почти всю прибыль, а руководители отделов они как бы дополняют менеджеров (хотя формально конечно же это не так) и фирма без руководителей может прекрасно жить неделями или даже месяцами, а один менеджер переживает 2-3 руководителей. Именно поэтому почти всегда после крупной ошибки, которая стоит фирме шести или семизначных сумм все предпочитают сменить руководителя на нового и свалить на старого все ошибки. Этому человеку в итоге всё равно ничего не будет, но поскольку кто-то должен ответить за всё на него просто повесят все обвинения заочно. Это намного проще и дешевле, чем, например, обвинить в некомпетентности одного из директоров и уж тем более собственника.

Подробнее..

Помогаем HR-специалисту 6 проверенных приемов автоматизации найма с помощью Битрикс24

14.10.2020 10:20:11 | Автор: admin

В статье мы рассказываем, как упорядочить найм сотрудников по шагам

  1. Информируем о вакансии

  2. Ведём до найма

  3. Автоматизируем скучное

  4. Оформляем и выводим на работу

  5. Отчитываемся по итогам

  6. Помогаем с адаптацией.

Для оптимизации работы HR-специалистов есть профильные решения: Potok, FriendWork Recruiter, Хантфлоу. Но внедрение ещё одной системы не порадует ни айтишников, ни директора. Решение использовать для работы с персоналом Битрикс24. Ведь часто он уже внедрён в организации как внутренний портал, для ведения клиентов в CRM или управления задачами.

Если в компании работает до 100 человек, даже стандартные функции Битрикс24, без доработок, закроют основные HR-потребности.

Распространяем информации о вакансии в разных каналах

Работа с кандидатами, особенно при постоянно открытых вакансиях, похожа на ведение сделки с клиентом. Важно правильно сделать оффер, расширять воронку, двигать кандидата по стадиям, подогревать интерес к компании и вакансии.

Решение использовать возможности CRM для управления наймом и адаптацией.

Начнём с оформления вакансии и расширения воронки.

В дополнение к размещению на популярных ресурсах, рекомендуем для каждой постоянной вакансии сделать посадочную страницу. Это позволит:

  1. Дать любую информацию нет ограничения на объём или содержание.

  2. Использовать все виды контента фото, видео, ссылки на соцсети и другие ресурсы.

  3. Рекламировать вакансию в соцсетях, используя контекстную или баннерную рекламу.

  4. Разместить форму, заявка с которой автоматически появится в CRM-системе.

Мы подготовили универсальный шаблон смотрите и скачивайте.

Универсальный шаблон посадочной страницы для найма сотрудника (собрано в Битрикс24)Универсальный шаблон посадочной страницы для найма сотрудника (собрано в Битрикс24)

Такой лендинг собирается на конструкторе Битрикс24 за два часа. Если вакансий много сделайте копию и поменяйте текст и картинки.

Чтобы отслеживать конверсию, используйте форму Битрикс24 и сбор статистики по посещениям от Яндекса или Google. Вы поймёте, сколько кандидатов, которые просмотрели вакансию, решили оставить заявку.

Работаем с заявкой в Битрикс24

После передачи заявки в Битрикс24 нужно вести кандидата по этапам воронки, попутно подогревая интерес к вакансии и компании: пригласить в группу в соцсетях, написать письмо о приеме вакансии на рассмотрение.

Используйте для этого сделки Битрикс24. Чтобы не смешивать продажи и найм, стоит создать отдельное направление сделок и настроить стадии под ваш процесс. Мы рекомендуем:

  1. Новая

  2. Обрабатываем

  3. Уточняем информацию

  4. Собеседование

  5. Решение

  6. Отправили доучиваться

  7. Приняли

  8. Отказ

    1. Наш отказ

    2. Кандидат отказался

Каждая стадия разные ответственные и автоматизация.

Смотрите, как теперь удобно контролировать, сколько кандидатов и на каких стадиях:

Фильтруйте кандидатов по вакансии, на которую они откликнулись или по дополнительным параметрам. Например, по уровню желаемой зарплаты.

Автоматизируем работы с кандидатом

С помощью сделки Битрикс24 вы получаете доступ к автоматизации:

  1. Отправки письма и SMS кандидатам

  2. Постановки задачи для коллег

  3. Назначения встреч

Например, мы в компании ИНТЕРВОЛГА используем:

  1. Автоматическое письмо о получении отклика кандидата

  2. Автоматические задачи для HR-специалиста и коллег

  3. Создание встречи с кандидатом и заинтересованным сотрудником с нашей стороны

  4. Отправку job-offer после собеседования

Для примера приведём вариант job-offerа нашей компании:

{Имя кандидата}, добрый день! Зафиксирую договорённости по итогам собеседования:

Вы прошли отбор на позицию {название позиции, на которую выходит кандидат}.

Приглашаем вас присоединиться к нашей команде.

Ваши будущие задачи: {описание обязанностей подтягивается из специального внутри позиции, которую заранее забили в каталог Битрикс24}

Выход на работу {дата и время выхода на работу подтягивается из сделки}

Вас встретит и всё покажет {имя и телефон ответственного за встречу новичка}

Вот ссылка на документ с общими правилами {система доступа в офис, дресс-код, рабочее время, обед}.

Не забудьте взять с собой {ссылка на список документов для приёма на работу}

Условия вашей позиции {приём на работу с испытательным сроком или без}

Заработная плата во время испытательного срока {цифра из сделки} , после испытательного {цифра или данные из текстового поля внутри сделки}.

Напоминаю, что у нас есть всё для комфортной работы: {плюшки в офисе}

Поздравляю с хорошим стартом!

Используйте автоматизацию работы с кандидатами это экономит время и уменьшает вероятность забыть о хорошем кандидате.

Делаем отчёты и думаем про KPI

Отчёты нужны и для сотрудника HR-команды, и для руководителя. Сотруднику они помогут показать объём работы и достижение показателей.

Руководителя отчёты интересуют с точки зрения улучшения показателей и введения KPI. Базовым отчётом рекомендуем делать воронку продаж. Она показывает конверсию на каждом шаге и позволяет понять, где теряются потенциальные сотрудники.

Так выглядит воронка, когда работа налажена плохо:

Видно, что до собеседования мало кто доходит.

А вот так выглядит здоровая воронка продаж:

Совет: выберите в фильтре конкретную вакансию и отслеживать ситуацию по ней.

Оформляем сотрудника на работу

Вывод человека на работу это понятный, но хлопотный процесс.

Чтобы никто ничего не забыл, можно автоматически делать задачу, когда наш кандидат переходит в статус Принят. Контролировать исполнение задачи удобно по чек-листу.

Нам достаточно одной задачи и чек-листа, но можно и разделить их на отдельные задачи. В описании и пунктах чек-листа даются ссылки на нужные шаблоны документов. Оформление сотрудника на работу по чек-листу становится понятным делом и занимает 1,5 часа.

Скажем честно для увольнения сотрудника тоже используется такая шаблонная задача с чек-листом. Своеобразный аналог обходного листа.

Помогаем с адаптацией

Когда сотрудник оформлен и вышел на работу начинается следующий этап адаптация и обучение.

Начните с базы знаний для нового сотрудника. Сделайте отдельную группу Битрикс24, где в закреплённом сообщении собраны ссылки на нужные документы и регламенты. При приглашении сотрудника в Битрикс24, добавьте его в эту группу.

Наблюдение: во многих компаниях есть культура развития сотрудника. Это особенно распространено в IT есть Career Development Plan и специальный процесс целенаправленного роста квалификации. В таких компаниях после адаптации процесс не заканчивается. HR-служба и наставники отслеживают контрольные точки, планируют assessment-процедуры и знают про каждого какой следующий шаг.

Совет: используйте канбан-доску группы и задачи Битрикс24 для демонстрации прогресса сотрудника. Задача в таком случае перемещается из стадии в стадию по мере роста сотрудника. Это добавит прозрачности и элемент соревновательности в обучение сотрудников.

Мнения практиков

К сожалению, не так много компаний в 21 веке понимают, что главный ресурс это время. Компания, которая не автоматизирует процессы рекрутинга, столкнётся с множеством проблем в обозримом будущем. Отсутствие кадрового резерва, не систематическая работа с кандидатами, потеря откликов, отсутствие статистики малая часть из них. Прямо и косвенные это отразится и на прибыли и на статусе компании на рынке. Мало кому приятно слышать негативные отзывы о рекрутерах, а они рано или поздно появятся и скажутся на воронке подбора персонала.

Данное решение позволит избежать ошибок на старте и систематизировать работу. У руководителей будет статистика и возможность управления, у исполнителей интуитивно понятная, удобная система работы с персоналом.

Борисова Яна Владимировна
Заместитель Генерального директора ЭСК Энергомост
Победитель бизнес премии Сколково в области Коучинга в работе с персоналом.
Международный HR с собственным бизнесом в ЮВА.

ИНТЕРВОЛГА активно применяет Битрикс24 в организации внутренних процессов. Наш HR-специалист фактически является заказчиком и драйвером автоматизации. Вот ее мнение о применении Битрикс24 в работе:

Ведение кандидата от отклика до адаптации в компании должно происходить на одном ресурсе. Мы выбрали для этого знакомый Битрикс24. Это полезный инструмент для всех сотрудников, в том числе и для hr-ов. Когда не хочется переходить на другие сервисы, настраивать синхронизации, все процессы можно выполнять в едином пространстве Битрикс24.

При использовании мобильной версии Б24 и интеграции с сайтами по поиску сотрудников, отклики прилетают в реальном времени. Удобно для быстрой обработки заявок. Также в дальнейшем история по кандидату хранится на одном ресурсе, и доступна не только сотрудникам hr-отдела, но и руководителям.

Правильно настроенные HR-процессы на базе Битрикс24 помогли повысить эффективность работы с кандидатами и избавиться от бумажной волокиты.

Яндулина Алёна Дмитриевна, HR-специалист

Осваивайте эти приемы и комментируйте. Мы готовы рассказать:

  1. Как сделать в Битрикс24 корпоративный университет

  2. Как провести оценку сотрудников 360

  3. Как показать понятную карту офиса.

Подробнее..

Дорожная карта внедрения корпоративного портала Битрикс24 в крупной компании. Цели, стадии, место в инфраструктуре

11.09.2020 16:15:38 | Автор: admin

Суть статьи коротко


Битрикс24 часто воспринимается как просто CRM или task-трекер.
У больших компаний своя специфика, им нужно единое окно доступа к сервисам.
Это и есть Корпоративный портал.
В статье дана детальная дорожная карта внедрения в большой компании и показана последовательность шагов.
image

Проблема: Коммуникация в коллективе от 150 человек


Чем больше в компании сотрудников, тех хуже с единым информационным полем. Люди перестают узнавать друг друга в лицо, решение рабочих вопросов усложняется, коммуникации рвутся.

Причина этого проста человек как биологический вид комфортно работает с 5-10 близкими товарищами, а теоретический предел знакомых 150 человек. Таков максимальный размер первобытного племени.

В 21 веке люди умеют решать серьезные задачи и собирают для этого крупные коллективы. Но проблемы биологии никуда не делись без специальных средств коммуникация в большом сообществе будет плохой.

Плохой медленной, неэффективной, требующей кучи бумаг. Никто не любит бюрократии, однако почти всегда большая компания (даже современная) страдает именно этим усложнением документооборота.

Добавляют проблем, как ни странно, современные информационные технологии. У склада своя программа, у продавцов своя, аналитики работают в Excel, основной способ обмена электронная почта и чаты.

Все это приводит к падению эффективности. Парадокс: в 21 веке команда из трех человек в пересчете на сотрудника работает многократно эффективнее чем офисное здание из 3000 специалистов.

А должно быть наоборот: укрупнение компании помогает разделению труда и должно экономить силы людей на непрофильных операциях. Каждый может сосредоточиться на своем.
image
В чем же проблема? Где узкое место современного офиса? В избытке информации, людей и программ. Не удается сосредоточиться на своем участке работы, если замена клавиатуры требует служебной записки.

Решение: Корпоративный портал меньше программ для одного сотрудника


Битрикс24 должен быть единым окном доступа к корпоративной информации и сервисам. Корпоративный интранет-портал уменьшает число программ где работает каждый человек.
image
В статье рассказано как это сделать, что потребуется подготовить на каждом этапе. Вы получите подробную дорожную карту для такого комплексного внедрения.

Внедрение состоит из пяти стадий, на каждой нужно пройти пять шагов. В каждой компании есть свои особенности, но общая логика внедрения и настройки Битрикс24 должна быть именно такой.

Блоки связаны между собой, но легко отключаются. Если для вашей компании определенный блок не актуален исключите его из плана внедрения, остальные не пострадают.

Каким компаниям подойдет этот сценарий внедрения?

Сценарий подходит производственным, строительным и сервисным компаниям от 150 до 3000 человек, где 3 и более уровня иерархии, департаменты и филиалы.

Стадия 1 Первичная настройка. Приглашение сотрудников


Можно привести коня к водопою, но нельзя заставить его пить.

Цель первой стадии обеспечить минимально жизнеспособный набор сервисов, чтобы сотрудники могли начать пользоваться системой.

На этой стадии выполняется загрузка оргструктуры, базовой информации о компании и сотрудниках, предоставляются первые полезные сервисы.
image
Важно чтобы людям в компании было приятно получить приглашение в интранет-портал Битрикс24, чтобы там была актуальная информация и полезные сервисы. Нужна конфетка. В каждой компании она своя.

Пример главной страницы портала крупной организации (показан интерфейс HR-директора):
image

Вопросы


Если вы руководитель проекта создания внутреннего интранет-портала, для успеха на первой стадии вам потребуется ответить на вопросы:
  1. В какой программной системе сейчас хранится актуальная информация об оргструктуре компании: департаментах, отделах, руководителях?
    Типовые ответы:
    MS Active Directory;
    1С: Зарплата и Управление Персоналом;
    нигде (в этом случае точкой правды о структуре становится Битрикс24).

    Ответы, которые сделают первую стадию дольше:
    структура департаментов в AD, а должности и состав отделов в ЗУП;
    у нас несколько доменов и экземпляров ЗУП;
    права доступа сотрудников хранятся в сторонней системе;
    все сложно, нужен обмен в режиме реального времени.
  2. Где сейчас хранится официальная информация компании? Кто подготовит ее публикации?
  3. Организована ли работа с вакансиями в цифровом виде? Есть ли специализированная программа или личный кабинет на сайте с вакансиями? Как часто появляются новые вакансии? Нужна ли автоматическая публикация вакансий в портале?
  4. Что приятного мы можем предоставить сотрудникам на первой стадии? Варианты ответа:
    меню ближайшего кафе или корпоративной столовой
    справочник телефонов и дней рождения
    автоматизировать болезненный процесс (даже из следующей стадии).


Ресурсы


Для успеха первой стадии вам нужно привлечь:
  1. Грамотного внедренца Битрикс24 с компетенциями интегратора. Выбор лицензии, установка системы и формирование общего видения с лидерами проекта в компании основа успеха.
  2. Специалистов по ИТ. Конфигурацию и количество серверов под требуемую нагрузку (диск, количество пользователей, вычислительные задачи, интеграции) рассчитает компания-внедренец.
  3. HR, маркетинг и PR-отделы для предоставления информации.

Диаграмма Гантта первой стадии внедрения
image

Что будет готово после окончания первой стадии:


  1. Оргструктура импортирована, автоматически обновляется при изменениях в материнских системах.
  2. Сотрудники входят в интранет-портал, пользуясь единым паролем домена (или отдельным паролем).
  3. Доступна вся официальная информация, нужная сотрудникам.
  4. Обновления неформальной жизни, корпоративные праздники и объявления доступны.
  5. Приказы и распоряжения, новости и события известны сотрудникам из единого источника.
  6. Сотрудники работают со своими файлами из любого места, доступно разделение по правам доступа и синхронизация с локальными дисками на рабочих местах.
  7. Современный интерфейс, удобное мобильное приложение и своя информация нравятся людям.

Ссылки по теме


  1. Как вовлечь людей в работу с корпоративным порталом
  2. Правильная установка коробочной версии Битрикс24
  3. Синхронизация Bitrix24 с Active Directory. Проблемы и решения

Стадия 2 Внутренние процессы

На живой кости мясу недолго нарасти.

На второй стадии наша задача запустить жизнь внутри корпоративного портала. Если на первой стадии мы давали конфетку, чтобы облегчить старт, то на второй запускается сразу много полезных разделов.
image
Вторая стадия ключевая. Теперь сотрудник сможет каждый день решать свои проектные и организационные задачи в Битрикс24.
Пример страницы Новому сотруднику
image

Вопросы

Для второй стадии потребуется собрать требования подготовить много информации:
База знаний.
  1. В каком виде представлена корпоративная база данных? Например:
  2. Требуется ли разделение доступа к базе знаний (по должностям или подразделениям)?

Управление проектами.

  1. Какие системы в компании используются для управления проектами?
    ПланФикс / Jira / Youtrack / Redmine / MS Project / Специальные программы?
  2. Хотят ли пользователи этих проектных программ перейти на другую систему? (Например, в раздел Задачи и проекты Битрикс24?)
    если да, нужно собрать требования и настроить Битрикс24
    если нет, нужно определиться с интеграцией между Битрикс24 и системой управления проектами. Самые распространенные создать задачу из Б24, отследить прогресс в проектной системе и получить отчет по состоянию задач и проектов в Живой ленте Битрикс24
  3. Какие важные проекты для компании являются типовыми и часто повторяемыми? Например:
    старт производства нового объекта
    открытие новой торговой точки
    запуск крупной маркетинговой акции
    корпоративные мероприятия: конкурсы, праздники, конференции, слёты дилеров
    Для планирования, отслеживания и аналитики типовых проектов в Б24 существуют готовые решения, интегрируемые с MS Project.
  4. Как сейчас назначаются, проводятся и протоколируются совещания? Как связаны задачи с итогами совещаний?

Бухгалтерия и кадры. Заказ справок.

  1. Налажен ли кадровый учет в 1С: ЗУП? Какие отраслевые особенности есть в оформлении отпусков и режима рабочего времени? Например
    Вахтовый режим для части сотрудников
  2. Какие 3-5 видов документов чаще всего запрашивают сотрудники в бухгалтерии и HR-службе?

Сервисы для сотрудника.

  1. Что в офисах приходится бронировать? Переговорные? Курьерские задачи? Автомобили и специальную технику? Как выглядит процесс согласования?
  2. Сколько сервисных (ИТ- и бытовых-) поступает в соответствующие службы в неделю? Какие виды заявок самые частые или болезненные?
  3. В каких ИТ-системах отслеживается исполнение заявок?
  4. Хотят ли ИТ-служба и АХО сменить свои системы на Битрикс24?
    если да, нужно собрать требования и настроить Битрикс24 под конкретный бизнес-процесс заявки
    если нет, нужно определиться с интеграцией между Битрикс24 и системой управления проектами. Самый распространенный вариант создать заявку через Битрикс24 или по почте и получить ответ.
  5. Какие процессы в офисе чаще всего повторяются и идут малоэффективно? Например, как выглядит бизнес-процесс командировка в жизни?

image
Документооборот
  1. Какие системы документооборота внедрены в компании? Довольны ли ими? Какую часть требуемого документооборота покрывают эти системы?

    Какие документы должны согласовываться быстро по простым маршрутам (для них бизнес-процессы будут настроены Битрикс24)? Примеры:
    заявки на оплату с помещением в платежный календарь;
    справки;
    коммерческие предложения.
  2. Как согласуются новые договоры? Сколько стадий, ответственных, сколько видов маршрутов? (Если менее 10 на каждый вопрос рекомендуется подключить и настроить Мини-СЭД для Битрикс24 ).
    Есть ли в компании требования к документообороту согласно ГОСТ Р 7.0.97-2016 или других стандартов, подразумевающих учет, хранение и быстрый доступ к десяткам видов документов?
    (Если да рекомендуется внедрение 1С: Документооборот и интеграция его с Битрикс24).

Ожидаемые результаты второй стадии


  1. Люди активно пользуются корпоративным интранетом для решения частых задач.
  2. Сократилось число писем по электронной почте и физических бумаг.
  3. Сотрудники меньше переключаются между различными программами и могут больше времени отдать основным обязанностям
  4. Руководство получило инструменты прозрачного контроля различных процессов и картину занятости служб.


Ссылки по теме


  1. Сервис единого окна Битрикс24
  2. Как организовать документооборот в Битрикс24? 6 задач и 4 способа решения
  3. Методика разработки маршрутов согласования документов в СЭД
  4. Управление типовыми проектами
  5. Сервисные заявки и техподдержка на Битрикс24

Вторая стадия ключевая в проекте. Как правило, именно ради этого компания хочет внедрить работающий интранет-портал. Но и вопросов по ней очень много.

Стадия 3 Удобство сотрудников. HR-задачи


А поцеловать?

Ключевая задача после запуска всех основных процессов в Битрикс24 кадры и счастье людей. Компания выросла, с ней вырос интранет. Это целый мир, в котором нужно разобраться. Нужно сделать людям легко.
image

Вопросы перед третьей стадией Счастье сотрудников и HR-функции


  1. Какие формальные и неформальные шаги проходит новый сотрудник? Как организован процесс адаптации новичка к работе сейчас? Например:
    есть стартовое обучение стандартам, курс молодого бойца?
    нужно сдать тесты или получить допуск?
    есть формат ознакомительной экскурсии по предприятию?
  2. Как организовано обучение сотрудников новым знаниям? Например:
    есть курсы и испытания, все проходит оффлайн;
    такого процесса нет, он должен быть построен.
  3. Есть ли процесс и специальное ПО для построения Корпоративного университета? Внедрена ли Learning Management System?
    да, например iSpring или Moodle;
    нет, но планируется.
    Если на два предыдущих вопроса ответ нет, но будет, рекомендуется настроить и адаптировать стандартный для Битрикс24 модуль Обучение и тестирование. Его возможностей достаточно для работы в первые несколько лет.
  4. Есть ли процесс замера, анализа и публикации количественных показателей? Как описаны KPI?
  5. Внедрена ли методика OKR (Objectives and Key Results цели и ключевые результаты) в компании?
  6. Какие программные продукты используются для планирования и отслеживания работы по OKR и системы KPI?
  7. Готова ли HR-служба к переносу процессов в цифровую среду?
  8. Как организован процесс публикации вакансий?
  9. Какие особенности есть у процессов найма, увольнения, адаптации, перевода?
    В этом пункте речь идет о формальной стороне вопроса, кадровом делопроизводстве
  10. Готова ли компания к применению геймификации в рабочих процессах и коммуникациях? Какие задачи стоят перед процессом геймификации?

Ожидаемые результаты третьей стадии:


  1. Люди не испытывают стресса при старте работы.
  2. Работа в портале наполнилась эмоциями.
  3. Процессы обучения и развития сотрудников ведутся в интранет-портале и прозрачны.
  4. Достижения и KPI сотрудников, прогресс по OKR прозрачны (в той мере, как это нужно компании).
  5. Кадровая служба быстрее и проще решает как технические, так и стратегические задачи
  6. Сотрудники с удовольствием общаются в Б24 по всем вопросам.


Полезные ссылки по теме


  1. Автоматизация рекрутинга и возможности для HR в Битрикс24
  2. Битрикс24 как HR-портал, центр развития персонала и корпоративный университет
  3. Пример сбора KPI сотрудника по скорости работы в CRM
  4. Специальные отчеты по эффективности
  5. Чат-бот быстрого поиска документов

Третья стадия должна дать радость работы. Она очень важна для будущего компании и ее внутреннего климата. Когда HR-службе проще работать, ее сотрудники чаще улыбаются. Это важно.

Стадия 4 Продажи


Деньги кровь бизнеса.

Продажи клиентам ключевой вопрос для всех коммерческих компаний. При построении интранет-портала крупной компании тема продаж возникает не сразу.

Почему? Ведь Битрикс24 позиционируется как CRM-система, инструмент продаж? Есть много готовых инструментов для работы с клиентами: открытые линии, продажи в чатах, аналитика вероятности сделки..?

Во-первых, компания в 150 человек всегда имеет процессы продаж и работы с клиентами. Они могут быть неоптимальными, но они есть. Продажи не главная боль, не ради этого начинается внедрение портала.

Во-вторых, эти процессы почти всегда довольно сложные. Много видов контрактов, оптовые цены, отложенные оплаты, проектные продажи, претензии. Битрикс24 CRM для такого из коробки не подходит.

Нужна адаптация CRM под процессы крупной компании, блок управления дилерами, управленческие отчеты, контроль дебиторской задолженности и аналитика работы сотрудников отдела продаж.

Именно это и делается на 4 стадии Продажи.
image

Вопросы перед четвертой стадией внедрения Б24 в крупной компании Продажи


  1. Как сейчас оцифрованы процессы продаж и работы с клиентами в компании? Есть ли CRM, регистрация обращений клиентов, аналитика продаж в разрезе рекламных каналов?
  2. Если да, рассматривает ли отдел продаж Битрикс24 как новую платформу?
  3. Какие учетные особенности работы с клиентами есть на предприятии сейчас? Например Холдинговые структуры клиента, когда по сути в одном клиенте могут быть множество:
    юридических лиц
    счетов для оплаты
    контактных лиц
    грузополучателей
  4. Бывает ли что одного клиента ведут несколько менеджеров компании (на разных стадиях или по разным вопросам)?
  5. Есть ли в компании дилерская сеть? Если да, какие вопросы управления сетью наиболее актуальны:
    Маркетинг, сбор и передача лидов дилерам
    Контроль процесса продаж (стадии, стандарты, нормы скорости ответа, чеклисты)
    Онлайн-каталог товаров с дилерскими и клиентскими ценами и наличием по складам
    Закупка дилерами у производителя
    Контроль отгрузок клиенту, логистика
  6. Нужно ли собирать контакты конечных клиентов (с которыми работают дилеры) для проведения рекламных акций, аналитики продаж и улучшения процессов?

    Из какой системы в Битрикс24 можно импортировать первичные данные для управленческих отчетов? Например:
    1С: Управление торговлей
    Microsoft Power BI
    MS Dynamics
    такой системы нет, данные нужно собирать из CRM Битрикс24
  7. Какие данные нужно предоставлять в оперативных отчетах руководителей среднего звена, а что вынести в дашбоард топ-менеджера?
  8. Кто отвечает за контроль ПДЗ (просроченной дебиторской задолженности)? Где прописаны пределы ПДЗ по типам контрагентов, правила остановки отгрузок, передачи проблемы в юридическую службу?


Ожидаемые результаты четвертой стадии:


  1. После адаптации CRM Битрикс24 адекватна реальным процессам в отделе продаж.
  2. Управление продажами в дилерской сети стало проще.
  3. Руководители среднего звена и топ-менеджеры получают аналитику по текущим показателям.
  4. Качество контроля дебиторской задолженности выросло.
  5. Сотрудники отдела продаж активно работают в своем разделе интранет-портала.

Полезные ссылки по теме



Четвертая стадия включает службу продаж и дилеров в единое информационное поле компании. Это еще 1 шаг на пути решения ключевой задачи: программ меньше, улыбок больше, руководству понятнее.

Стадия 5. Личные кабинеты

Личный кабинет каждому!

Онлайн-личные кабинеты для решения специальных бизнес-задач завершают большую пятерку внедрения. Эти кабинеты связывают в едином информационном поле сотрудников, руководителей, клиентов и дилеров.

Личные кабинеты интегрированы с бизнес-процессами компании и делают работу в целом быстрее и лучше.
image

Вопросы перед пятой стадией внедрения Б24 в крупной компании Личные кабинеты


Функции каждого кабинета связаны с процессами компании. Всегда в компании есть специфика и особенности, которые нужно учитывать при внедрении. Например, последовательность запуска или особенности процессов в ЛК.

Руководитель проекта должен выбрать 3-5 видов бизнес-пользователей или партнеров, работа с которыми болит сильнее всего: бюрократия, проблемы, жалобы, низкая скорость и эффективность.

Нужно понять, как реализованы процессы сейчас? Какие личные кабинеты нужны?

Ожидаемые результаты стадии запуска личных кабинетов:


  1. Коммуникации с внешним миром вплетены в интранет-портал: дилеры, контрагенты, клиенты.
  2. Бизнес-процессы интранет-портала покрывают всю компанию.
  3. Руководителям легко отслеживать вовлеченность по работе с претензиями, дилерами и специалистами.
  4. Скорость коммуникаций по всем направлениям выросла за счет удобных личных кабинетов.
  5. Контрагенты, дилеры, партнеры, сотрудники говорят спасибо, стало хорошо.

Ссылки по теме Личные кабинеты



  1. Лучший онлайн-проект для продвижения производителя в рознице 2018
  2. 17+ функций оптового B2B интернет-магазина. Примеры интерфейсов
  3. Личный кабинет клиента компании ЕВРАЗ
  4. Обработка претензий в личном кабинете

Пятая стадия включает в единое информационное поле компании специалистов, партнеров и контрагентов. Компания решила задачу оцифровки своей деятельности.

Полная версия дорожной карты


Хабр не дает вставить код с iframe, поэтому карта доступна по ссылке.
image

Итого


Внедрение интранет-портала в крупной компании позволяет:
  • уменьшить число переключений между разными программами для сотрудников;
  • сократить бумажный документооборот;
  • создать единую информационную среду;
  • повысить эффективность по всем направлениям работы за счет интеграции с корпоративным ПО;
  • сделать сотрудников, менеджеров, руководителей в компании счастливее.

Описанная в статье дорожная карта основа для конкретного проекта внедрения. Пользуйтесь!
Подробнее..

Создание документов на диске Google на базе событий в CRM-системах аmoCRM и Битрикс24

18.02.2021 12:05:10 | Автор: admin

Практический кейс о том, как разработать свой сценарий интеграции.

Появившиеся в 2006 году сервисы Google по работе с текстовыми документами (Google Docs) и таблицами (Google Sheets), дополненные 6 лет спустя возможностями работы с виртуальным диском (Google Drive), завоевали широкую любовь пользователей, лишив компанию Microsoft сложившейся десятилетиями монополии на работу с офисным программным обеспечением.

Вспоминается, как один консультант, занимавшийся внедрением дорогостоящих систем бюджетирования, искренне радовался появлению бесплатной электронной Google-таблицы, в которую можно поместить требуемую бюджетную модель и дать к ней доступ всем, кому нужно. Совместная работа над текстом в Интернете тоже стала повсеместной практикой с появлением Google-сервисов.

В связи с популярностью последних часто возникает задача сделать новый или обновить существующий Google-файл в привязке к событиям в CRM-системе. Например, при переходе сделки на этап Составление коммерческого предложения необходимо, взяв из CRM-системы наименование клиента и сумму сделки, создать на Google Drive предварительный текст коммерческого предложения, дать к нему доступ юристу, отправив ссылку на редактирование контракта. А когда сделка будет успешно закрыта, может появиться другая задача внести данные по закрытой сделке в Google-таблицу сбора статистики продаж.

В базовом функционале CRM-систем интеграция с сервисами Google представлена лишь в Битрикс24 и предполагает создание пустого документа на базе диска с переходом в режим редактирования при последующем клике на него.

Конечно, в маркетплейс Битрикс24 или дополнениях amoCRM можно найти определенный набор решений для закрытия тех или иных более глубоких сценариев интеграции. Но как быть, если необходимо разработать свой сценарий?

Для того, чтобы выполнить какое-то действие на Google диске своего аккаунта есть два подхода: вызвать соответствующий REST API метод или запустить написанный Google Script. Как показал наш опыт, REST API библиотека Google пока имеет гораздо более бедный набор возможностей по отношению к скриптам, например, с помощью метода create можно создать исключительно пустой документ без наполнения. Поэтому, универсальным является сейчас комбинированный подход, заключающийся в написании исполняемого скрипта, который будет вызываться извне с помощью API с определенным набором параметров.

Разберемся, какие шаги необходимо выполнить, чтобы задействовать этот подход на практике. Нашей задачей будет создать из бизнес-процесса вот такой документ, в котором данные для текста, выделенного желтым, должны прийти из CRM-системы.

Шаг 1. Создание скрипта

Перед написание скрипта мы создаем шаблон документа, папку, в которую должен сохраняться создаваемый на базе шаблона файл и копируем их ID из адресной строки браузера.

Сам script добавляется на диске точно также как мы добавляем обычный файл на него.

Мы не будем подробно комментировать код скрипта, отметим лишь, что языком программирования выступает привычный Javascript, с описанием методов любому можно ознакомиться в документации Google.

Шаг 2. Привязка скрипта к проекту Google Cloud Platform

После того как скрипт написан рекомендуем прогнать его, нажав кнопку Выполнить в редакторе. Далее вам необходимо создать проект на Google Cloud Platform. Наиболее простым вариантом для этого является нажатие кнопки Enable Google Script API по ссылке:https://developers.google.com/apps-script/api/quickstart/php.

Пройдя все шаги мастера создания API, вы скачиваете файл credentials.json, который будет нужен для работы обработчика. После этого вы берете номер проекта и привязываете его к скрипту в настройках.

Шаг 3. Публикация скрипта

Чтобы скрипт был доступен извне, его надо развернуть через кнопку начать развертывание.

Полученный идентификатор необходимо скопировать, чтобы использовать в PHP-обработчике.

Шаг 4. Написание PHP-обработчика

Для работы с API Google существует готовая библиотека, которую вы подключаете к своему проекту командой: composer require google/apiclient:^2.0

В файле с подключенной библиотекой вызываете функцию для подключения токена авторизации:

function getClient(){    $client = new Google_Client();    $client->setApplicationName('Google Apps Script API PHP Quickstart');    // перечисляем области действия токена через пробел    $client->setScopes("https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive");    // файл credential.json, полученный от Google$client->setAuthConfig('credentials.json');    $client->setAccessType('offline');    $client->setPrompt('select_account consent');    // Формируемый файл token.json    $tokenPath = 'token.json';    if (file_exists($tokenPath)) {        $accessToken = json_decode(file_get_contents($tokenPath), true);        $client->setAccessToken($accessToken);    }    // Действие если токен просрочен    if ($client->isAccessTokenExpired()) {        if ($client->getRefreshToken()) {            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());        } else {            $authUrl = $client->createAuthUrl();            printf("Open the following link in your browser:\n%s\n", $authUrl);            print 'Enter verification code: ';            $authCode = trim(fgets(STDIN));            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);            print_r($accessToken);            $client->setAccessToken($accessToken);                        if (array_key_exists('error', $accessToken)) {                throw new Exception(join(', ', $accessToken));            }        }        // Сохранение токена в файл        if (!file_exists(dirname($tokenPath))) {            mkdir(dirname($tokenPath), 0700, true);        }        file_put_contents($tokenPath, json_encode($client->getAccessToken()));    }    return $client;}

Файл с этой функцией должен быть изначально исполнен в командной строке ssh клиента php (имя файла).

При первом запуске на экране появится url, который вы открываете в своем браузере и дав необходимые разрешения копируете verification code из url ресурса приложения, который вы указали на шаге 1, вставляя его в командную строку. После этого система создает файл токена авторизации (token.json), сохраняя его в папке PHP-обработчика. Следует отметить,что данную операцию надо выполнить один раз.

С готовым файлом токена, исполняется вторая часть функции, предполагающая запуск самого скрипта.

// вызов ранее описанной функции для получения токена авторизации$client = getClient();$service = new Google_Service_Script($client);// код развернутого скрипта$scriptId = '***********************wKhTTdKL7ChremS5AkvzwlPJARnxqisW7TzDB ';$request = new Google_Service_Script_ExecutionRequest();// имя и параметры функции в рамках скрипта$request->setFunction('FillTemplate');$request->setParameters([$_REQUEST['customer'],$_REQUEST['link'],$_REQUEST['formsv'],$_REQUEST['socnet'],$_REQUEST['whatsi'],   $_REQUEST['ats'],$_REQUEST['pipeline'],$_REQUEST['outscope'],$_REQUEST['editor'],$_REQUEST['viewer']]);try {    // Make the API request.    $response = $service->scripts->run($scriptId, $request);    if ($response->getError()) {        // Обработчик ошибок        $error = $response->getError()['details'][0];        printf("Script error message: %s\n", $error['errorMessage']);        if (array_key_exists('scriptStackTraceElements', $error)) {            print "Script error stacktrace:\n";            foreach($error['scriptStackTraceElements'] as $trace) {                printf("\t%s: %d\n", $trace['function'], $trace['lineNumber']);            }        }    }     } catch (Exception $e) {    // Обработчик исключения    echo 'Caught exception: ', $e->getMessage(), "\n";}

Шаг 5. Вызов PHP-обработчика из CRM

Имея протестированный обработчик, можно запустить его в привязке к событиям CRM.

Базовым вариантом запуска является вызов исходящего вебхука в привязке к событию CRM и данному обработчику, см. cтатьи про настройки вебхуков в:

При этом, в Битрикс24 вебхук может быть встроен в бизнес-процесс, получая в качестве своих Get-параметров данные из сделки, переменных и констант бизнес-процесса.

Итогом работы данного вебхука стали добавляемые документы в соответствующую папку Google Drive:

Существенным ограничением запусков обработчиков через вебхуки является предельно допустимая длина URL, в которой будут передаваться Get-параметры. Напомним, что она составляет 4 кб (или 2048 символов).

Поэтому, если передаваемый в документ текст будет достаточно длинным, то пользователям Битрикс24 мы рекомендуем написать собственную активити бизнес-процесса. Информацию о подходах к ее разработке можно взять изданной статьи.

Подробнее..

Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 c 1С ЗУП

10.02.2021 00:11:55 | Автор: admin

В жизни так бывает, причём бывает чаще чем хотелось бы, хоть в целом и довольно редко надо интегрировать Битрикс24 с ЗУП. Сими дружественными компаниями заявлена штатная интеграция (но только для коробки Б24), которая осуществляется по следующей принципиальной схеме:

  1. Обмен инициирует всегда 1С. Это либо штатный, либо устанавливаемый самостоятельно и доступный модуль обмена, который посылает запросы.

  2. На стороне Б24 имеем в качестве точки обмена скрипт, если быть точнее скрипты (но об этом будет ниже), в одном из которых вызов метода IncludeComponent, который подключает контроллер. Он и таит в себе логику обмена.

Штатный обмен, в принципе, если быть экспертом одного из продуктов можно освоить за небольшое количество минут или часов информация представлена на одном из официальных сайтов 1С-Битрикс - https://1c.1c-bitrix.ru/intranet/employees.php.

Пролог

Нам же это скучно, поэтому ввязываемся в авантюру по интеграции ЗУП с Б24 Enterprise, а чтобы было интереснее берем закрытый объект, почти совсем не бизнес даже, а учреждение с многоуровневой и чудно ветвленой системой безопасности.

В общем, на руках бэкап Б24 с обезличенными данными и обезличенный же XML-файл обмена из ЗУП.

Итак, сама задача Хотя, нет. До самой задачи ещё далеко не помешало бы сначала наладить тестовый механизм для того, чтобы по заверениям работающий штатный алгоритм проверить.

Инструментарий:

  • Виртуальная машина VMBitrix 1 шт.

  • 1С-Битрикс24 (копия для разработки) 1 шт.

  • Файл обмена, выгруженный предположительно штатным модулем обмена 1С 1 шт.

  • VS Code + SSH FS плагин на будущее 1 комплект.

  • Postman 1 шт.

Виртуальная машина VMBitrix

По правде говоря, это никакая не виртуальная и даже не машина, а CentOS 7 (ну, или 6) со всеми вытекающими. Можно из чистой центоси сделать своеобразный и уже сконфигурированный LAMP+ для Битрикс несколькими командами.

wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh

# chmod +x bitrix-env.sh

# ./bitrix-env.sh

Для дотошных читателей следует рассказать, что виртуальная машина в реальности всё же существует. На клиентском сайте вендора в разделе скачать. Образы уже сконфигурированных ОС под популярные виртуализации выложены и в корне сайта по умолчанию уже лежит скрипт установки демо и скрипт восстановления. Именно скрипт восстановления был использован для создания локальной копии портала.

Следует ещё отметить, что VMBitrix не единственное, но самое быстро-разворачиваемое универсальное окружение для Б24.

1С-Битрикс24 Enterprise

Не буду много распространяться про то, что отличает Энтерпрайз от других коробок. Наверное, в данном повествовании хватит акцента на цене и уровне ответственности. Тем более, модули связанные с масштабированием не используются. Впрочем, как и многосайтовость.

Файл обмена из 1С ЗУП

Если вы хоть раз занимались интеграцией двух систем, будучи ответственным только на одном продукте, то вам знакомо как велик соблазн спихнуть на ту сторону любую мелочь, которую лень проверять на своей стороне. Этот недуг поражает даже самых ответственных людей, выступающих в любой роли и с любым уровнем погружения. Поддавался недугу и я.

Попытка повлиять на то чтобы пришли нужные данные сами чудесным образом, догадавшись, куда и в какой последовательности записываться, для очистки совести тоже осуществлена.

VS Code + SSH FS плагин

Итак, вооружившись доступом к файловой системе проекта, мы начинаем свое путешествие в увлекательный мир не задокументированных интеграций.

Не зря в самом начале статьи была реплика про то, что Обмен инициирует всегда 1С. Для понимания архитектуры это был первый шаг, в модуле обмена на стороне 1С прописан адрес скрипта, выступающего узлом обмена в Б24 по умолчанию это /bitrix/admin/1c_intranet.php.

В нем, согласно правилам системы ничего не хранится. Подключается один из служебных скриптов системного модуля Интранет(intranet) /bitrix/modules/intranet/tools/1c_intranet.php.

Именно этот модуль нам дает программный интерфейс для организации работы с сотрудниками и структурой на портале. Модули в BitrixFramework занимают место модели в архитектуре MVC.

И именно для взаимодействия с ним написанный системный компонент intranet.users.import.1c вызывается из служебного скрипта при помощи метода IncludeComponent. Компоненты в BitrixFramework занимают место контроллера в архитектуре MVC. На вход компонента подается массив параметров, если не вдаваться в тонкости, то настройки из модуля Интранет, которые задаются в административной части корпортала.

Postman

При упоминании должности почтальона в наших широтах перед глазами встает образ скорее Печкина из Простоквашино, нежели герой Кевина Костнера из одноименного заокеанского фильма.

Но наш герой программа, адрес тоже известен https://www.postman.com/ .

Эпилог

Путем нехитрых манипуляций вычитки кода того самого системного компонента и экспериментов с программой-почтальоном за пару часов выработан полуавтоматических алгоритм, позволяющий подсунуть в Б24 файл выгрузки из 1С.

Что важно знать про обмен:

  • Протокол обмена GET

  • Нужно несколько последовательных запросов с разными параметрами

Если файл выгрузки 1С ЗУП в архиве, то нужно использовать галочку Использовать сжатие zip, если доступно в настройках модуля Интранет в админке. И наоборот если XML без архивной оболочки галочку нужно снять.

Первый запрос, авторизация по логину и паролю:

GET http://портал/bitrix/admin/1c_intranet.php?mode=checkauth

Возвращает PHPSESSID. Его необходимо в последующем передавать с каждым запросом.

Второй запрос:

GET http://портал/bitrix/admin/1c_intranet.php?mode=init

Подготавливает/вычищает папку для загрузки файла. Возвращает что-то вроде zip=no

file_limit=204800, если всё отработало.

Третий запрос:

GET http://портал /bitrix/admin/1c_intranet.php?mode=file&PHPSESSID=tmfi6bf67llse3akv7cv13m6h8&filename=import.xml

В случае успешной передачи и записи файла на сервер возвращает success. Будьте бдительны нужно передать в Body сам файл бинарно, и указать его название в GET-параметре filename.

Четвертый запрос:

GET http://портал /bitrix/admin/1c_intranet.php?mode=import&PHPSESSID=tmfi6bf67llse3akv7cv13m6h8&filename=import.xml

Надо отсылать несколько раз с теми же параметрами, пока не пройдут последовательно все шаги импорта. Все эти шаги также можно вычитать в коде вышеуказанного компонента, осуществляющего импорт. Возвращаемые значения:

progress

Временныетаблицыудалены.

progress

Временныетаблицысозданы.

progress

Файлимпортапрочитан.

progress

Временныетаблицыпроиндексированы.

progress

Проверкаструктурыуспешнопройдена.

progress

Метаданныеимпортированыуспешно.

progress

Обработано2из2пользователей.

progress

Загрузкапользователейзавершена.

progress

Обработано11из11записейграфикаотсутствий.

progress

Загрузкаграфикаотсутствийзавершена.

success

Импортуспешнозавершен.

Постскриптум

Наверняка, кто-то из комментаторов укажет на другие инструменты, или сможет поделиться похожим опытом. Возможно, кто-то проведет параллели с импортом каталога из УТ в БУС.

По правде говоря, сам тоже, хоть в статье и опустил, но руководствовался аналогичным опытом. Продолжение следует в следующей статье расскажу как решалась сама задача породившую такую хитроумную организацию труда.

Подробнее..

Recovery mode Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 c 1С ЗУП

10.02.2021 02:16:32 | Автор: admin

В жизни так бывает, причём бывает чаще чем хотелось бы, хоть в целом и довольно редко надо интегрировать Битрикс24 с ЗУП. Сими дружественными компаниями заявлена штатная интеграция (но только для коробки Б24), которая осуществляется по следующей принципиальной схеме:

  1. Обмен инициирует всегда 1С. Это либо штатный, либо устанавливаемый самостоятельно и доступный модуль обмена, который посылает запросы.

  2. На стороне Б24 имеем в качестве точки обмена скрипт, если быть точнее скрипты (но об этом будет ниже), в одном из которых вызов метода IncludeComponent, который подключает контроллер. Он и таит в себе логику обмена.

Штатный обмен, в принципе, если быть экспертом одного из продуктов можно освоить за небольшое количество минут или часов информация представлена на одном из официальных сайтов 1С-Битрикс.

Пролог

Нам же это скучно, поэтому ввязываемся в авантюру по интеграции ЗУП с Б24 Enterprise, а чтобы было интереснее берем закрытый объект, почти совсем не бизнес даже, а учреждение с многоуровневой и чудно ветвленой системой безопасности.

В общем, на руках бэкап Б24 с обезличенными данными и обезличенный же XML-файл обмена из ЗУП.

Итак, сама задача Хотя, нет. До самой задачи ещё далеко не помешало бы сначала наладить тестовый механизм для того, чтобы по заверениям работающий штатный алгоритм проверить.

Инструментарий:

  • Виртуальная машина VMBitrix 1 шт.

  • 1С-Битрикс24 (копия для разработки) 1 шт.

  • Файл обмена, выгруженный предположительно штатным модулем обмена 1С 1 шт.

  • VS Code + SSH FS плагин на будущее 1 комплект.

  • Postman 1 шт.

Виртуальная машина VMBitrix

По правде говоря, это никакая не виртуальная и даже не машина, а CentOS 7 (ну, или 6) со всеми вытекающими. Можно из чистой центоси сделать своеобразный и уже сконфигурированный LAMP+ для Битрикс несколькими командами.

wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh

# chmod +x bitrix-env.sh

# ./bitrix-env.sh

Для дотошных читателей следует рассказать, что виртуальная машина в реальности всё же существует. На клиентском сайте вендора в разделе скачать. Образы уже сконфигурированных ОС под популярные виртуализации выложены и в корне сайта по умолчанию уже лежит скрипт установки демо и скрипт восстановления. Именно скрипт восстановления был использован для создания локальной копии портала.

Следует ещё отметить, что VMBitrix не единственное, но самое быстро-разворачиваемое универсальное окружение для Б24.

1С-Битрикс24 Enterprise

Не буду много распространяться про то, что отличает Энтерпрайз от других коробок. Наверное, в данном повествовании хватит акцента на цене и уровне ответственности. Тем более, модули связанные с масштабированием не используются. Впрочем, как и многосайтовость.

Файл обмена из 1С ЗУП

Если вы хоть раз занимались интеграцией двух систем, будучи ответственным только на одном продукте, то вам знакомо как велик соблазн спихнуть на ту сторону любую мелочь, которую лень проверять на своей стороне. Этот недуг поражает даже самых ответственных людей, выступающих в любой роли и с любым уровнем погружения. Поддавался недугу и я.

Попытка повлиять на то чтобы пришли нужные данные сами чудесным образом, догадавшись, куда и в какой последовательности записываться, для очистки совести тоже осуществлена.

VS Code + SSH FS плагин

Итак, вооружившись доступом к файловой системе проекта, мы начинаем свое путешествие в увлекательный мир не задокументированных интеграций.

Не зря в самом начале статьи была реплика про то, что Обмен инициирует всегда 1С. Для понимания архитектуры это был первый шаг, в модуле обмена на стороне 1С прописан адрес скрипта, выступающего узлом обмена в Б24 по умолчанию это /bitrix/admin/1c_intranet.php.

В нем, согласно правилам системы ничего не хранится. Подключается один из служебных скриптов системного модуля Интранет(intranet) /bitrix/modules/intranet/tools/1c_intranet.php.

Именно этот модуль нам дает программный интерфейс для организации работы с сотрудниками и структурой на портале. Модули в BitrixFramework занимают место модели в архитектуре MVC.

И именно для взаимодействия с ним написанный системный компонент intranet.users.import.1c вызывается из служебного скрипта при помощи метода IncludeComponent. Компоненты в BitrixFramework занимают место контроллера в архитектуре MVC. На вход компонента подается массив параметров, если не вдаваться в тонкости, то настройки из модуля Интранет, которые задаются в административной части корпортала.

Postman

При упоминании должности почтальона в наших широтах перед глазами встает образ скорее Печкина из Простоквашино, нежели герой Кевина Костнера из одноименного заокеанского фильма.

Но наш герой программа, адрес тоже известен: postman.com [ссылка удалена модератором].

Эпилог

Путем нехитрых манипуляций вычитки кода того самого системного компонента и экспериментов с программой-почтальоном за пару часов выработан полуавтоматических алгоритм, позволяющий подсунуть в Б24 файл выгрузки из 1С.

Что важно знать про обмен:

  • Протокол обмена GET

  • Нужно несколько последовательных запросов с разными параметрами

Если файл выгрузки 1С ЗУП в архиве, то нужно использовать галочку Использовать сжатие zip, если доступно в настройках модуля Интранет в админке. И наоборот если XML без архивной оболочки галочку нужно снять.

Первый запрос, авторизация по логину и паролю:

GET http://портал/bitrix/admin/1c_intranet.php?mode=checkauth

Возвращает PHPSESSID. Его необходимо в последующем передавать с каждым запросом.

Второй запрос:

GET http://портал/bitrix/admin/1c_intranet.php?mode=init

Подготавливает/вычищает папку для загрузки файла. Возвращает что-то вроде zip=no

file_limit=204800, если всё отработало.

Третий запрос:

GET http://портал /bitrix/admin/1c_intranet.php?mode=file&PHPSESSID=tmfi6bf67llse3akv7cv13m6h8&filename=import.xml

В случае успешной передачи и записи файла на сервер возвращает success. Будьте бдительны нужно передать в Body сам файл бинарно, и указать его название в GET-параметре filename.

Четвертый запрос:

GET http://портал /bitrix/admin/1c_intranet.php?mode=import&PHPSESSID=tmfi6bf67llse3akv7cv13m6h8&filename=import.xml

Надо отсылать несколько раз с теми же параметрами, пока не пройдут последовательно все шаги импорта. Все эти шаги также можно вычитать в коде вышеуказанного компонента, осуществляющего импорт. Возвращаемые значения:

progress

Временныетаблицыудалены.

progress

Временныетаблицысозданы.

progress

Файлимпортапрочитан.

progress

Временныетаблицыпроиндексированы.

progress

Проверкаструктурыуспешнопройдена.

progress

Метаданныеимпортированыуспешно.

progress

Обработано2из2пользователей.

progress

Загрузкапользователейзавершена.

progress

Обработано11из11записейграфикаотсутствий.

progress

Загрузкаграфикаотсутствийзавершена.

success

Импортуспешнозавершен.

Постскриптум

Наверняка, кто-то из комментаторов укажет на другие инструменты, или сможет поделиться похожим опытом. Возможно, кто-то проведет параллели с импортом каталога из УТ в БУС.

По правде говоря, сам тоже, хоть в статье и опустил, но руководствовался аналогичным опытом. Продолжение следует в следующей статье расскажу как решалась сама задача породившую такую хитроумную организацию труда.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru