Перейти к содержимому

Редакция продукта - ограничения, переход на старшую, ключ

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

Что нужно знать заранее

Редакция определяет две вещи: набор доступных модулей и число сайтов. Всё остальное - объём каталога, число заказов, посещаемость - редакцией не ограничено и упирается только в сервер.

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

Срок обновлений и срок работы сайта - разные вещи. По истечении года обновления перестают приходить, но сайт работает дальше и ничего не отключает.

Шаги

  1. Посмотреть, какие модули установлены на текущей редакции продукта.
  2. Проверить в своём коде доступность модуля до его первого вызова.
  3. Оценить, упирается ли задача в редакцию или в настройки самого сайта.
  4. Перед переходом снять резервную копию и зафиксировать текущее состояние.
  5. После перехода установить новые модули и проверить права и агенты.

Решение

Смотрим ключ и состав установленного:

printf("ключ: %s\n", substr(LICENSE_KEY, 0, 6) . '...'); // файл /bitrix/license_key.php
foreach (['catalog', 'sale', 'lists', 'highloadblock'] as $code) {
printf("%-14s %s\n", $code,
\Bitrix\Main\ModuleManager::isModuleInstalled($code) ? 'есть' : 'нет');
}

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

Проверяем модуль перед вызовом:

if (!\Bitrix\Main\Loader::includeModule('catalog')) {
return; // блок просто не выводится, страница живёт дальше
}
$price = \Bitrix\Catalog\PriceTable::getRow(['filter' => ['=PRODUCT_ID' => $id]]);
// проверка нужна и своим модулям: их тоже может не оказаться на стенде

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

Считаем сайты и упираемся ли в предел:

printf("сайтов: %d\n", \Bitrix\Main\SiteTable::getCount());
foreach (\Bitrix\Main\SiteTable::getList(['select' => ['LID', 'DIR', 'ACTIVE']])->fetchAll() as $s) {
printf("%s %s %s\n", $s['LID'], $s['DIR'], $s['ACTIVE']); // включая выключенные
}

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

Готовимся к переходу на старшую редакцию:

Окно терминала
mysqldump -u root -p sitemanager | gzip > /backup/before-upgrade.sql.gz
tar czf /backup/before-upgrade-files.tgz /home/bitrix/www/local /home/bitrix/www/bitrix/php_interface
php -r 'echo PHP_VERSION;' # новые модули требуют поддерживаемой версии языка

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

Проверяем сайт после перехода:

foreach (\Bitrix\Main\ModuleManager::getInstalledModules() as $m) { echo $m['ID'], "\n"; }
// список сверяют со снимком, снятым до перехода на старшую редакцию
// новые модули появились, но их настройки и права ещё пустые

Типичные проблемы

Страница падает с ошибкой о неизвестном классе.

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

Второй сайт не создаётся в списке сайтов.

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

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

Ключ заменён, но переход на новую редакцию не выполнен мастером обновлений. Мастер ставит недостающие модули и приводит состав ядра в соответствие ключу.

Решение из маркетплейса отказывается устанавливаться.

Решение требует модуль, который доступен только в старшей редакции продукта. Требования решения смотрят в его описании до покупки, а не после установки.

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

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

Частые вопросы

Что именно ограничивает редакция?

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

Где лежит лицензионный ключ?

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

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

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

Как понять, нужна ли старшая редакция?

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

Можно ли вернуться на младшую редакцию?

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

Смежное

Первоисточник