Главный модуль ядра 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