У Вас один и тот же обработчик висит на обоих событиях. Между тем, если мы обратимся к документации: [url=https://dev.1c-bitrix.ru/api_help/catalog/events/onbeforepriceadd.php]OnBeforePriceAdd[/url] и [url=https://dev.1c-bitrix.ru/api_help/catalog/events/onbeforepriceupdate.php]OnBeforePriceUpdate[/url], то увидим, что на втором событии 2 параметра. Первое как раз ID цены, второе - массив полей. Вы обрабатываете только первый. Документация и код в 12 версии не менялись.