(3) первым циклом запихиваешь в соответствие ключом номенклатуру, значением - строку списка. в этом же цикле массив номенклатур и очищаешь текст в строках.
далее - 1 запрос, получающий все данные, с отбором по массиву, полученному в первом цикле.
при обходе выборки по ключу соответствия устанавливаешь значения текста соответствующих строк.