(3) первым циклом запихиваешь в соответствие ключом номенклатуру, значением - строку списка. в этом же цикле массив номенклатур и очищаешь текст в строках.
далее - 1 запрос, получающий все данные, с отбором по массиву, полученному в первом цикле.
при обходе выборки по ключу соответствия устанавливаешь значения текста соответствующих строк.
(5) Можно и через ТЗ, но соответствие, вроде, быстрее (см. 4)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс