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