Всем доброе время суток!
Есть самописный отчёт. Сейчас выводятся только Номенклатурная группа и делается группировка по ней.
Но необходимо к этому коду добавить вывод группировки сперва по НоменклатурнаяГруппа.Родитель.Родитель, а после НоменклатурнаяГруппа.Родитель и толькллишь потом НоменклатурнаяГруппа и под ней номенклатура. Собственно как это реализовать в этом куске кода? :

```1c
    ТаблицаСтроки = ТаблицаСводная.Скопировать();
    ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа, Номенклатура");
    ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, Номенклатура");

    ТекущаяГруппа = Неопределено;

    Для Каждого Строка из ТаблицаСтроки Цикл
    //группировка по группам номенклатуры
    Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
    Если ТекущаяГруппа <> Неопределено Тогда
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;

    ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
    Область= Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
    ТабДокумент.Вывести(Область);

    Для Каждого Колонка из ТаблицаКолонок Цикл
    Область = Макет.ПолучитьОбласть("Группа|Склад");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
    ПараметрыОтбора.Вставить("Склад",Колонка["Склад"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);

    Если НайденныеСтроки.Количество() > 0 Тогда

    КоличествоСвободныйОстаток = 0;
    КоличествоВРезерве = 0;
    КоличествоНоваяМарка = 0;
    КоличествоСтараяМарка = 0;
    КоличествоПартионно = 0;

    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл

    КоличествоСвободныйОстаток = КоличествоСвободныйОстаток + НайденнаяСтрока["СвободныйОстаток"];
    КоличествоВРезерве = КоличествоВРезерве + НайденнаяСтрока["КоличествоВРезерве"];
    КоличествоНоваяМарка = КоличествоНоваяМарка + НайденнаяСтрока["КоличествоПоштучно2"];
    КоличествоСтараяМарка = КоличествоСтараяМарка + НайденнаяСтрока["КоличествоПоштучно"];
    КоличествоПартионно = КоличествоПартионно + НайденнаяСтрока["КоличествоПартионно"];

    КонецЦикла;

    Область.Параметры.ГруппаСвободныйОстаток = КоличествоСвободныйОстаток;
    Область.Параметры.ГруппаРезервы = КоличествоВРезерве;
    Область.Параметры.ГруппаНоваяМарка = КоличествоНоваяМарка;
    Область.Параметры.ГруппаСтараяМарка = КоличествоСтараяМарка;
    Область.Параметры.ГруппаПартионно = КоличествоПартионно;

    КонецЕсли;

    Иначе

    Область.Параметры.ГруппаСвободныйОстаток = 0;
    Область.Параметры.ГруппаРезервы = 0;
    Область.Параметры.ГруппаНоваяМарка = 0;
    Область.Параметры.ГруппаСтараяМарка = 0;
    Область.Параметры.ГруппаПартионно = 0;

    КонецЕсли;

    ТабДокумент.Присоединить(Область);

    КонецЦикла;

    // группа итог

    Область = Макет.ПолучитьОбласть("Группа|Итог");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);

    Если НайденныеСтроки.Количество() > 0 Тогда

    КоличествоОстаток = 0;

    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл

    КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];

    КонецЦикла;

    Область.Параметры.ГруппаИтогоОбщийОстаток = КоличествоОстаток;

    Иначе

    Область.Параметры.ГруппаИтогоОбщийОстаток = 0;

    КонецЕсли;

    ТабДокумент.Присоединить(Область);

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));

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

Вроде задача простая, но уже перепробовал все варианты. Помогите!
---
Если у вас в конфигурации есть справочник Номенклатура - просто попробуйте выполнить отчет.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).

Выбирайте.
---
0. Каким инструментом делаете отчет?
1. Почему не использовать обычные Группировка Иерархия?
---
Таблица значения просто заполняет макет.
Мне необходимо именно в этом коде добавить подгруппировки!
---
в исходной таблице эти поля (НоменклатурнаяГруппа.Родитель.Родитель,НоменклатурнаяГруппа.Родитель ) есть ?
если нет, то надо добавить

```1c
    ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа, Номенклатура");
    ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, Номенклатура");
