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

Добавить комментарий

Ваш адрес email не будет опубликован.