Probably you can use:
Unit - A unit Is issued an order targeting an object
(Target item of issued order) isn't No item
Item - Show (Target item of issued order)
set udg_tmpItem = GetOrderTargetItem()
Maybe that's what you want?
I thought of a similar item system which checks if the unit is within a range of the item, so they will check what does the hero have and try to build something based on a recipe rule.