Здравствуйте!
Делаю отчет, при помощи скд собираю данные, в процедуре ПриКомпоновкеРезультата проставляю значения запроса, которые неизменны.
Загвоздка в том, что информацию нужно вывести в макет, который при помощи СКД не нарисовать.
Делаю при помощи СКД, чтобы пользователи могли делать любые отборы и могли отправлять по почте в дальнейшем.

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

```1c
    ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;

    КПСПереоценки = Новый СписокЗначений;
    КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));

    Массив = новый Массив;
    Для каждого Стр из ВернутьМассивКЭК("200") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;
    Для каждого Стр из ВернутьМассивКЭК("300") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;

    ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
    ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
```
---
Компонуй скд но выводи не в табличный документ а таблицу значений..... ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
А дальше формируй свой отчет по данным таблицы
---
в процедуре ПриКомпоновкеРезультата я должен сделать СтандартнаяОбработка = Ложь ?

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

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

    Настройки = КомпоновщикНастроек.Настройки;

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

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

    ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;

    КПСПереоценки = Новый СписокЗначений;
    КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));

    Массив = новый Массив;
    Для каждого Стр из ВернутьМассивКЭК("200") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;
    Для каждого Стр из ВернутьМассивКЭК("300") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;

    ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
    ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);

    ТаблицаДанных = Новый ТаблицаЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```
---
```1c
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

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

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```
---
а параметры запроса, которые я устанавливаю, нужно присвоить до процессорВывода?
---
КомпановщикМакета выполняется с настройками из компоновщикаНастроек, все параметры уже должны быть установлены в компоновщике настроек.
---
вот так верно?

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

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

    ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;

    КПСПереоценки = Новый СписокЗначений;
    КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));

    Массив = новый Массив;
    Для каждого Стр из ВернутьМассивКЭК("200") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;
    Для каждого Стр из ВернутьМассивКЭК("300") Цикл
    Массив.Добавить(Стр);
    КонецЦикла;

    ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
    ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
    ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);

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

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

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    КонецПроцедуры
```
---
Похоже на правду.
---
Вы в переменную "ПараметрыДанных" засовываете "КомпоновщикНастроек.Настройки.ПараметрыДанных", эту структуру меняете, а в макет передаете "КомпоновщикНастроек.ПолучитьНастройки()". Я не уверен, что он заново не получит настройки и не перезатрет параметры. А может быть, я просто привык использовать КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы. В общем, если не заработает - проверьте этот момент, на всякий случай.
---
Нормально все будет. ПолучитьНастройки получит копию настроек, в том числе и новые установленные до этого параметры.
---
Спасибо, буду пробовать дальше
---
Пробую посмотреть, что будет в таблице значений и в этой строке

```1c
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
```

 выскакивает выскакивает ошибка на скрине. Куда копать не подскажите?
В скд на закладке настройки, отчета нет и детальных записей тоже
---
Он у вас не выполняется по какой-то причине, возможно обязательные параметры не установлены или просто ошибка в схеме.
Вам нужно проверить работу этой схемы с этими параметрами до того, как вы будете выполнять ее программно.
---
Попробовал. Добавил в настройки детальные записи и убрал из модуля все, кроме программного заполнения параметров. Все сформировалось
---
Попробуй так:

```1c
    Попытка
    МакетКомпоновки = КомпоновщикМакета.Выполнить(....
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
```
---
я решил посмотреть что лежит в компоновщикенастроек и обнаружилось, что ДатаНачала и ДатаОкончания, которые заполняются через период с типом СтандартныйПериод (&Период.ДатаНачала и &Период.ДатаОкончания) и счета, которые заполняются через выражение БухгалтерскийУчетПовтИсп.ПолучитьМассивСчетов("17.01,17.03,17.07,17.34"), не заполнены. хочу сейчас их заполнить тоже в модуле.
---
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Параметры проставил, но это не помогло.
Попытка-Исключение выдала :
{ВнешнийОтчет.Отчетдоходрасход.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Выполнить): Ошибка компоновки макета: Ошибка генерации макета: Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений
---
Так какая структура отчета у тебя, покажи настройки скд ?
---
вот такие. в выбранных полях ничего нет
---
На закладке настройка у тебя нет ни одной группировки, что ты собираешься выводить ?
---
я там детальные записи делал, не помогло
---
Ну не знаю, что ты там делал, но с такими настройками конечно работать не будет.
---
я сейчас добавил детальные записи, та же ошибка.
добавил группировку и в выбранные поля добавил сумму. не помогло.
---
Покажи настройки и поля в группировке.
---
какие именно настройки показать?
---
В настройках скд, что на закладке "Настройки"
---
вот
---
И что, при программном выводе та же ошибка ?
---
к сожалению да
---
Что за макет такой, который не нарисовать на СКД, можно картиночку?

Может где-то пропустил, какая конфигурация? Можете сам файл прикрепить или хотя бы файл со схемой!
---
Конфа БГУ 2.
Вот отчет. Наметки макета в нем можно увидеть
---
Да, косяк в схеме.
---
К сожалению БГУ под рукой нет...
Вариант такой: попробуйте создать форму для этого отчёта, параметры заполняйте при открытии, затем в настройках убедитесь что они все заполнены, если не формируется, поэксперементируйте с конструктором настроек(добавте/уберите поля), так или иначе вы должны сперва заставить сформироваться отчёт в обычном режиме и только после этого переделывать его на программный(по факту, код у вас вроде рабочий) (БГУ будет только завтра, если не победите, может что дельное смогу подсказать...)
---
Пока не работает.
---
Я заменил регистр и убрал все параметры у меня заработало, тоже бгу нет под рукой.
---
в смысле убрал параметры?
---
У тебя в отчете много параметров разных, я упростил запрос, убрал все эти параметры, которые есть у тебя и все заработало.
---
я максимально упростил запрос, избавился от всех параметров, но это не помогло.
---
Вот мой пример, на другом регистре из другой конфигурации, все работает.
---
а в какой конфе смотреть?
---
БУХ 2.0
---
Спасибо большое. Получилось. Там еще как-то влияли сохраненные настройки, которые я не заметил ранее. Ну а теперь буду обрабатывать таблицу значений и выводить свой макет.