Подскажите пожалуйста как происходит добавление поля параметра на форму отчёта сделанного с помощью СКД? (в конфигураторе данного поля нет).
Я знаю что установил галочку возле "Включать в пользовательские настройки", но вот интересует на каком этапе эта галочка при открытии формы проверяется...Надеюсь суть вопроса понятна :)
---
http://prntscr.com/np7p3a

http://prntscr.com/np7pf6

Об этом?

Если да, то тут

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

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

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
```

И потом в НастройкиОтчета.ПараметрыДанных.Элементы

http://prntscr.com/np832y
---
http://prntscr.com/np7p3a

http://prntscr.com/np7pf6

Об этом?

Если да, то тут

http://prntscr.com/np7q5r
---
Да, именно.
Допустим у меня есть параметр строковый (он представляется стандартно в форме отчёта как галочка и поле ввода строки). Я нашел что при открытии, к примеру, строка вписывается в элемент формы:

```1c
    ЭтаФорма.Элементы.КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Значение
```

Как потом с этого элемента формы значение передается в Настройки СКД? В процедуре "ПриКомпоновкеРезультата" в:

```1c
    Настройки=КомпоновщикНастроек.Настройки;
```
 пустые настройки, как это значение с поля формы попадает в СКД?
---
Не совсем. Элементы формы, которые генерирует платформа в этой группе сразу ссылаются на Отчет.КомпоновщикНастроек.ПользовательскиеНастройки
---
Если они сразу ссылаются на Компоновщик настроек, то почему в процедуре "ПриКомпоновкеРезультата" в "КомпоновщикНастроек.ПараметрыДанных.Элементы" значение возле параметра пустое, хотя в форме оно задано?
Где искать значение параметра в процедуре "ПриКомпоновкеРезультата"?
---
```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
```

И потом в НастройкиОтчета.ПараметрыДанных.Элементы

http://prntscr.com/np832y
---
Вы можете мне сказать, какую задачу решаете, я вам подскажу как это сделать правильнее, или соглашусь с вашим вариантом.
---
Я хочу разобраться с тем, как работают параметры в СКД. Сейчас я изучаю набор данных "Объект" и столкнулся с тем что у в процедуре "ПриКомпоновкеРезультата" я делаю свой запрос, после передавая его в СКД - все работает, но запрос без параметров.
Теперь я хочу добавить параметр в СКД (период к примеру) - после чего у меня добавиться в форму Отчёта поле ввода периода - Я нажму сформировать и в процедуре "ПриКомпоновкеРезультата" мне нужно получить параметры с компоновки данных что бы передать в свой запрос, написанный вне СКД.
Если я вообще не понятно объяснил - то пишите об этом. Буду думать как изложить грамотнее, просто когда не особо понимаешь механизм, то тяжело донести свою цель и как ты к ней идешь...
---
Так понятнее)

Вместо
Настройки=КомпоновщикНастроек.Настройки
напиши
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

Потому что ты получаешь настройки как раз без пользовательских настроек.

Двигаешься в верную сторону.
Если конфигурация типовая на БСП то привыкай использовать общие модули КомпоновкаДанныхСервер и КомпоновкаДанныхКлиентСервер. Там есть все нужное для работы с настройками( отборами, параметрами, структурой) и самой СКД.

Если есть доступ к ИТС, то не мешало бы прочитать https://its.1c.ru/db/v8314doc#bookmark:dev:TI000000543
Поможет понять внутреннюю кухню СКД
---
Протестировал

```1c
    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
