> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/obnovlenie-kastomizatora-v-itgrix_bx-3.4.0-i-itgrix_amo-2.6.0.md).

# obnovlenie kastomizatora v itgrix\_bx 3.4.0 i itgrix\_amo 2.6.0

В версии Itgrix\_bx (Битрикс24) 3.4.0 и Itgrix\_amo (amoCRM) 2.6.0 **кастомизатор существенно переработан.** В результате старый код пользовательских кастомизаций может быть **частично несовместим** с новым кастомизатором. В данной статье описана корректная миграция пользовательских кастомизаций.

{% hint style="success" %}
При обновлении с версии Itgrix\_bx 3.3.5 на 3.4.0 и с Itgrix\_amo 2.5.3 на 2.6.0 через скрипт `update.sh` в папке модуля обновление кастомизатора не происходит. Поле `customizer.program_path` в конфиг-файле также остаётся нетронутым.

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

При обновлении новый кастомизатор появится в виде папки `/opt/itgrix_bx/customizer.dist/` и`/opt/itgrix_amo/customizer.dist`. В любой момент можно воспользоваться этой папкой для перехода на новую версию кастомизатора.
{% endhint %}

## Изменения в новом кастомизаторе

{% hint style="info" %}
Рассмотрим изменения для Itgrix\_bx. Для Itgrix\_amo всё то же самое, только пути будут содержать `itgrix_amo` вместо `itgrix_bx`.
{% endhint %}

* В новом кастомизаторе все файлы хранятся в одной папке `/opt/itgrix_bx/customizer/`.
* Исполняемый файл (который прописан в конфиг-файле `/etc/itgrix_bx/config.json` в поле `customizer.program_path`) теперь имеет путь `/opt/itgrix_bx/customizer/customize.php` .
* Пользовательские кастомизации теперь располагаются в папке `/opt/itgrix_bx/customizer/actions/` .
* Добавился новый файл `/opt/itgrix_bx/customizer/Settings.php`, в котором прописаны пути к конфиг-файлу и логу модуля.
* В файле `/opt/itgrix_bx/customizer/README` подробно описаны функции, доступные в пользовательских кастомизациях.

Изменения в API кастомизатора рассмотрим далее.

## Переход на новый кастомизатор

{% hint style="danger" %}
Прежде всего стоит сделать **резервную копию** старых пользовательских кастомизаций (`/opt/itgrix_bx/custom/`) и кастомизатора (`/opt/itgrix_bx/customizer.php`).
{% endhint %}

1. Скопировать папку `/opt/itgrix_bx/customizer.dist/` в `/opt/itgrix_bx/customizer/`.
2. Убедиться, что в `/opt/itgrix_bx/customizer/Settings.php` прописаны нужные конфиг и лог.
3. Поменять в конфиг-файле `/etc/itgrix_bx/config.json` путь к исполняемому файлу кастомизатора в поле `customizer.program_path` , - теперь это `/opt/itgrix_bx/customizer/customize.php`.
4. Скопировать код пользовательских кастомизаций из `/opt/itgrix_bx/custom/` в новые файлы кастомизаций в `/opt/itgrix_bx/customizer/actions/`. За исключением кастомизации **process\_record\_file\_path.php,** - в ней существенно доработанная кастомизация по умолчанию (конвертация записей разговоров в mp3). Рекомендуем использовать и настроить новый код вместо старого.
5. Проверить код на наличие **старых функций и заменить их на новые** функции (см. далее).

## Изменение API кастомизатора

Код кастомизатора был полностью переписан, и **все старые функции стали недоступны:**

1. `message()`
2. `getConfig()`
3. `myQuery()`
4. `getDB()`

Вместо них теперь нужно использовать функции соответственно:

1. `$this->logDebug()` (или `logInfo`, `logWarn`, `logError` в зависимости от желаемого уровня логирования). Данная функция в отличие от message() принимает только один аргумент - строку с сообщением. **Если нужно вывести в лог несколько разнотипных значений, нужно сначала сделать из них одно строковое значение.**
2. `Utils::getConfig()` - использование аналогичное старому, плюс возможность обработать ошибку.
3. `Utils::mysqlClcQuery()` - использование аналогичное старому, плюс возможность обработать ошибку.
4. `Utils::mysqliQuery()` - теперь запрос через php-mysqli аналогичен по использованию запросу через MySQL Command-Line Client (функция `Utils::mysqlClcQuery()`, бывшая `myQuery()`). **Не нужно использовать `getDB()`** с последующим вызовом `mysqli_query()`. Всё это реализовано внутри `Utils::mysqliQuery()` с обработкой результата или возможных ошибок. В случае если по каким-то причинам невозможно использовать запрос через php-mysqli, можно просто поменять в пользовательском коде название функции `mysqliQuery` на `mysqlClcQuery`, их использование абсолютно одинаковое.

Более подробное описание функций в `/opt/itgrix_bx/customizer/README`.

## Новые функции кастомизатора

Одно из главных нововведений - **поддержка запросов в CRM** из пользовательских кастомизаций.

В кастомизаторе Itgrix\_bx:

* `Bitrix::createTask()` - для [создания задачи в Битрикс24](file:///1659967/custom_bx/zaprosy-v-bitriks-iz-kastomizacii.md#sozdanie-zadachi).
* `Bitrix::createLead()` - для [создания лида в Битрикс24](file:///1659967/custom_bx/zaprosy-v-bitriks-iz-kastomizacii.md#sozdanie-lida) (доступна с версии 3.4.2).

В кастомизаторе Itgrix\_amo:

* `Amo::createTask()` - для [создания задачи в amoCRM](file:///1659967/custom_amo/zaprosy-v-amocrm-iz-kastomizacii.md#sozdanie-zadachi).
* `Amo::createLead()` - для [создания сделки в amoCRM](file:///1659967/custom_amo/zaprosy-v-amocrm-iz-kastomizacii.md#sozdanie-sdelki).

Подробное описание функций в `/opt/itgrix_bx/customizer/README`.

{% hint style="info" %}
В дальнейшем будут добавляться новые запросы в CRM по мере необходимости.
{% endhint %}