```
 - заменить с учетом доп полей
---
Так тоже пытался. Имеете ввиду так ?:

```1c
    ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель, Номенклатура");
    ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель,Номенклатура");
```

Я не понимаю как в циикле корректно это обходить потом... А именно открывать и закрывать группировку строк. Выходит полная ересь..
---
в первом цикле перебираете НоменклатурнаяГруппаРодительРодитель, во втором НоменклатурнаяГруппаРодитель, а затем тот цикл что уже есть по НоменклатурнаяГруппа
---
Не совсем понимаю Вас. То есть надо сделать три сводные таблицы и каждую отсортировать?
А после поверх моего существующего цикла сделать обход по первой и второй ?

```1c
    Для Каждого Строка из ТаблицаСтроки Цикл
    //группировка по группам номенклатуры
    Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
    Если ТекущаяГруппа <> Неопределено Тогда
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;

    ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
    Область= Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
    ТабДокумент.Вывести(Область);

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));

    КонецЕсли;
    КонецЦикла;
```

Вот сократил группировку. Можно на конкретно этом куске ?
---
три сводные таблицы - нет. таблица одна. А циклов столько сколько надо группировок
---
```1c
    Для каждого Строка Из ТаблицаСводная Цикл
    Для каждого Строка Из ТаблицаСводная Цикл
    Для каждого Строка из ТаблицаСводная Цикл
    конеццикла;
    конеццикла;
    конеццикла;
```

Прям так ? И на основании моего кода в начале необходимо добавить Подгруппа = Неопределено и Подгруппа2 = Неопределенно и делать соответствующе такие же махинации ? И в какой момент делать начатьгруппировку строк..
---
как-то так
```1c
    РодительРодитель = Неопределено;
    Для Каждого СтрокаТЗ из ТЗ

    Если РодительРодитель <> СтрокаТЗ.РодительРодитель Тогда

    Если РодительРодитель = Неопределено Тогда
    // Первый раз в РодительРодитель
    // Начать группировку РодительРодитель
    Иначе
    // Закончить группировку РодительРодитель
    КонецЕсли

    РодительРодитель = СтрокаТЗ.РодительРодитель;

    КонецЕсли;

    Пока РодительРодитель = СтрокаТЗ.РодительРодитель Цикл

    Родитель = Неопределено;

    Если Родитель <> СтрокаТЗ.Родитель Тогда
    Если Родитель = Неопределено Тогда
    // Первый раз в Родитель
    // Начать группировку Родитель
    Иначе
    // Закончить группировку Родитель
    КонецЕсли

    Родитель = СтрокаТЗ.Родитель;

    КонецЕсли;

    Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл
    // Вывод детальных записей
    КонецЦикла

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

    // Закончить группировку Родитель
    // Закончить группировку РодительРодитель
    // Общие итоги