```

Почему "Настройки=КомпоновщикНастроек.Настройки" - пустые данные, а "КомпоновщикНастроек.ПолучитьНастройки()" - данные заполнены.
Получается в свойстве "Настройки" хранится просто шаблон настроек, а метод ПолучитьНастройки() отображает значения в данный шаблон?
Спасибо за ссылку. Опять регистрироваться на 7 дней :)
---
Вот тут вам присылал http://prntscr.com/np832y.
Если по простому, то КомпоновщикНастроек.Настройки еще не получил настройки из КомпоновщикНастроек.ПользовательскиеНастройки.

В СтандартнаяОбработка = истина это произойдет само собой. Если вы программно это делаете, то нужно выполнить КомпоновщикНастроек.ПолучитьНастройки(), чтобы пользовательские настройки сопоставились с настройками.
---
ще не получил настройки из КомпоновщикНастроек.ПользовательскиеНастройки.

В СтандартнаяОбработка = истина это произойдет само собой. Если вы программно это делаете, то нужно выполнить КомпоновщикНастроек.ПолучитьНастройки(), чтобы пользовательские настройки сопоставились с настройками.

То есть пользовательские настройки уже как бы есть в компоновке, но к ним напрямую я "заглянуть" не могу и для этого что бы посмотреть на них мне нужно сделать себе копию настроек с помощью метода ПолучитьНастройки(), а потом если я наделаю делов в этой копии, то загрузить их обратно в настройки методом ЗагрузитьНастройки(). http://prntscr.com/np8kj7

Теперь ближе к тому что я хочу сделать проясню. А именно задача моя:
есть справочник "ИменаСотрудников" с ревизитами "Дата" и "Имя" в котором присутствуют данные и мне необходимо в СКД с помощью набора данных объект вывести имена сотрудников из справочника за период указанный пользователем.
Для решения данной задачи я напишу запрос, в который нужно передать дату начала и дату окончания. Получается данные параметры мне нужно, как я понимаю, вручную добавить в форму отчёта, а не прописать в СКД или мне лучше задать их в СКД, а после они автоматически отобразятся в форме и я методом ПолучитьНастрокйки() вытяну значения, которые ввел пользователь и подсуну в свой запрос?
(не обращайте внимание на то что я работаю со справочником и настолько тупо все звучит, делаю просто понятный-простой пример для себя).

PS: хорошая программа для скриншотов - сам пользуюсь :)
---
Заглянуть можно, но как по мне - неудобно.
Если использовать СКД, то на форму вручную ничего добавлять не нужно. Просто параметры. Та же параметры можно добавлять производные, которые никак не относятся к запросу http://prntscr.com/np8wcu

ЗагрузитьНастройки() - необязательно. Настройки вы передаете Компоновщику макета

ЗагрузитьНастройки можно использовать для модификации настроек в самом компоновщике (если нужно программно заполнить и чтобы на форме параметры тоже изменились)

например:

```1c
    СобственныеНастройкиКомпоновкиДанных= Новый НастройкиКомпоновкиДанных;
    НовыйПериод = СобственныеНастройкиКомпоновкиДанных.ПараметрыДанных.Элементы.Добавить();
    НовыйПериод .Параметр = Новый ПараметрКомпоновкиДанных("Период");
    НовыйПериод .Использование = истина;
    НовыйПериод .Значение = Новый СтандартныйПериод;

    КомпоновщикНастроек.ЗагрузитьНастройки(СобственныеНастройкиКомпоновкиДанных);
```

P.S без конфигуратора мог что-то пропустить
---
ЗагрузитьНастройки можно использовать для модификации настроек в самом компоновщике (если нужно программно заполнить и чтобы на форме параметры тоже изменились)

То есть я могу с другого документа, к примеру перед открытием формы отчёта таким образом загрузить в отчёт другие настройки и после открытия формы тем самым поменяются поля параметров из СКД?

В остальном все понял, спасибо. Уже написал примерчик для себя даже рабочий.
---
Для этого используют опять же ПолучитьНастройки(). Эти настройки заполняются и передаются в КомпоновщикМакета. Не нужно ничего загружать.

Если есть желание открывать форму отчета из документа, то можно в параметры формы передать заполненные ФиксированныеНастройки или ПользовательскиеНастройки. Различие в том, что фиксированные настройки пользователь не изменит, а пользовательские настройки использовать опять же неудобно на мой взгляд, но иногда приходится.

И те и другие настройки автоматически заполнят компановщик своими настройками, и не нужно будет прописывать в модуле отчета обработку заполнения настроек(кроме случаев, когда это реально нужно, например внешний источник заполнить).
Полезно еще использовать параметр СформироватьПриОткрытии

```1c
    ФиксированныеНастройки = Новый НастройкиКомпоновкиДанных;
    Отбор = ФиксированныеНастройки.Отбор.Элементы.добавить();
    ..........................................
    Параметр = ФиксированныеНастройки.ПараметрыДанных.Элементы.добавить();
    ..............................
    УО = ФиксированныеНастройки.УсловноеОформление.Элементы.добавить();
    ..............................

    ПараметрыФормы = Новый Структура("ФиксированныеНастройки, СформироватьПриОткрытии", ФиксированныеНастройки, Истина);
    ОткрытьФорму("Отчет.МойОтчет.Форма.Форма", ПараметрыФормы, ЭтаФорма);
