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

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
10-Фев-2021 02:30

В жизни так бывает, причём бывает чаще чем хотелось бы, хоть в целом и довольно редко – надо интегрировать Битрикс24 с ЗУП. Сими дружественными компаниями заявлена штатная интеграция (но только для коробки Б24), которая осуществляется по следующей принципиальной схеме:
  • Обмен инициирует всегда 1С. Это либо штатный, либо устанавливаемый самостоятельно и доступный модуль обмена, который посылает запросы.
  • На стороне Б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=nofile_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Импорт успешно завершен. ПостскриптумНаверняка, кто-то из комментаторов укажет на другие инструменты, или сможет поделиться похожим опытом. Возможно, кто-то проведет параллели с импортом каталога из УТ в БУС.По правде говоря, сам тоже, хоть в статье и опустил, но руководствовался аналогичным опытом. Продолжение следует – в следующей статье расскажу как решалась сама задача породившую такую хитроумную организацию труда.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_1sbitriks (1С-Битрикс), #_1s (1С), #_bitriks24 (битрикс24), #_1s (1с), #_1sbitriks (1с-битрикс), #_1cbitrix, #_bitrix_vm, #_bitrix, #_bitrix_bitriks (bitrix битрикс), #_bitrix_programmirovanie (bitrix программирование), #_bitrix24, #_1sbitriks (
1С-Битрикс
)
, #_1s (

)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 25-Ноя 07:26
Часовой пояс: UTC + 5