GetOptimalPrice работает группами текущего пользователя $USER->GetUserGroupArray() из сессии.
Соответственно где то с этим проблема, может у вас скидки назначены на определённую группу которая в сессии не обрабатывается?
Возможно происходит ошибка из-за того что вы в поле USER_PROPS_ID "" передаёте array(172). В примере сказано что передавать нужно ID. Убедитесь что вы передаёте ID именно профиля пользователя, а не ID пользователя.