```

или если нужен простой отбор, то

```1c
    ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка, Номенклатура", Документ, МассивЭлементов));
    //ссылка - поле по которому добавиться отбор Ссылка Равно Документ
    //номенклатура - поле по которому добавиться отбор Номенклатура В Списке МассивЭлементов
    ОткрытьФорму("Отчет.МойОтчет.Форма.Форма", ПараметрыФормы, ЭтаФорма);
```
---
этого используют опять же ПолучитьНастройки(). Эти настройки заполняются и передаются в КомпоновщикМакета. Не нужно ничего загружать.

Если есть желание открывать форму отчета из документа, то можно в параметры

Спасибо, немного осознал. Буду разбираться дальше!
Вы очень помогли
---
мне нужно получить параметры с компоновки данных что бы передать в свой запрос, написанный вне СКД.

вот в этом курсе решается ваша задача http://learn.programstore.ru/video_kurs_skd

там есть отчет Сверка данных - в этом примере делается прям то, что вам нужно

а вообще правильный ответ в (10)
---
Хочу доработать данный запрос и добавить в него параметры, которые заданы в СКД.

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    //получение макета компоновки данных из других модулей
    //Схема=Отчеты.ТестовыОтчёт.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

    //шаг 1
    СтандартнаяОбработка=Ложь; //отключаем стандартную обработку

    //шаг 2
    //получение схемы компоновки данных
    //СхемаКомпоновкиДанных

    //шаг3
    //получение настроек компоновки данных
    Настройки=КомпоновщикНастроек.Настройки;//Прикладные объекты-Отчеты-ОтчетОбъект.<Имя отчета>-Свойства-КомпоновщикНастроек(сдесь лежат настройки выполненые пользователем)
    //Для задания параметров в отчёт СКД
    //Параметр=Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НазваниеПараметра"));//Настройки.ПараметрыДанных.Элементы (задаются параметры формирования отчёта)
    //Если Параметр<>Неопределено Тогда
    //Параметр.Значение="Значение";
    //Параметр.Использование=Истина;
    //КонецЕсли;

    //шаг4
    //создание компоновщика макета и получение макета компоновки
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);

    //шаг5
    //заполнение и создание внешнего набора данных
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ИменаСотрудников.Наименование КАК Наименование
    |ИЗ
    | Справочник.ИменаСотрудников КАК ИменаСотрудников";
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    ВнешнийНабор=Новый Структура("ТестовыйОбъектКомпоновкиДанных",РезультатЗапроса);

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

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

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

а

Настройки=КомпоновщикНастроек.ПолучитьНастройки()

это вообще базовая ошибка новичков
---
Я не совсем понимаю, что вам хотите узнать. Я могу на пальцах объяснить как работает механизм Настройки СКД и Пользовательские настройки СКД. Могу ссылку на документацию дать, где в картинках описан механизм.
---
на скрине обведена кнопка, там галочку поставьте "Быстрый доступ". Тогда Ваш отбор попадет автоматически на форму.
---
Я это знаю (галочка ""Включать в пользовательские настройки"). Сейчас я разбираюсь с внутренним механизмом работы отчёта.
---
с параметрами тоже самое.
---
Настройки = КомпоновщикНастроек.ПолучитьНастройки();