но может кто подскажет, как реализовать на основе связанных таблиц, чтобы просто брать значения из ячеек таблицы?
Судя по тому как я понял вашу задумку, я бы сделал на основе конструктора форм версии не ниже 3.3.0. Поставил бы нужную форму из конструктора, похожую на набор полей — "Список количества" в форму создания карточки поставщика. Написал бы хук, который при сохранении карточки разнёс бы эти данные по нужным ячейкам таблиц БД. А затем брал бы их из этих ячеек когда надо.
Далее настраиваем компонент импорта:
Импорт из файла примерно так может выглядеть ваш компонент. Единственное в этой версии, загружать файл может только админ, но есть настройки для сохранения настроек и история по каждой выгрузке.
пока не представляю как производить обновление каталога, если не просто добавлять новые позиции а обновлять целиком
Можно создать поле, которое будет иметь уникальные значения для одного поставщика и желательно для всех поставщиков. Например артикул. (В принципе в еxcel не долго сцепить два поля: id поставщика и его уникальные поля и получим уникальное поле для всех.)
что делать с отсутствующими в новом каталоге позициями
По этому полю при импорте проверять, если нет такого товара, то соответственно создать, а если есть то либо пройти мимо, либо обновить данные. С категориями (каталогами), смотреть по названию и если нет то добавлять.
если производить выборку из нескольких сотен позиций, то какие должны быть системные требования
Системные требования не большие. На обычном хостинге 25 кило записей без картинок создаются за 10 минут, с картинками чуть дольше.
наверное нужно будет ещё предусмотреть и вывод сообщения с предложением дальнейших действий?
Не стоит озадачивать и без того загруженного админа навязчивыми вопросами.