О, великие умы форума !
Помогите начинающим!

Есть макет:

```1c
    Неработающий код)

    Таблица = Новый ТабличныйДокумент ;

    Макет = ПолучитьМакет("Макет");

    // ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

    // Таблица.Вывести(ОбластьШапка);

    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    СекцияШапка = Макет.ПолучитьОбласть("Шапка|Колонка1");
    СекцияСтрока1 = Макет.ПолучитьОбласть("Строка|Колонка1");
    СекцияИтого = Макет.ПолучитьОбласть("СтрокаИтого|Колонка1");

    СекцияШапка1 = Макет.ПолучитьОбласть("Шапка|Колонка");
    СекцияСтрока = Макет.ПолучитьОбласть("Строка|Колонка");
    СекцияИтого1 = Макет.ПолучитьОбласть("СтрокаИтого|Колонка");

    Таблица.НачатьАвтогруппировкуКолонок();

    СекцияШапка.Параметры.Подразделение = Подразделение;
    СекцияШапка.Параметры.Дата1 = Формат(НачПериода,"ДФ=dd.MM.yyyy");
    СекцияШапка.Параметры.Дата2 = Формат(КонПериода,"ДФ=dd.MM.yyyy");

    СекцияШапка.Параметры.УВ1 = "100.00";
    Таблица.Вывести(СекцияШапка);

    Запрос = Новый Запрос;
    Запрос.Текст ="ВЫБРАТЬ
    | ХозрасчетныйДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2,
    | ХозрасчетныйДвиженияССубконто.Сумма,
    | ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт,
    | ХозрасчетныйДвиженияССубконто.Период,
    | ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка,
    | ХозрасчетныйДвиженияССубконто.СуммаНУДт,
    | ХозрасчетныйДвиженияССубконто.СуммаНУКт,
    | ХозрасчетныйДвиженияССубконто.СуммаПРДт,
    | ХозрасчетныйДвиженияССубконто.СуммаПРКт,
    | ХозрасчетныйДвиженияССубконто.СуммаВРДт,
    | ХозрасчетныйДвиженияССубконто.СуммаВРКт
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    | &НачПериода,
    | &КонПериода,
    | СчетДт = &Счет
    | И ВЫБОР
    | КОГДА &Подразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
    | ТОГДА ИСТИНА
    | ИНАЧЕ ПодразделениеДт.Ссылка = &Подразделение
    | КОНЕЦ,
    | ,
    | ) КАК ХозрасчетныйДвиженияССубконто
    |
    |СГРУППИРОВАТЬ ПО
    | ХозрасчетныйДвиженияССубконто.СубконтоДт2,
    | ХозрасчетныйДвиженияССубконто.Сумма,
    | ХозрасчетныйДвиженияССубконто.СчетКт,
    | ХозрасчетныйДвиженияССубконто.Период,
    | ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка,
    | ХозрасчетныйДвиженияССубконто.СуммаНУДт,
    | ХозрасчетныйДвиженияССубконто.СуммаНУКт,
    | ХозрасчетныйДвиженияССубконто.СуммаПРДт,
    | ХозрасчетныйДвиженияССубконто.СуммаПРКт,
    | ХозрасчетныйДвиженияССубконто.СуммаВРДт,
    | ХозрасчетныйДвиженияССубконто.СуммаВРКт
    |
    |УПОРЯДОЧИТЬ ПО
    | СубконтоДт2
    |ИТОГИ ПО
    | СубконтоДт2";

    Запрос.УстановитьПараметр("Счет", Счет);
    Запрос.УстановитьПараметр("Подразделение", Подразделение);
    Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода));
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    ////////ЦИКЛ ПО 1-4 КОЛОНКАМ

    ВыборкаСубконто = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаСубконто.Следующий() Цикл
    Выборка = ВыборкаСубконто.Выбрать();
    Пока Выборка.Следующий() Цикл

    АБУ1 = АБУ1 + Выборка.Сумма;
    АНУ1 = АНУ1 + Выборка.СуммаНУДт;
    АПР1=АПР1+Выборка.СуммаПРДт;
    АВР1=АВР1+Выборка.СуммаВРДт;
    АК1=АБУ1-(АНУ1+АПР1+АВР1);

    ИБУ1=ИБУ1+Выборка.Сумма;
    ИНУ1=ИНУ1+Выборка.СуммаНУДт;
    ИПР1=ИПР1+Выборка.СуммаПРДт;
    ИВР1=ИВР1+Выборка.СуммаВРДт;
    ИК1=ИК1+АК1;

    Если Выборка.СчетКт.Код <> "20" и Выборка.СчетКт.Код <> "20.01" и Выборка.СчетКт.Код <> "20.02" и Выборка.СчетКт.Код <> "23" и Выборка.СчетКт.Код <> "23.01" и Выборка.СчетКт.Код <> "23.02" тогда
    //КонецЕсли;

    АБУ2 = АБУ2 + Выборка.Сумма;
    АНУ2 = АНУ2 + Выборка.СуммаНУДт;
    АПР2=АПР2+Выборка.СуммаПРДт;
    АВР2=АВР2+Выборка.СуммаВРДт;
    АК2=АБУ2-(АНУ2+АПР2+АВР2);

    ИБУ2=ИБУ2+Выборка.Сумма;
    ИНУ2=ИНУ2+Выборка.СуммаНУДт;
    ИПР2=ИПР2+Выборка.СуммаПРДт;
    ИВР2=ИВР2+Выборка.СуммаВРДт;
    ИК2=ИК2+АК2;

    ИначеЕсли Выборка.СчетКт.Код = "20" или Выборка.СчетКт.Код = "20.01" или Выборка.СчетКт.Код = "20.02" тогда
    Если Выборка.ПодразделениеКтСсылка <> ПД тогда
    АБУ3 = АБУ3 + Выборка.Сумма;
    АНУ3 = АНУ3 + Выборка.СуммаНУДт;
    АПР3=АПР3+Выборка.СуммаПРДт;
    АВР3=АВР3+Выборка.СуммаВРДт;
    АК3=АБУ3-(АНУ3+АПР3+АВР3);
    ПД = Выборка.ПодразделениеКтСсылка;
    Таблица.Присоединить(СекцияШапка1);
    Таблица.Присоединить(СекцияСтрока);

    КонецЕсли;
    КонецЕсли;

    // Секция1.Параметры.УВ2 = Формат(ИБУ2/ИБУ1,"ЧДЦ=2; ЧС=-2");

    СекцияСтрока1.Параметры.Субконто = Выборка.СубконтоДт2.Наименование;
    СекцияСтрока1.Параметры.АБУ1=АБУ1;
    СекцияСтрока1.Параметры.АБУ2=АБУ2;
    СекцияСтрока1.Параметры.АНУ1=АНУ1;
    СекцияСтрока1.Параметры.АНУ2=АНУ2;
    СекцияСтрока1.Параметры.АПР1=АПР1;
    СекцияСтрока1.Параметры.АПР2=АПР2;
    СекцияСтрока1.Параметры.АВР1=АВР1;
    СекцияСтрока1.Параметры.АВР2=АВР2;
    СекцияСтрока1.Параметры.АК1=АК1;
    СекцияСтрока1.Параметры.АК2=АК2;
    СекцияСтрока.Параметры.АБУ3=АБУ3;
    СекцияСтрока.Параметры.АНУ3=АНУ3;
    СекцияСтрока.Параметры.АПР3=АПР3;
    СекцияСтрока.Параметры.АВР3=АВР3;
    СекцияСтрока.Параметры.АК3=АК3;
    СекцияШапка1.Параметры.ПД = ПД;

    КонецЦикла;

    Таблица.Вывести(СекцияСтрока1);
    // Таблица.Присоединить(СекцияШапка1);

    // Таблица.Присоединить(СекцияСтрока);

    ПриОткрытии();
    // Субконто = Выборка.СубконтоДт2.Наименование;

    //КонецЦикла;

    СекцияИтого.Параметры.ИБУ1 = ИБУ1;
    СекцияИтого.Параметры.ИНУ1 = ИНУ1;
    СекцияИтого.Параметры.ИПР1 = ИПР1;
    СекцияИтого.Параметры.ИВР1 = ИВР1;
    СекцияИтого.Параметры.ИК1 = ИК1;

    СекцияИтого.Параметры.ИБУ2 = ИБУ2;
    СекцияИтого.Параметры.ИНУ2 = ИНУ2;
    СекцияИтого.Параметры.ИПР2 = ИПР2;
    СекцияИтого.Параметры.ИВР2 = ИВР2;
    СекцияИтого.Параметры.ИК2 = ИК2;

    КонецЦикла;

    Таблица.Вывести(СекцияИтого);
```

