Главный модуль ядра 1с-Битрикс версии 22.100 подвержен ошибке — при добавлении get-параметра ?USER_FIELD_MANAGER=1 в любую ссылку сайт падает в exception вида
[Error] Call to a member function getEntityList() on string (0) /var/www/public/bitrix/modules/main/lib/orm/entity.php:324 #0: Bitrix\Main\ORM\Entity->postInitialize() /var/www/public/bitrix/modules/main/lib/orm/entity.php:129 #1: Bitrix\Main\ORM\Entity::getInstanceDirect(string) /var/www/public/bitrix/modules/main/lib/orm/entity.php:107 ... ----------
Если вы видите это на production-сайте, то первым делом необходимо выключить вывод ошибок в файле /local/.settings.php
'exception_handling' =>
[
'value' =>
[
'debug' => false,
Пока нет фикса от вендора, для исправления бага придется поправить код прямо в ядре.
Ищем этот кусок кода в файле /bitrix/modules/main/lib/orm/entity.php
// attach userfields
if (empty($this->uf_id))
{
// try to find ENTITY_ID by map
$userTypeManager = Main\Application::getUserTypeManager();
if($userTypeManager)
{
$entityList = $userTypeManager->getEntityList();
$ufId = is_array($entityList) ? array_search($this->className, $entityList) : false;
if ($ufId !== false)
{
$this->uf_id = $ufId;
}
}
}
И заменяем
// attach userfields
if (empty($this->uf_id))
{
// try to find ENTITY_ID by map
$userTypeManager = Main\Application::getUserTypeManager();
if(is_object($userTypeManager) && method_exists($userTypeManager, 'getEntityList'))
{
$entityList = $userTypeManager->getEntityList();
$ufId = is_array($entityList) ? array_search($this->className, $entityList) : false;
if ($ufId !== false)
{
$this->uf_id = $ufId;
}
}
}
Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!
Подписаться в telegram