Darklt,
1. Почитайте что за событие OnBeforeProductUpdate. И посмотрите внимательно его аргументы.
2. В аргументах к вам приходит ID товара, верно? Вам нужно узнать - принадлежит этот товар к разделу 999 или нет, верно? Зачем вы выбирайте какой то не понятный элемент из бд, когда вам нужен конкретно тот, который пришел?
3. Если вы убедились что это ваш элемент и его количество нужно установить равному свойству - зачем вы опять вызываете CCatalogProduct::Update? Это запустит бесконечный цикл. Изменяйте поля Fields, а не вызывайте опять новое событие.
4. Код вам не поможет, пока вы не научитесь думать и рассуждать.
Darklt, не почему то. А потому что вы выбираете именно последний товар Array("ID" => "ASC"),
Откуда вы взяли $IBLOCK_SECTION_ID = 999;
? Что это такое?
Где тут участвует ваш товар? В запросе, очевидно, должен участвовать ID пришедшего товара, разве нет?
Вернее вру. Не так. Точка входа единая. Но роутинг все равно за Беком. Фронт шлёт урл на бек и бек отвечает что это за сущность и какие параметры у запроса. Дальше фронт зная сущность (разводящая, раздел, элемент) и параметры запрашивает информацию о сущности с соответствующими параметрами и подключает нужные компоненты.
Да, при таком подходе всегда лишний запрос. Зато все довольны что вся логика на беке, а шаблоны на фронте. При грамотном апи - лишний запрос не решает.
Alex Lapikov, ну чтобы его выгрузить из uploads, нужно ведь знать путь? Так? Я не очень умею в WP, но что то подсказывает мне, что узнать путь в uploads не так просто. Или нет?
Darklt, смотрите. Давайте начнем с того, где хранится ID раздела, вернее каким способом мы можем отлучить его, зная ID элемента?
Каким способом можно получить свойства элемента?
Обе эти задачи прекрасно решает CIBlockElement::GetList