Код по первым 4м колонкам работает нормально, т.е. собирает итоги всего в 3ю колонку и выводит и в 4 колонку выводит все что не вошло по 20 и 23 счету.

А вот дальше не знаю как быть...
Нужно чтобы в СекцияСтрока собирались итоги по определенному субконто и определенному подразделению.
Если новое подразделение то добавляется новая колонка и т.д.
(субконто соответственно должно тоже совпадать)

PS)
Вот к такому виду нужно придти...

Заранее спасибо за помощь !!!!!!!
---
hasan-rusel, если я правильно понимаю что вам нужно, то проще всего сделать так: создаете еще 1 вертикальню секцию в макете (для подразделения), сортируете запрос по полю, где подразделения (видимо это ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка), создаете таблицу значений (для того, чтобы можно было итоги по подразделениям вывести после общих итогов, как это у вас на макете), заводите переменную для хранения текущего значения подразделения. В цикле переборов результатов запроса проверяете ее значение и считаете итоги по подразделению, как только значение переменной будет отличаться от следующей записи в выборке, создаете строку таблицы и в нее помещаете рассчитанные значения формула для данного подразделения, значение переменной меняете. После вывода столбцов с итогами перебираете строки таблицы и выводите данные по подразделениям...
P.S. Если реализация не совсем понятна, скажите, помогу код написать
---
Заранее спасибо !!
---
Вам нужно вот для этого данные повторять в столбцах?

