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

Bitrix

Битрикс24. Играемся с настройками и оптимизируем проект

03.02.2021 20:08:13 | Автор: admin
В этой статье мы расскажем, как оптимизировать крупный проект в Битрикс24 и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU.

Дано


Корпоративный портал в Битрикс24, рассчитанный на несколько сотен пользователей, c ~300 Гб файлов и ~80 Гб БД на выделенном сервере с BitrixVM.

До изменения настроек показатели были следующими:



Стандартный тест производительности в панели администратора Битрикс

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

Запрос клиента


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

Решение


Настройки MySQL первое, с чем мы начинаем работать.

Заменим стандартные значения BitrixVM на:

explicit_defaults_for_timestamp = 1expire_logs_days = 10max_binlog_size = 100Mmax_allowed_packet = 128Mtransaction-isolation = READ-COMMITTEDperformance_schema = OFFsql_mode = ""# Cache parametersquery_cache_type = 1query_cache_size=16Mquery_cache_limit=4Mkey_buffer_size=256Mjoin_buffer_size=2Msort_buffer_size=4M# Parameters for temporary tablestmpdir = /tmptmp_table_size=128Mmax_heap_table_size=128Mthread_cache_size = 4table_open_cache = 2048# InnoDB parametersinnodb_file_per_tableinnodb_buffer_pool_size = 8192Minnodb_buffer_pool_instances = 1innodb_flush_log_at_trx_commit = 0innodb_flush_method = O_DIRECTinnodb_strict_mode = OFF# Database charset parameterscharacter-set-server=utf8collation-server=utf8_general_ciinit-connect="SET NAMES utf8"[mysqldump]quickquote-namesdefault-character-set = utf8

Следующий шаг изменим режим питания CPU, так как Битрикс любит большую частоту процессора.

В зависимости от количества ядер меняем в каждом
файле /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor powersave на performance.

Далее проверим результат:



Мы видим, что больше всего изменилась работа с MySQL: параметры запись и изменение выросли почти в 3 раза; показатель чтение вырос в 5 раз. Это значит, что при обращении сайта к базе данных этот тип операции будет выполняться в несколько раз быстрее. Как следствие, вырастет и общая производительность сайта.

Из-за изменения режима питания CPU (это возможно, так как используется выделенный сервер) увеличилось количество операций на CPU.

Теперь необходимо отредактировать настройки для OPcache.

В файле /etc/php.d/10-opcache.ini заменяем его исходное значение на:

zend_extension=opcache.soopcache.enable = 1opcache.enable_cli = 1opcache.memory_consumption = 256opcache.max_file_size = 2Mopcache.interned_strings_buffer = 64opcache.max_accelerated_files = 130987opcache.fast_shutdown = 1opcache.revalidate_freq = 1opcache.fast_shutdown=1opcache.save_comments=1opcache.load_comments=1opcache.use_cwd = 1

Примечание: Тест Битрикс сообщит вам, что параметр opcache.revalidate_freq должен иметь значение 0 а не 1, но с указанным нами он будет работать лучше.

Сам параметр opcache.revalidate_freq отвечает за проверку кеша: при значении 0 она выполняется каждый раз при запуске скрипта, а при значении 1 раз в секунду.

После изменения настроек проверяем результат:



Из таблицы следует, что показатель работы с MySQL еще немного вырос. В то же время операции на CPU и общая производительность Битрикс увеличились значительно за счет изменения настроек PHP и кеширования скриптов.

Вывод


Благодаря таким несложным изменениям в настройках, мы смогли увеличить производительность проекта в 3 раза, а взаимодействие с БД от 3 до 5 раз (на основании общей оценки теста Битрикс). Работой проекта на новом сервере наш клиент полностью доволен. We did it!

В данном способе оптимизации мы сделали акцент на основных моментах, с которыми взаимодействует Битрикс, а также на сам тест. Клиенты часто обращают внимание именно на него.

Среди других способов повышения производительности Битрикс можно назвать установку и настройку кеширующего сервиса (например, Redis). Показатель производительности в CMS может упасть, но общая работа сайта должна быть лучше. Кроме того, можно использовать php-fpm, но в нашем случае переделывать ОС, изначально настроенную под Битрикс, было бы нерационально.

Также можно еще поиграться с настройками MySQL. Они индивидуальны для каждого проекта и конфигурации, поэтому единого идеального рецепта не существует. Будет интересно узнать ваши лайфхаки по оптимизации проектов в Битрикс. Делитесь мнением в комментариях.
Подробнее..

Из песочницы Только неБитрикс!. Почему не стоит игнорировать изучение этого фреймворка

30.08.2020 16:23:02 | Автор: admin
image

Часто отпрограммистов PHP можно услышать: Онет! Только неБитрикс!. Многие специалисты нехотят связываться фреймворком, считают его некрасивым инеудобным. Однако вакансий битрикс-разработчиков скаждым годом становится все больше. Уже сейчас программисты, которые работают сБитриксом, одни изсамых востребованных среди специалистов PHP.

Когда-то ябыл разработчиком1С, аувлечение PHP помогло мне вырасти доруководителя подразделения веб-разработки вNeti. Я постараюсь объяснить, почему программистам полезно изучить фреймворк Bitrix.

Как япознакомился сБитриксом


Три года назад мне предложили развивать направление веб-разработки. Ясогласился, потому что уменя был опыт создания высоконагруженных web-систем.

Первомуже клиенту, который кнам обратился, требовался битрикс-разработчик. Заказчику нужно было собрать государственный сервис для поддержки малого бизнеса. Клиент искал профессионала, который разрабатывает для Битрикса, знает объектно-ориентированное программирование иумеет писать сложные запросы.

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

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

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

image
Востребованность программистов PHP. Данные на 26 августа 2020 года. Источник: hh.ru.

Но, несмотря напотребности рынка, программисты PHP нехотят связываться сБитриксом. Одни работали сним поверхностно инеразобрались вего возможностях, другие несталкивались ссистемой вообще, ноотносятся кней плохо из-за негативных статей или отрицательных отзывов. Около30% кандидатов, скоторыми связывается наш HR-менеджер, отказываются отсобеседования, когда узнают, что нужно писать для Битрикса. Гораздо больше потенциальных сотрудников отсеиваются еще раньше, когда указывают врезюме, что неготовы работать сфреймворком.

Яхочу объяснить программистам PHP, почему стоит обратить внимание наБитрикс. Но, чтобы небыть голословным, сначала расскажу, почему клиенты выбирают эту систему ичем продукты фирмы 1С-Битрикс привлекают бизнес основного потребителя услуг программирования.

Почему клиенты выбирают Битрикс


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

Интернет-магазины


Клиент, который купит иустановит 1СБитрикс: Управление сайтом влицензии Малый бизнес или выше, сразу получит:

  • Встроенную интеграцию почти совсеми российскими службами доставки, будьто Boxberry или Деловые линии. Чтобы выбрать службу доставки, ненадо ничего дополнительно подключать. Достаточно поставить галочку напротив нужного оператора.
  • Работающие понашему законодательству системы онлайн-оплаты (Яндекс-касса, Сбербанк-онлайн).
  • Встроенную синхронизацию с1С: Управление торговлей, 1С: Бухгалтерия, 1С: Зарплата иуправление персоналом.

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

image
В рейтинге CRM по реальным установкам на сайтах за сентябрь 2019 года, составленном компанией iTrack, 1С-Битрикс занимает первое место среди коммерческих CRM

Корпоративные сайты


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

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

Потребители видят, что запустить интернет-магазин или корпоративный портал, интегрированный синформационной системой предприятия, наБитриксе легко инедорого. Сделать тоже самое наOpenCart или WordPress дольше идороже. Разрабатывать подобное решение нафреймворках Laravel, Symfony или Yii2 более трудозатратно.

Решения для государственных организаций


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

Зачем нужны битрикс-разработчики


Теперь, когда понятно, почему потребители выбирают Битрикс, разберемся, зачем нужны разработчики. У80% клиентов коробка запускается быстро ипросто, иимхватает типового функционала. Такие заказчики ищут специалистов, чтобы поддерживать систему. Битрикс большое исложноеПО, и, как влюбом сложном механизме, внем встречаются ошибки ибаги. Это нормально.

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

Какие доработки чаще всего требуются заказчикам:

  • Добавить функционал. Например, насайты для медицинских центров добавляют функционал онлайн-записи наприем, историю обращений икарточку пациента. Этих возможностей нет вкоробке.
  • Настроить интеграцию. Часто клиентам нужна интеграция Битрикса сдругими системами. Например, заказчики хотят, чтобы сотрудник вличном кабинете видел зарплату, остатки отпусков идругую информацию, которую дает отдел кадров. Изначально этих возможностей нет вБитриксе и, чтобы все работало, требуется программист.
  • Исправить серверную часть. Некоторым клиентам ненравится серверная часть коробки: имкажется, что внутренние механизмы системы работают медленно. Таким заказчикам нужны оптимизация ирефакторинг кода.

Для доработки иподдержки системы клиенты Битрикса ищут программистов, которые работают сфреймворком. Нотаких специалистов мало.

За что программисты не любят Битрикс


Программисты PHP нехотят связываться сБитриксом считают его неинтересным, слишком сложным, тяжелым, неизящным ипереоцененным. Гораздо проще найти разработчика Laravel, Symfony или Yii2.

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

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

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

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

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

Битрикс восновном известен как CMS. Большинство разработчиков знают Битрикс как CMS для создания сайтов-визиток.80% программистов использовали только базовые функции иникогда непогружались внутрь, непытались изучать систему иядро фреймворка: ORM, Highload-блоки, мастера, визарды. Пощупали Битрикс снаружи непонравилось, аразвернуть непопытались. Это как попробовать съесть мандарин вкожуре.

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

Становление Битрикса похоже настановление 1С


То, что происходит сейчас сБитриксом, напоминает мне становление 1С. Когда 1Столько появился, среди программистов существовало мнение, что это неязык программирования, аерунда. Над специалистами, которые осваивали1С, смеялись. Имговорили, что писать нарусском фи ичто скоро фирма 1С загнется.

Ноэтого непроизошло. Укомпании настолько сильный маркетинговый штат, что 1С завоевала рынок. Сначала она заинтересовала предприятия малого исреднего бизнеса, апрограммные продукты набазе восьмого ядра привели фирме 1С крупных клиентов. Сейчас 1С: Предприятие используют 1500000организаций.

Разработчики, которые стояли натом, что программировать на1Снизко инеинтересно, оказались неправы. Нельзя сказать, что они остались неудел. Они все равно востребованы, нонамного меньше. Большинство специалистов все-таки пришло ктому, что надо перепрофилироваться на1С.

Тоже самое происходит сБитриксом. Скаждым годом Битрикс все популярнее уклиентов, нобольшинство программистов PHP нехочет сним работать, хотя это перспективное ивысокооплачиваемое направление.

Перспективы Битрикса


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

Специалисты, которые работают с Laravel, Symfony или любым другим MVC фреймворком PHP, останутся востребованными. У этих решений большая доля рынка, но достаточно специфические задачи.

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

image
Конференция BitrixPower, прошедшая 4 октября 2019 года в Москве. Источник: группа 1С-Битрикс во ВКонтакте

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

Выгрузка пользователей из 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