Прошу помощи!

Есть отчет на скд, в нем надо получить данные за период.
Период как параметры (ДатаНачала, ДатаОкончания), доступны с формы, пользователь их сам выбирает перед формированием отчета.
Как получить эти параметры программно в модуле отчета?
Это нужно для запроса, т.к. получаю источник данных ТЗ.
---
При помощи БСП:

```1c
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(Настройки, "ДатаОкончания");
```
---
Может уже пора отладку запустить?
 ДатаНачала = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаНачала));
ДатаОкончания = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаОкончания));
Из СП:
КоллекцияЗначенийПараметровКомпоновкиДанных (DataCompositionParameterValueCollection)
Найти (Find)
Синтаксис:
Найти(<Идентификатор>)
Параметры:
<Идентификатор> (необязательный)
Тип: Строка.
Идентификатор параметра.
Возвращаемое значение:
Тип: ЗначениеПараметраКомпоновкиДанных или ЗначениеПараметраНастроекКомпоновкиДанных, Неопределено.
Если не найден, возвращается Неопределено.
......
ЗначениеПараметраКомпоновкиДанных (DataCompositionParameterValue)
Свойства:
Значение (Value)
ЗначенияВложенныхПараметров (NestedParameterValues)
Использование (Use)
Параметр (Parameter)
Родитель (Parent)
Описание:
Значение параметра.

Если коротко, то нужно

```1c
    ДатаНачала = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаНачала)).Значение;
    ДатаОкончания = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаОкончания)).Значение;
```
---
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы;
---
Настройки = КомпоновщикНастроек.ПолучитьНастройки()
ПараметрыДанных = КомпоновщикНастроек.ПараметрыДанных.Элементы.
Это выполняется в процедуре ПриКомпоновке....
---
Пример:

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

    Возврат ТЗ;
    КонецФункции

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

    СтандартнаяОбработка=Ложь;
    Результат=ПолучитьДанные();
    Если Результат=Неопределено Тогда
    Возврат;
    КонецЕсли;
    //Связь между таблицей значений и именами в СКД
    ВнешниеНаборыДанных=Новый Структура;
    ВнешниеНаборыДанных.Вставить("Товары",Результат);
    //Макет компоновки
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки=ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    Параметр=Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если НЕ Параметр.Использование Тогда
    Заголовок=Настройки.ПараметрыВывода.Элементы.Найти("Заголовок");
    Заголовок.Значение="Расход материалов на заказ по состоянию на " + Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
    КонецЕсли;
    Параметр=Настройки.ПараметрыДанных.Элементы.Найти("СортировкаПо");
    Если Параметр.Использование Тогда
    Код=Настройки.Порядок.Элементы[0];
    Наименование=Настройки.Порядок.Элементы[1];
    Если Параметр.Значение="Код" Тогда
    Код.Использование=Истина;
    Наименование.Использование=Ложь;
    Иначе
    Код.Использование=Ложь;
    Наименование.Использование=Истина;
    КонецЕсли;
    КонецЕсли;
    МакетКомпоновки=КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);
    //Компоновка данных
    ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);
    //Вывод результата
    ДокументРезультат.Очистить();
    ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    КонецПроцедуры
```
---
Настройки = КомпоновщикНастроек.ПолучитьНастройки()
ПараметрыДанных = КомпоновщикНастроек.ПараметрыДанных.Элементы.
Это выполняется в процедуре ПриКомпоновке....
---
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

 Настройки = КомпоновщикНастроек.ПолучитьНастройки();
 ПараметрыДанных = КомпоновщикНастроек.ПараметрыДанных.Элементы;
 ДатаНачала = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ДатаНачала));
 ДатаОкончания = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ДатаОкончания));

 ТЗПотребности = Потребность(ДатаНачала, ДатаОкончания);

При формировании отчета сразу ошибка:
поле объекта не обнаружено(Параметрыданных)

Что не так? Подскажите, пжл
---
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы;
---
При помощи БСП:

```1c
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(Настройки, "ДатаОкончания");
```
---
СтандартнаяОбработка = ЛОЖЬ;

 СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

 ДатаНачала = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаНачала));
 ДатаОкончания = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаОкончания));

 ПотребностьМатериалы = Потребность(ДатаНачала, ДатаОкончания); //возвращает таблицу значений

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

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

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

 ДокументРезультат.Очистить();

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

теперь выводит пустую таблицу, только ее шапку, как будто не видит ВнешнийНаборДанных.
Что опять делаю не так? Может где-то что-то пропустила?
---
Может уже пора отладку запустить?
 ДатаНачала = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаНачала));
ДатаОкончания = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаОкончания));
Из СП:
КоллекцияЗначенийПараметровКомпоновкиДанных (DataCompositionParameterValueCollection)
Найти (Find)
Синтаксис:
Найти(<Идентификатор>)
Параметры:
<Идентификатор> (необязательный)
Тип: Строка.
Идентификатор параметра.
Возвращаемое значение:
Тип: ЗначениеПараметраКомпоновкиДанных или ЗначениеПараметраНастроекКомпоновкиДанных, Неопределено.
Если не найден, возвращается Неопределено.
......
ЗначениеПараметраКомпоновкиДанных (DataCompositionParameterValue)
Свойства:
Значение (Value)
ЗначенияВложенныхПараметров (NestedParameterValues)
Использование (Use)
Параметр (Parameter)
Родитель (Parent)
Описание:
Значение параметра.

Если коротко, то нужно

```1c
    ДатаНачала = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаНачала)).Значение;
    ДатаОкончания = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ДатаОкончания)).Значение;
```
---
Пример:

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

    Возврат ТЗ;
    КонецФункции

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

    СтандартнаяОбработка=Ложь;
    Результат=ПолучитьДанные();
    Если Результат=Неопределено Тогда
    Возврат;
    КонецЕсли;
    //Связь между таблицей значений и именами в СКД
    ВнешниеНаборыДанных=Новый Структура;
    ВнешниеНаборыДанных.Вставить("Товары",Результат);
    //Макет компоновки
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки=ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    Параметр=Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если НЕ Параметр.Использование Тогда
    Заголовок=Настройки.ПараметрыВывода.Элементы.Найти("Заголовок");
    Заголовок.Значение="Расход материалов на заказ по состоянию на " + Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
    КонецЕсли;
    Параметр=Настройки.ПараметрыДанных.Элементы.Найти("СортировкаПо");
    Если Параметр.Использование Тогда
    Код=Настройки.Порядок.Элементы[0];
    Наименование=Настройки.Порядок.Элементы[1];
    Если Параметр.Значение="Код" Тогда
    Код.Использование=Истина;
    Наименование.Использование=Ложь;
    Иначе
    Код.Использование=Ложь;
    Наименование.Использование=Истина;
    КонецЕсли;
    КонецЕсли;
    МакетКомпоновки=КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);
    //Компоновка данных
    ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);
    //Вывод результата
    ДокументРезультат.Очистить();
    ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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