Создал отчет на СКД, вывел отчет в форму списка документа Счет на оплату.
Когда нажимаю на сам отчет в форме списка, нужно в СКД передать параметр ссылка на документ в форме списка. Можно ли этот параметр передавать НЕ программно а вписать во вкладку "Параметры" колонка "Выражении"
---
Лучше методику напишу. Уж не знаю, насколько она правильна с точки зрения разработки на БСП. Но потребовалось быстро сделать, и решение было найдено.

1. Речь идет о встроенном отчете (не о внешнем подключаемом). В моем примере это ОтчетСверка.
Нужно передать значения, которые должны установиться в Параметры данных отчета.
Передаем параметры через обычные параметры формы:

```1c
    ПараметрыОтчетаСверки = Новый Структура();
    ПараметрыОтчетаСверки.Вставить("Переток", Переток);
    ПараметрыОтчетаСверки.Вставить("ОтчетныйПериод",
    ОбщегоНазначенияУОРКлиентСервер.СтандартныйПериодОтчетногоПериода(Объект.ОтчетныйПериод));
    ПараметрыОтчетаСверки.Вставить("СформироватьПриОткрытии", Истина);

    ОткрытьФорму("Отчет.ОтчетСверка.Форма", ПараметрыОтчетаСверки, ЭтаФорма, Переток);
```

2. Вписываемся в ВариантыОтчетовПереопределяемый:

```1c
    Процедура НастроитьВариантыОтчетов(Настройки) Экспорт

    ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОтчетСверка);
    КонецПроцедуры
```

Это позволит задать параметры, которые планируем менять.

3. Прописываем обработчик в ММ отчета:

```1c
    Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
    НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
    КонецПроцедуры
```

Сообщаем, что хотим донастраивать настройки формы.

4. В модуле отчета прописываем, что хотим ловить определенные события:

```1c
    Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
    Настройки.События.ПриСозданииНаСервере = Истина; // Это на всяк случай вытащил
    Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; // Это для махинаций с параметрами
    КонецПроцедуры
```

5. В модуле объекта прописываем обработчик события ПередЗагрузкойНастроекВКомпоновщик. Его код моем предыдущем посте.
При открытии формы, в параметр Контекст передается форма отчета. В ней прочитываем параметры, которые передали действием п.1.
Но при переформировании отчета Контекст уже приходит другой (не анализировал, откуда он формируется).

6. Обновляем метаданные - запускаемся с ключом /С ЗапуститьОбновлениеИнформационнойБазы .

Ну вот, как-то так получилось подставить параметры.
---
Сделал вот по этому описанию: https://its.1c.ru/db/pubcomplexreports#content:38:hdoc
---
Нет
---
тут только программно можно формировать отчет. Лучше не параметр, а через отбор. Хотя, кому как больше нравится.
---
А можете пример, какую процедуру на форме отчета надо вызвать, чтобы передать параметр
---
```1c
    ОткрытьФорму("Отчет.БлаБлаБла.ФормаОтчета", Новый Структура("Параметры, ФормироватьПриОткрытии", Новый Структура("Документ", Элементы.Список.ТекущаяСтрока), Истина), блаблабла);
```
Как-то так...
---
Это вызывать в процедуре ПриСоздании или ПриОткрытии ?
---
Э... Это в коде команды надо прописать. В отчете ничего делать не надо. Но там не точно вот как я написал, а с творческим подходом...
---
Неа, так не канает.
---
Сделал вот по этому описанию: https://its.1c.ru/db/pubcomplexreports#content:38:hdoc
---
Но в все равно есть вопросы, если отбор выведен на форму отчета (быстрые пользовательские настройки), то разработчики 1С предлагают так же добавить отбор в процедуру "ПередЗагрузкойПользовательскихНастроекНаСервере", но присвоение значения параметру происходит по индексу, что для меня очень криво, ведь параметр можно вниз/вверх передвинуть и всё, индекс сбился.
Может кто объяснить зачем так сделали и есть ли более универсальный способо

```1c
    &НаСервере
    Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)

    Настройки.Элементы[0].Значение = ‘20111201’;
    Настройки.Элементы[0].Использование = Истина;
    Настройки.Элементы[1].Значение = ‘20111231’;
    Настройки.Элементы[1].Использование = Истина;

    КонецПроцедуры
```
---
Вот так делал:

```1c
    Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт

    Если ТипЗнч(Контекст)<>Тип("ФормаКлиентскогоПриложения") Тогда
    Возврат;
    КонецЕсли;

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

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

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

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

1. Речь идет о встроенном отчете (не о внешнем подключаемом). В моем примере это ОтчетСверка.
Нужно передать значения, которые должны установиться в Параметры данных отчета.
Передаем параметры через обычные параметры формы:

```1c
    ПараметрыОтчетаСверки = Новый Структура();
    ПараметрыОтчетаСверки.Вставить("Переток", Переток);
    ПараметрыОтчетаСверки.Вставить("ОтчетныйПериод",
    ОбщегоНазначенияУОРКлиентСервер.СтандартныйПериодОтчетногоПериода(Объект.ОтчетныйПериод));
    ПараметрыОтчетаСверки.Вставить("СформироватьПриОткрытии", Истина);

    ОткрытьФорму("Отчет.ОтчетСверка.Форма", ПараметрыОтчетаСверки, ЭтаФорма, Переток);
```

2. Вписываемся в ВариантыОтчетовПереопределяемый:

```1c
    Процедура НастроитьВариантыОтчетов(Настройки) Экспорт

    ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ОтчетСверка);
    КонецПроцедуры
```

Это позволит задать параметры, которые планируем менять.

3. Прописываем обработчик в ММ отчета:

```1c
    Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
    НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
    КонецПроцедуры
```

Сообщаем, что хотим донастраивать настройки формы.

4. В модуле отчета прописываем, что хотим ловить определенные события:

```1c
    Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
    Настройки.События.ПриСозданииНаСервере = Истина; // Это на всяк случай вытащил
    Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; // Это для махинаций с параметрами
    КонецПроцедуры
```

5. В модуле объекта прописываем обработчик события ПередЗагрузкойНастроекВКомпоновщик. Его код моем предыдущем посте.
При открытии формы, в параметр Контекст передается форма отчета. В ней прочитываем параметры, которые передали действием п.1.
Но при переформировании отчета Контекст уже приходит другой (не анализировал, откуда он формируется).

6. Обновляем метаданные - запускаемся с ключом /С ЗапуститьОбновлениеИнформационнойБазы .

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