```
---
Спасибо! Буду тестить сейчас.
В детальные записи мой кусок кода из шапки помещать выходит и где конкретно помещать вывод области родительродитель и родитель?
---
Добавил в детальные записи свой кусок кода.
Бессконечный цикл какой то получился. В условие "Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл" попадает без останвки.

Полагаю так как у первых двуух строк в моей ТЗ отсуствует напрочь номенклатурная группа. Как быть ?
---
В нижнем цикле после вывода детальных записей
Продолжить:
стоит?

ПС. Я предложил _схему_ а не 100% рабочий код.
---
Стоит
---
Полагаю так как у первых двуух строк в моей ТЗ отсуствует напрочь номенклатурная группа. Как быть ?Если номенклатурная группа отсутствует в ячейку ТЗ нужно поставить пустую ссылку
---
Да,так и сделал. в (17) скинул весь код. Всё равно цикл ходит бесконечно.
---
Циклы поменял.

```1c
    РодительРодитель = Неопределено;

    ИндексСтроки = 0;
    ПоследняяСтрока = ТЗ.Количество()-1;
    СтрокаТЗ = ТЗ [ИндексСтроки];

    Пока Истина Цикл

    Если РодительРодитель <> СтрокаТЗ.РодительРодитель Тогда

    Если РодительРодитель = Неопределено Тогда
    // Первый раз в РодительРодитель
    // Начать группировку РодительРодитель
    Иначе
    // Закончить группировку РодительРодитель
    КонецЕсли

    РодительРодитель = СтрокаТЗ.РодительРодитель;

    КонецЕсли;

    Пока РодительРодитель = СтрокаТЗ.РодительРодитель Цикл

    Родитель = Неопределено;

    Если Родитель <> СтрокаТЗ.Родитель Тогда
    Если Родитель = Неопределено Тогда
    // Первый раз в Родитель
    // Начать группировку Родитель
    Иначе
    // Закончить группировку Родитель
    КонецЕсли

    Родитель = СтрокаТЗ.Родитель;

    КонецЕсли;

    Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл
    // Вывод детальных записей

    ИндексСтроки = ИндексСтроки + 1;
    Если ИндексСтроки > ИндексПоследнейСтроки Тогда
    Прервать;
    Иначе
    СтрокаТЗ = ТЗ [ИндексСтроки];
    КонецЕсли;

    КонецЦикла

    Если ИндексСтроки > ИндексПоследнейСтроки Тогда
    Прервать;
    КонецЕсли;

    КонецЦикла

    Если ИндексСтроки > ИндексПоследнейСтроки Тогда
    Прервать;
    КонецЕсли;

    КонецЦикла
```
---
А я вообще правильно свои куски кода то вставил в ваши циклы?
Круто Вы умеете! Попробую переделать на такой.
---
ИндексПоследнейСтроки это откууда ?
---
ИндексПоследнейСтроки = ТЗ.Количество()-1;
---
Уже сообразил. А по поводу (21) ?
Возможно глупые вопросы задаю,но я новичок..
В итоге добавил ваш цикл,выводит всех родителей. Но вот группировка лишь одна появляется.
---
Без обид Свое отношение к коду я указал в (7). Традиционный подход:
- Зарос к ТЗ.
- На основании выборки - заполнять макет.

А с циклами - попробуйте отладчиком смотреть почему след. группировки не открываются.
---
Так у меня так и сделано.
А Ваш цикл неправильный выходит. Спасибо за помощь...

РодительРодитель = неопределенно лишь один раз!
Соответственно будет РодительРодитель открываться группировка только один раз..
---
Я сдаюсь. Помогите. Пытаюсь хотя бы по первому родителю сгруппировать. Идёт всё по порядку как надо. Но группировка только детальная делается.. Где мой косяк ?:

```1c
    ТаблицаСтроки = ТаблицаСводная.Скопировать();
    ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель, Номенклатура");
    ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель,Номенклатура");

    ТекущаяГруппа = Неопределено;
    Родитель = Неопределено;

    ИндексСтрока = 0;
    ИндексПоследнейСтроки = ТаблицаСтроки.Количество()-1;
    Строка = ТаблицаСтроки[ИндексПоследнейСтроки];

    Пока Истина Цикл

    Если Родитель <> Строка["НоменклатурнаяГруппаРодительРодитель"] Тогда
    Если Родитель <> Неопределено Тогда
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;
    Родитель = Строка["НоменклатурнаяГруппаРодительРодитель"];
    Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(Родитель);
    ТабДокумент.Вывести(Область);

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(Родитель));
    КонецЕсли;

    Пока Родитель = Строка.НоменклатурнаяГруппаРодительРодитель Цикл

    //группировка по группам номенклатуры
    Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
    Если ТекущаяГруппа <> Неопределено Тогда
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;
    ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
    Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
    ТабДокумент.Вывести(Область);

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
    КонецЕсли;

    //наименование товара
    Область = Макет.ПолучитьОбласть("Строка|Номенклатура");
    Область.Параметры.Номенклатура = Строка["Номенклатура"];
    Область.Параметры.Артикул = Строка["Номенклатура"].Артикул;
    ТабДокумент.Вывести(Область);

    ИндексСтрока = ИндексСтрока +1;
    Если ИндексСтрока > ИндексПоследнейСтроки Тогда
    Прервать;
    Иначе
    Строка = ТаблицаСтроки[ИндексСтрока];
    КонецЕсли;

    КонецЦикла;

    Если ИндексСтрока > ИндексПоследнейСтроки Тогда
    Прервать;
    КонецЕсли;

    КонецЦикла;
```
---
КМК: ПОСЛЕ циклов нужно закрыть все группировки
---
После самого последнего "ТабДокумент.ЗакончитьГруппуСтрок();" и всё? хм
Не помогло... Выводит так же..
---
Синтаксис:
ЗакончитьГруппуСтрок()
Описание:
Заканчивает последнюю из начатых ранее групп строк.

Сколько групп строк у Вас открыто и сколько Вы закрыли?
---
Но я же внутри цикла открываю и закрываю.. По логике так и должно же быть
---
После цикла попробуйте
```1c
    ТабДокумент.ЗакончитьГруппуСтрок();
    ТабДокумент.ЗакончитьГруппуСтрок();
    ТабДокумент.ЗакончитьГруппуСтрок();
```
---
Если три раза, то выдаёт ошибку "группа не начата".
Если два раза. То группировка охватывает все строки. А внутри как было по порядку так и осталось.
Как то внутри циклы полагаю надо корректно открывать, но не пойму как.
---
Сейчас отключаюсь .Если будет актуально, вечером покажите:
- актуальный код
- картинку с данными
- что попадает в печатную форму
---
Код актуальный в (28). Только в конце два раза закрыта группировка после цикла.

Что вылазит на печатной форме прикрепил картинкой. На строке 12, 13, 15 где пробелы как раз мой Родитель. Но группировки по нему нету..

Если убрать после цикла закрывание группировок, то в строке 9 просто уберётся группировка. Собственно она мне и не нужна,а нужна только где пробелы ( Родитель)

В таблице строки данные тоже верны и идут по порядку.
Дело в коде..
---
Намекните хотя бы в чём дело..
---
Всё ещё очень актуально..
---
Если у вас в конфигурации есть справочник Номенклатура - просто попробуйте выполнить отчет.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).

Выбирайте.
---
(38Посмотрел. У вас предоставляется выбор РодительРодитель лишь одного!
В моей же ТЗ РодительРодитель меняется.
В итоге в коде "ВашВариант" когда строка попадает с другим РодительРодитель происходит бессконечный цикл. Как исправить??!
Тоесть в начало цикла где условие на РодительРодитель не попадает, подскажите.

Первый вариант не стал делать, так как отчёт не мой и не особо хочется менять всё полностью. А так да, я бы сделал через выборку ПоГруппорвкам.
---
Получилось. Заменил второе условие цикла по истина на проверку) Спасибо Вам!
---
Единственное, когда я делаю присоединить область в детальных записях с итогами,колонку. То почему то выводит справа от макета ещё раз эти колонки, не пойму как обойти..
---
// Закончить группировку Родитель

Туда поставил ТабДокумент.ЗакончитьГруппуСтрок();
Поставил точку остаанова и туда вообще не попадает даже.
---
я бы деал _совсем_ не так.
1. в ТЗ ТаблицаСводная добавить колонки Родитель и РодительРодитель и заполнить их.
2. Зарос к полученной ТЗ.
3. На основании выборки - заполнять макет.

КМК, В вашем коде не хватает ещё одного вложенного цикла по РодительРодитель
---
Сообщение было скрыто модератором.
---
Однозначно дело в коде:

```1c
    ТекущаяГруппа = Неопределено;
    РодительРодитель = Неопределено;

    Для Каждого Строка из ТаблицаСтроки Цикл
    //группировку по родителю
    Если РодительРодитель <> Строка.НоменклатурнаяГруппаРодительРодитель Тогда

    Если РодительРодитель = Неопределено Тогда

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(РодительРодитель));
    Иначе
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;

    РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель;
    Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(РодительРодитель);
    ТабДокумент.Вывести(Область);

    КонецЕсли;

    Пока РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель Цикл

    Родитель = Неопределено;

    Если Родитель <> Строка.НоменклатурнаяГруппаРодитель Тогда
    Если Родитель = Неопределено Тогда
    ТабДокумент.НачатьГруппуСтрок(СокрЛП(Родитель));
    Иначе
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;

    Родитель = Строка.НоменклатурнаяГруппаРодитель;
    Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(Родитель);
    ТабДокумент.Вывести(Область);

    КонецЕсли;

    Пока (РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель) И (Родитель = Строка.НоменклатурнаяГруппаРодитель) Цикл

    //группировка по группам номенклатуры
    Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
    Если ТекущаяГруппа <> Неопределено Тогда
    ТабДокумент.ЗакончитьГруппуСтрок();
    КонецЕсли;
    ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
    Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
    Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
    ТабДокумент.Вывести(Область);

    Для Каждого Колонка из ТаблицаКолонок Цикл
    Область = Макет.ПолучитьОбласть("Группа|Склад");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
    ПараметрыОтбора.Вставить("Склад", Колонка["Склад"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки.Количество() > 0 Тогда
    Если Колонка["Склад"] = "Склад СВХ" Тогда
    КоличествоЛабаратория = 0;
    КоличествоДоработка = 0;
    КоличествоГотовДекларирование = 0;
    КоличествоНаДекларировании = 0;
    КоличествоБезстатуса = 0;
    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
    Если НайденнаяСтрока.Статус = "Проверка лаборатории проведена" Тогда
    КоличествоЛабаратория = КоличествоЛабаратория + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    ИначеЕсли НайденнаяСтрока.Статус = "Требуется доработка" Тогда
    КоличествоДоработка = КоличествоДоработка + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    ИначеЕсли НайденнаяСтрока.Статус = "Готов к декларированию" Тогда
    КоличествоГотовДекларирование = КоличествоГотовДекларирование + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    ИначеЕсли НайденнаяСтрока.Статус = "Товар на декларировании" Тогда
    КоличествоНаДекларировании = КоличествоНаДекларировании + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    ИначеЕсли НайденнаяСтрока.Статус = "Без статуса" Тогда
    КоличествоБезстатуса = КоличествоБезстатуса + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    КонецЕсли;
    КонецЦикла;
    Область.Параметры.ГруппаСвободныйОстаток = КоличествоЛабаратория;
    Область.Параметры.ГруппаРезервы = КоличествоДоработка;
    Область.Параметры.ГруппаНоваяМарка = КоличествоГотовДекларирование;
    Область.Параметры.ГруппаСтараяМарка = КоличествоНаДекларировании;
    Область.Параметры.ГруппаПартионно = КоличествоБезстатуса;
    Иначе
    КоличествоСвободныйОстаток = 0;
    КоличествоВРезерве = 0;
    КоличествоНоваяМарка = 0;
    КоличествоСтараяМарка = 0;
    КоличествоПартионно = 0;
    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
    КоличествоСвободныйОстаток = КоличествоСвободныйОстаток + НайденнаяСтрока["СвободныйОстаток"];
    КоличествоВРезерве = КоличествоВРезерве + НайденнаяСтрока["КоличествоВРезерве"];
    КоличествоНоваяМарка = КоличествоНоваяМарка + НайденнаяСтрока["КоличествоПоштучно2"];
    КоличествоСтараяМарка = КоличествоСтараяМарка + НайденнаяСтрока["КоличествоПоштучно"];
    КоличествоПартионно = КоличествоПартионно + НайденнаяСтрока["КоличествоПартионно"];
    КонецЦикла;
    Область.Параметры.ГруппаСвободныйОстаток = КоличествоСвободныйОстаток;
    Область.Параметры.ГруппаРезервы = КоличествоВРезерве;
    Область.Параметры.ГруппаНоваяМарка = КоличествоНоваяМарка;
    Область.Параметры.ГруппаСтараяМарка = КоличествоСтараяМарка;
    Область.Параметры.ГруппаПартионно = КоличествоПартионно;
    КонецЕсли;
    Иначе
    Область.Параметры.ГруппаСвободныйОстаток = 0;
    Область.Параметры.ГруппаРезервы = 0;
    Область.Параметры.ГруппаНоваяМарка = 0;
    Область.Параметры.ГруппаСтараяМарка = 0;
    Область.Параметры.ГруппаПартионно = 0;
    КонецЕсли;
    ТабДокумент.Присоединить(Область);
    КонецЦикла;

    // группа итог
    Область = Макет.ПолучитьОбласть("Группа|Итог");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки.Количество() > 0 Тогда
    КоличествоОстаток = 0;
    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
    Если НайденнаяСтрока.Склад = "Склад СВХ" Тогда
    КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    иначе
    КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];
    КонецЕсли;
    КонецЦикла;
    Область.Параметры.ГруппаИтогоОбщийОстаток = КоличествоОстаток;
    Иначе
    Область.Параметры.ГруппаИтогоОбщийОстаток = 0;
    КонецЕсли;
    ТабДокумент.Присоединить(Область);

    ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
    КонецЕсли;

    //наименование товара
    Область = Макет.ПолучитьОбласть("Строка|Номенклатура");
    Область.Параметры.Номенклатура = Строка["Номенклатура"];
    Область.Параметры.Артикул = Строка["Номенклатура"].Артикул;
    ТабДокумент.Вывести(Область);

    ////данные по складам
    Для Каждого Колонка из ТаблицаКолонок Цикл
    Область = Макет.ПолучитьОбласть("Строка|Склад");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Склад", Колонка["Склад"]);
    ПараметрыОтбора.Вставить("Номенклатура", Строка["Номенклатура"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки.Количество() > 0 Тогда
    Если Колонка["Склад"] = "Склад СВХ" Тогда
    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
    Если НайденнаяСтрока.Статус = "Проверка лаборатории проведена" Тогда
    Область.Параметры.СвободныйОстаток = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
    ИначеЕсли НайденнаяСтрока.Статус = "Требуется доработка" Тогда
    Область.Параметры.Резервы = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
    ИначеЕсли НайденнаяСтрока.Статус = "Готов к декларированию" Тогда
    Область.Параметры.НоваяМарка = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
    ИначеЕсли НайденнаяСтрока.Статус = "Товар на декларировании" Тогда
    Область.Параметры.СтараяМарка = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
    ИначеЕсли НайденнаяСтрока.Статус = "Без статуса" Тогда
    Область.Параметры.Партионно = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
    КонецЕсли;
    КонецЦикла;
    иначе
    Область.Параметры.СвободныйОстаток = НайденныеСтроки[0]["СвободныйОстаток"];
    Область.Параметры.Резервы = НайденныеСтроки[0]["КоличествоВРезерве"];
    Область.Параметры.НоваяМарка = НайденныеСтроки[0]["КоличествоПоштучно2"];
    Область.Параметры.СтараяМарка = НайденныеСтроки[0]["КоличествоПоштучно"];
    Область.Параметры.Партионно = НайденныеСтроки[0]["КоличествоПартионно"];
    КонецЕсли;
    Иначе
    Область.Параметры.СвободныйОстаток = 0;
    Область.Параметры.Резервы = 0;
    Область.Параметры.НоваяМарка = 0;
    Область.Параметры.СтараяМарка = 0;
    Область.Параметры.Партионно = 0;
    КонецЕсли;
    ТабДокумент.Присоединить(Область);
    КонецЦикла;

    //////итог строк
    Область = Макет.ПолучитьОбласть("Строка|Итог");
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Номенклатура", Строка["Номенклатура"]);
    НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
    Если НайденныеСтроки.Количество() > 0 Тогда
    КоличествоОстаток = 0;
    Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
    Если НайденнаяСтрока.Склад = "Склад СВХ" Тогда
    КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
    Иначе
    КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];
    КонецЕсли;
    КонецЦикла;
    Область.Параметры.ИтогоОбщийОстаток = КоличествоОстаток;
    Иначе
    Область.Параметры.ИтогоОбщийОстаток = 0;
    КонецЕсли;
    ТабДокумент.Присоединить(Область);
    Продолжить;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
```