переопределяю типовую процедуру, все ок, работает, но ГДЕ тут можно обработать результат запроса перед выводом??
Переменная Результат пустая

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанных"));

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Результат = Новый ТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ДокументРезультат.Вывести(Результат);

    КонецПроцедуры
```
---
На вскидку, как то так.

```1c
    Строка = 1;
    Колонка = 1;
    УдалитьСтроку = Истина;

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

    СчКол = 1;
    Пока СчКол <= 50 Цикл
    ТекОбласть = ТабДок.Область(Строка,Колонка,Строка,Колонка);
    Если ТекОбласть.ЗначениеЗаполнено Тогда //Зависит от того, где заполняется значение (текст/значение).
    УдалитьСтроку = Ложь; //Значит строка уже не пустая и удалять нельзя.
    Строка = Строка + 1;
    Прервать;
    Иначе
    Колонка = Колонка + 1;
    КонецЕсли;
    КонецЦикла;

    Если УдалитьСтроку Тогда
    УдалитьСтроку = Ложь;
    ТабДок.УдалитьОбласть(ТабДок.Область(Строка,1,Строка,50),ТипСмещенияТабличногоДокумента.ПоВертикали);
    КонецЕсли;
    Колонка = 1;
    //Процедуры прерывания по окончанию обработки табличного документ
    КонецЦикла;
```
---
перед
```1c
    ДокументРезультат.Вывести(Результат)
```
   Результат пустая и при этом данные выводятся ?
---
нет на самом деле там ТабличныйДокумент, чтобы его обойти и обработать, надо выгрузить его в ТЗ ? и затем обратно?
---
Варианта 3:
- Или обрабатывать табличный документ
- или выгружать как таблицу значений, обрабатывать, а затем преобразовывать в табличный документ
- или (3)
---
https://infostart.ru/1c/articles/1223500/
---
чё за изврат, как перед заполнением "Результат" обработать результат запроса
---
с помощью ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; можно сохранить в таблицу значений
---
ненавижу 1с
---
А где то это проще реализовано?
Если не нравится как работает СКД, то в чем проблема, нарисуйте свой отчет без СКД и не придется ничего переопределять :-)
---
в скд всё норм. но я не могу его средствами убрать ряд ненужных строк.
---
Тогда как вариант, обработать выведенный результат в табличный документ и удалить пустые строки уже после формирования отчета.
---
вопрос в том, как это сделать.
---
ТабДок.УдалитьОбласть(ТабДок.Область(НужнаяОбласть),ТипСмещенияТабличногоДокумента.ПоВертикали);
---
как обойти-то его, чтобы нужные области (строки) найти?
---
На вскидку, как то так.

```1c
    Строка = 1;
    Колонка = 1;
    УдалитьСтроку = Истина;

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

    СчКол = 1;
    Пока СчКол <= 50 Цикл
    ТекОбласть = ТабДок.Область(Строка,Колонка,Строка,Колонка);
    Если ТекОбласть.ЗначениеЗаполнено Тогда //Зависит от того, где заполняется значение (текст/значение).
    УдалитьСтроку = Ложь; //Значит строка уже не пустая и удалять нельзя.
    Строка = Строка + 1;
    Прервать;
    Иначе
    Колонка = Колонка + 1;
    КонецЕсли;
    КонецЦикла;

    Если УдалитьСтроку Тогда
    УдалитьСтроку = Ложь;
    ТабДок.УдалитьОбласть(ТабДок.Область(Строка,1,Строка,50),ТипСмещенияТабличногоДокумента.ПоВертикали);
    КонецЕсли;
    Колонка = 1;
    //Процедуры прерывания по окончанию обработки табличного документ
    КонецЦикла;
```
---
всё вроде норм, но при удалении строк группировки (у меня группировка по менеджерам заказов) остаются на месте, и первая группировка "заползает" на другие и т.д.
---
Печально, нюанс ломающий всю затею :-(
---
на данный момент не критично)
---
Вообще если тебе надо изменить результат формирования отчета через СКД, но в СКД лезть нельзя то надо программно изменить настройки компоновщика, а уже потом выводить результат. Вот статья в помощь https://infostart.ru/1c/articles/1098946/
---
мне нужно изменить не настройки, а пройтись по результату запроса и убрать "пустые" строки
---
а в настройках скд убрать пустые строки отбором не вариант?
---
это не работает в данном случае.
---
тогда покажите пример этого отчета с пустыми строками
---
Результат в виде таблицы значений можно получить из запроса макета компоновки. Этот результат обработать и подменить в наборе данных макета компоновки:

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    НаборДанных = МакетКомпоновки.НаборыДанных.НаборДанных1;

    Запрос = Новый Запрос(НаборДанных.Запрос);
    Для Каждого ПараметрЗапроса Из МакетКомпоновки.ЗначенияПараметров Цикл
    Запрос.УстановитьПараметр(ПараметрЗапроса.Имя, ПараметрЗапроса.Значение);
    КонецЦикла;

    ТЗ = Запрос.Выполнить().Выгрузить();

    ОбработкаРезультатаСКД(ТЗ);

    СвойстваНабора = Новый Структура("Имя,ИсточникДанных,Поля,Отбор");
    ЗаполнитьЗначенияСвойств(СвойстваНабора, НаборДанных);
    МакетКомпоновки.НаборыДанных.Удалить(НаборДанных);

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

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗ", ТЗ), ДанныеРасшифровки, Ложь);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    КонецПроцедуры

    Процедура ОбработкаРезультатаСКД(ТЗ)

    КонецПроцедуры
```
---
А если у меня 4 набора данных объединяются? И уже результат нужно обрабатывать?
---
По большому счету, такая обработка СКД - бред. Если СКД строится из нескольких наборов, это уже не плоский результат, который можно обработать как таблицу значений. Уверен, всё решается гораздо проще средствами самой СКД.