There are two ways to do this

there are obviously more but this ones looks for me the most logical ones)
#1
How Light said:
Event:
A unit finishes construction
Action
Set variable tempUnit to triggering unit(safes to call always the function is a bit more performant but also little bit unsafe)
Set variable tempLocation to position of tempUnit.
If type of unit tempUnit equals yourFirstType then
Create FirstItemType at tempLocation
If type of unit tempUnit equals yourSecondType then
Create SecondItemType at tempLocation
Remove tempUnit
Custom script call removeLocation(udg_tempLocation)
#2
Give all buildings a negative regeneration and a small amount of health so they die by itself.
Variables:
Unit Type Array plantingUnitTypes
Item Type Array plantingItemTypes
Integer index
Integer maxIndex
Unit tempUnit
Location tempLocation
Event:
Map initialization
Action:
Set plantingUnitType[1] to yourFirstType
Set plantingItemTypes [1] to yourFirstItem
....
Set maxIndex to the amount of different types you have.
Event:
Generic unit dies
Action:
If type of unit unequal no unit type then
Set tempUnit to triggering unit
Set tempLocation to location of tempUnit
For index from 1 to maxIndex
If type of unit tempUnit equals plantUnitTypes[index] then
Create item plantingItemTypes [index] at tempLocation
Remove tempUnit
Set tempUnit equals no unit
Custom script call removeLocation (udg_tempLocation)