```1c
    | ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка,
```

 А формулы вот эти?

```1c
    Пока Выборка.Следующий() Цикл

    АБУ1 = АБУ1 + Выборка.Сумма;
    АНУ1 = АНУ1 + Выборка.СуммаНУДт;
    АПР1=АПР1+Выборка.СуммаПРДт;
    АВР1=АВР1+Выборка.СуммаВРДт;
    АК1=АБУ1-(АНУ1+АПР1+АВР1);

    ИБУ1=ИБУ1+Выборка.Сумма;
    ИНУ1=ИНУ1+Выборка.СуммаНУДт;
    ИПР1=ИПР1+Выборка.СуммаПРДт;
    ИВР1=ИВР1+Выборка.СуммаВРДт;
    ИК1=ИК1+АК1;
```
---
Форма вопроса затрудняет помощь. Позовите специалиста(С) онлайн.
---
При выводе шапки в цикле повыводить колонки, а потом выводить аналогично строки. Могу сделать за скромное вознаграждение )))
---
И конфигурацию определил по картинке ? Ну телепат...
---
Aleks1973, конфигурация БП 2.0

Нужно собрать итоги по одной статье затрат, например "Амотризация ОС" по определенному подразделению, например "Мех.служба" потом присоединяем к соответвующей статье затрат и и т.д. по определенному подразделению, потом другое подразделение - новая колонка... и т.д.
---
Рекомендую освоить СКД. Режим вывода данных таблица. Это самый простой вариант. :)

По сути. Вообщем и целом это классическая шахматка.
Для полностью программного вывода можно использовать например запрос который формируется динамически для всех подразделений.

Вот примерная суть идеи:
Для Каждого элМассива Из МассивПодразделений Цикл
Добавить в текст запроса - "ВЫБОР КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт = &Подразделение"+СокрЛП(Сч)" ТОГДА Сумма ИНАЧЕ 0 КОНЕЦ КАК СуммаПодразделение"+СокрЛП(Сч);
Запрос.УстановитьПараметр("Подразделение"+СокрЛП(Сч),элМассива.Значение);
КонецЦикла
---
el-gamberro, СКД только осваиваю...
А можно суть идеи адаптировать под мой код, если не сложно ? ((
---
А вы попробуйте начать с того, чтобы в консоли запроса собрать все необходимые данные :)
Тогда и понятнее идея с циклом станет.
---
hasan-rusel, если я правильно понимаю что вам нужно, то проще всего сделать так: создаете еще 1 вертикальню секцию в макете (для подразделения), сортируете запрос по полю, где подразделения (видимо это ХозрасчетныйДвиженияССубконто.ПодразделениеКт.Ссылка КАК ПодразделениеКтСсылка), создаете таблицу значений (для того, чтобы можно было итоги по подразделениям вывести после общих итогов, как это у вас на макете), заводите переменную для хранения текущего значения подразделения. В цикле переборов результатов запроса проверяете ее значение и считаете итоги по подразделению, как только значение переменной будет отличаться от следующей записи в выборке, создаете строку таблицы и в нее помещаете рассчитанные значения формула для данного подразделения, значение переменной меняете. После вывода столбцов с итогами перебираете строки таблицы и выводите данные по подразделениям...
P.S. Если реализация не совсем понятна, скажите, помогу код написать