хм, будет производительность списка номенклатуры страдать, но если хотите этим жертвовать, то в событии ПриОткрытии программно добавляете колонки со складами. Для этого перебирите все склады и с помощью
.Колонки.Добавить(<ИмяСклада>,,<Заголовок>);
сформируйте дополнительные колонки по складам.
<ИмяСклада> - лучше брать так "Склад"+КодСклада, тогда вдальнейшем к нему можно легко обращаться (например, Склад000001,Склад000002)
<Заголовок> - Собственно наименование склада которое будет отображаться в таблице
Затем уже в событии ПриПолученииДанных выполняете
Для каждого Строка Из ОформленияСтрок Цикл
Запрос = Новый Запрос;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад.Код,
| ТоварыНаСкладахОстатки.Номенклатура,
| СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
|
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
|
|СГРУППИРОВАТЬ ПО
| ТоварыНаСкладахОстатки.Склад.Код,
| ТоварыНаСкладахОстатки.Номенклатура
|
|";
Запрос.УстановитьПараметр("Номенклатура",Строка.ТекущиеДанные.Ссылка );
Запрос.Текст = ТекстЗапроса;
РЗ = Запрос.Выполнить();
Выборка = РЗ.Выбрать()
Пока Выборка.Следующий() Цикл
Строка.Ячейки["Склад+"Выборка.Код].Значение=Формат(Выборка.КоличествоОстаток,"ЧЦ=15; ЧДЦ=0;");
// тут или Значение или Текст, точно не помню
КонецЦикла;
КонецЦикла;
Результат запроса вернет сгрупированнуе по складам и номенклатуре остатки.
Колонки ао складам будут иметь вид "Склад000001,Склад000002 и т.д."
В обходе запроса прописываешь в ячейки остатки по складу.
т.к. список номенклатуры не содержит серий и характеристик, то выбирать их не нужно
Код писал от руки, не забудьте учесть группы. Но повторюсь это скажется на производительности.
В форме списка номенклатуры есть подобный функционал, только он расчитывает данные для текущей строки. (Действия/Остатки товаров на складах)