Всем доброго времени суток!

Подскажите в чем может быть затык.
Имеется отчет на СКД, расшифровка реализована "ручками"
Вот код формирования отчета:

```1c
    Процедура Сформировать(Режим = Неопределено,Настройки) ЭКСПОРТ

    //Не забываем очищать
    ЭлементыФормы.Результат.Очистить();

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    //Определим настройки
    Если Настройки = Неопределено Тогда
    Настройки = КомпоновщикНастроек.Настройки;
    КонецЕсли;

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

    //Определим период и тип цен
    НачалоПериода = МакетКомпоновки.ЗначенияПараметров.Найти("ДатаНачала");
    КонецПериода = МакетКомпоновки.ЗначенияПараметров.Найти("ДатаОкончания");
    ТипЦен = МакетКомпоновки.ЗначенияПараметров.Найти("ТипЦенНоменклатуры");

    Если НачалоПериода = Неопределено ИЛИ КонецПериода = Неопределено Тогда //не стоит флажок
    ВызватьИсключение("Не задан период формирования отчета!");
    //А можно в результат красную строку алярма
    Иначе
    Если НачалоПериода.Значение = Дата(1,1,1) ИЛИ КонецПериода.Значение = Дата(1,1,1) Тогда
    ВызватьИсключение("Не задан тип цен номенклатуры!");
    //А можно в результат красную строку алярма
    Иначе
    НачалоПериода = НачалоПериода.Значение;
    КонецПериода = КонецПериода.Значение;
    КонецЕсли;
    КонецЕсли;
    Если МакетКомпоновки.ЗначенияПараметров.Найти("ТипЦенНоменклатуры") = Неопределено Тогда // не стоит флажок
    ВызватьИсключение("Не задан тип цен номенклатуры!");
    //А можно в результат красную строку алярма
    Иначе
    Если ТипЦен.Значение = Неопределено ИЛИ ТипЦен.Значение = Справочники.ТипыЦенНоменклатуры.ПустаяСсылка() Тогда //не задано значение
    ВызватьИсключение("Не задан тип цен номенклатуры!");
    //А можно в результат красную строку алярма
    Иначе
    ТипЦен = ТипЦен.Значение;
    КонецЕсли;
    КонецЕсли;

    //Сформируем внешние данные
    ТаблицаДанных = ПолучитьВнешниеДанные(НачалоПериода,КонецПериода,ТипЦен); //получаем данные из МИС и с оборудования

    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("ВнешниеДанные", ТаблицаДанных);

    //У-у-и-и-и-ху-у-у
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);

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

    КонецПроцедуры //Процедура ДействияФормыДействие(Кнопка)
```

а вот код оборботки расшифровки:

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

    Перем ВыполненноеДействие;
    СтандартнаяОбработка = Ложь;

    // Создадим и инициализируем обработчик расшифровки
    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

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

    //Дополняем своими действиями
    ДополнительныеДействия=Новый СписокЗначений;
    ДополнительныеДействия.Добавить("Т1","Таблица 1 - Количество оказанных услуг по данным МИС"); // добавляем свое действие
    ДополнительныеДействия.Добавить("Т2","Таблица 2 - Спецификация"); // добавляем свое действие
    ДополнительныеДействия.Добавить("Т3","Таблица 3 - ФактическоеСписание"); // добавляем свое действие
    ДополнительныеДействия.Добавить("ФактическоеСписание","ФактическоеСписание"); // добавляем свое действие
    ДополнительныеДействия.Добавить("ЦеныНоменклатуры","Цены номенклатуры"); // добавляем свое действие

    // Осуществим выбор действия расшифровки пользователем
    Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка,ВыполненноеДействие,ДоступныеДействия,ДополнительныеДействия);

    //Проверим получили ли расшифровку
    Если Настройки = Неопределено Тогда
    Возврат; //нет изменений
    КонецЕсли;

    //Этот кусок если открывать прямо в этой форме
    //КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); // загружаем настройки
    //ЭлементыФормы.Результат.Очистить(); // очищаем поле табличного документа
    //СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки); // выводим результат в этом же окне

    //Сформируем результат
    Если ВыполненноеДействие="Т1" Тогда
    // загрузим настройки Т1
    //...
    ИначеЕсли ВыполненноеДействие = "Т2" Тогда
    //Загрузим настройки Т2
    //...
    ИначеЕсли ВыполненноеДействие = "Т3" Тогда
    //Загрузим настройки Т3
    //...
    ИначеЕсли ВыполненноеДействие = "ФактическоеСписание" Тогда
    //Загрузим настройки Т3
    //...
    ИначеЕсли ВыполненноеДействие = "ЦеныНоменклатуры" Тогда
    //Загрузим настройки Т3
    //...
    ИначеЕсли ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
    //сортировка
    // Если требуется упорядочить - упорядочим в текущем отчете
    Сформировать(Истина,Настройки);
    Иначе
    НовыйОтчет = Новый (ТипЗнч(ОтчетОбъект));
    ФормаОтчета = НовыйОтчет.ПолучитьФорму("ФормаОтчета",,Новый УникальныйИдентификатор);
    ФормаОтчета.ДействияФормыДействие(Истина,Настройки); //формируем
    ФормаОтчета.Открыть();
    КонецЕсли; //Если ВыполненноеДействие="Т1" или Т2 или Т3 Иначе

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

Сам отчет:

Расшифровываем по любому полю:

И отлично все сформировалось - как надо, но настройки отчета все слетели на стандартные:

И если еще раз сформируем, то получаем дефолтный отчет:

Подскажите как исправить
---
Как-то так:

```1c
    //Определим настройки
    Если Настройки = Неопределено Тогда
    Настройки = КомпоновщикНастроек.Настройки;
    Иначе
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    КонецЕсли;
```
---
```1c
    //Определим настройки
    Если Настройки = Неопределено Тогда
    Настройки = КомпоновщикНастроек.Настройки;
    КонецЕсли;
```

При расшифровке настройке передаются как параметр в процедуру.
Их надо не просто применить при формировании отчета, но и загрузить в компоновщик настроек.
У вас же при расшифровке используются настройки расшифровки, а при повторном формировании - настройки компоновщика.
---
Как-то так:

```1c
    //Определим настройки
    Если Настройки = Неопределено Тогда
    Настройки = КомпоновщикНастроек.Настройки;
    Иначе
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    КонецЕсли;
```
---
Спасибо, теперь все ок.
---
Если платформа 8.3, то еще можно посмотреть в сторону пользовательских настроек, они имеют приоритет перед настройками отчета.