yous
@yous

Почему не работает \Bitrix\Iblock\ElementTable::update?

\Bitrix\Iblock\ElementTable::update(
		 	$arData['PRODUCT_ID'],
		 	[
		 		'MODIFIED_BY'    => COption::GetOptionString(self::MODULE_ID, 'AGENT_OPTIONS_USER_MODIFY'),
		 		'TIMESTAMP_X'	=> $arData['TIMESTAMP_X']
		 	]
		);


получаю ошибку:

Для изменения элементов инфоблоков используйте вызов CIBlockElement::Update()


документация https://dev.1c-bitrix.ru/api_d7/bitrix/iblock/elem...

update (доступен с 15.0.7)

\Bitrix\Main\Entity\UpdateResult public static
\Bitrix\Iblock\ElementTable::update(
 mixed $primary,
 array $data
);


что не так?
  • Вопрос задан
  • 1535 просмотров
Пригласить эксперта
Ответы на вопрос 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
В ядре убрана возможность использовать операции добавления/удаления/обновления для элементов ИБ (таблица \Bitrix\Iblock\ElementTable) через ядро D7. При обновлении элемента ИБ нужно довольно много данных в других таблицах менять (поисковые индексы, фасеты и т.д.). Поэтому в коде bitrix/modules/iblock/lib/element.php можно увидеть такое :
public static function add(array $data)
	{
		$result = new ORM\Data\AddResult();
		$result->addError(new ORM\EntityError(
			Loc::getMessage('ELEMENT_ENTITY_MESS_ADD_BLOCKED')
		));
		return $result;
	}

public static function update($primary, array $data)
	{
		$result = new ORM\Data\UpdateResult();
		$result->addError(new ORM\EntityError(
			Loc::getMessage('ELEMENT_ENTITY_MESS_UPDATE_BLOCKED')
		));
		return $result;
	}

	public static function delete($primary)
	{
		$result = new ORM\Data\DeleteResult();
		$result->addError(new ORM\EntityError(
			Loc::getMessage('ELEMENT_ENTITY_MESS_DELETE_BLOCKED')
		));
		return $result;
	}


В документации на метод прямо указано:
Метод заблокирован. Используйте метод CIBlockElement::Update
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы