Загрузка данных


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