Приветствую, коллеги.

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

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

Как этого добиться на управляемых формах?
Заранее спасибо за помощь.
---
```1c
    ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
    ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
    ПараметрКонецПериода = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
    КонецЕсли;
    КонецЕсли;
```
---
```1c
    ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
    Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
    ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
    ПараметрКонецПериода = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
    КонецЕсли;
    КонецЕсли;
```
---
ни в коллекции КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, ни в коллекции Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы нет значения внесенного в форме в параметр "Период".
---
это 100% рабочий код.
В каком обработчике используете?
Может вызываете до загрузки настроек компоновки данных.

Возможно стандартный период имеет имя не Период. Или вообще не стандартный период используется.
Покажите скрин закладки "Параметры" схемы компоновки данных.
---
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период")
Благодарю вас, светлая голова.
---
Ай как не красиво поступаете молодой человек. Я вам рабочее решение сразу написал, а вы даже проверить не удосужились а потом за мой же ответ вознаграждение другому начисляете. Не хорошо...
(21) Решение в пункту 2 правильное...
---
решение в (6) совсем не ваше, даже близко не ваше.
Решение в (2) совсем не верное. Там не пользовательские настройки.
И решение в (3) не верное.
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
---
Как громко сказано. "Даже близко не ваше". Я бы сказал очень близко, те другого правильного и нет. Неожиданно но значения находятся в ПользовательскихНастройках. Я вас в плагиате не обвиняю. Топикстартер тоже самое написал и про ваше решение, только почему то потом у него глаза открылись, только не на мой пост а на ваш. И да у меня опечатка в 24 посте правильное решение в (3) о чем я и написал в начале третьего поста.

(25) Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
Всё просто. Код рабочий. Взят не с потолка, а из написанного мной отчета.
---
Я бы сказал очень близко, те другого правильного и нет.
Ваше решение тупо перебор пользовательских настроек. И сравнение на "Параметр" элемента пользовательских настроек.
Какая при этом может быть ошибка я уже описывал.
Если решение может дать ошибку, то это не решение.

Мое же решение, это поиск в настройках элемента настройки, и уже по его идентификатору поиск в пользовательских настройках.
Это совсем разные решения.
В отличие от вашего, ошибки не получится.
---
Читайте код внимательней. Я уже написал, что там никакой ошибки быть не может. Пять строк кода напишите его и проверьте на предполагаемую ошибку. И раз вам уж так захотелось поискать решение которое даст ошибку, то вы его написали. Задайте стандартный период "Начало этого дня" и выполните свой код. Там в помине нет Значение.ДатаНачала и Значение.ДатаОкончания.
---
Вы не внимательны. Эти значения указаны в исходном вопросе. Так что они там есть.
А вот скрин с ошибкой на вашем коде прикладываю.
---
```1c
    &НаСервере
    Функция ПолучитьЗначениеПараметраНаСервере()

    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    ВариантыОтчета = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек;
    НастройкиВарианта = ВариантыОтчета.Основной.Настройки.ПараметрыДанных;
    Для Каждого Эл Из НастройкиВарианта.Элементы Цикл
    Если Строка(Эл.Параметр) = "ИмяПараметра" Тогда
    //присвоение значения которое находиться в Эл
    КонецЕсли;
    КонецЦикла;

    КонецФункции
```

ИмяПараметра - это название параметра периода
---
Чутка не так.
Вот так правильно:

```1c
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    Для Каждого Эл Из ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

    Если Строка(Эл.Параметр) = "Период" Тогда
    //нужные данные в Эл.Значение
    КонецЕсли;

    КонецЦикла;
```
---
В коллекции ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы только пользовательские отборы. Значение параметра "Период" там нет.
---
Никто не знает?
---
У вас платформа какая? Некоторые вкусности появились начиная вроде 8.3.7. Например обращание к компонентам даты.
---
Платформа 8.3.8. О каком именно обращение к компонентам даты Вы говорите?
---
Дата.Месяц в компоновке. В вашей уже это должно быть. Хотя проверьте еще режим совместимости какой.
---
к чему применять то "Месяц"? Вопрос в том, чтобы найти где хранится текущее значение, указанное в стандартном параметре "Период" на форме отчета СКД,
---
Вы можете в серверной процедуре написать так
ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение
Если у вас один параметр.
---
там будет всегда значение по умолчанию. Т.е. период с пустой датой.
---
Сообщить(ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.Дата);
Мне выдает 05.01.2017 0:00:00
---
Во вложении пример в виде отчета
---
не надо вводить в заблуждение. Этот параметр Вы в конфигураторе задаете.
Теперь попробуйте в пользовательском режиме установить другую дату и ее получить...
---
Тогда я вас не понимаю. В конфигураторе стоит стандартное значение. Можете его в предприятии поменять. Суть будет та же
---
попробуйте сами. я то знаю, что там не поменяется.
---
В том то и дело что попробовал
---
чтоб не быть голословным, привожу скрин с Вашим отчетом.
Приводи свой, если уверены в своей правоте.
---
Прошу прощения. Решение, указанное в пункте 6 верное. В коллекции КомпоновщикНастроек.ПользовательскиеНастройки.Элементы присутствует нужное мне значение параметра. Спасибо!
---
Согласен. я меня через изменить отчет, а не на форме в пользовательских настройках
---
Эти значения указаны в коде "В обычных формах в типовых конфигурациях можно было получить", а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания. А вот про отборы со значением "Включить в пользовательские настройки" в условии ничего нет. Как то так.
Ну раз уж вы добились ошибки, то вероятно и в работоспособности моего кода тоже удостоверились. Как в возможности ошибки в вашем.
Вообще мой пост был адресован не вам, а топикстартеру, но ваше резкое высказываение меня задело.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные". Вопрос где значение - ответ Пользовательские настройки.
---
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные".
Я уже ответил на этот вопрос. Если вы это не понимаете, то мне жаль.
Меня ваш код, как вы выражаетесь: "задел".
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
---
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
Вот в том то и дело. Только из-за этого говорить, что решение в корни неверное - это перебор. Тем более говорить, что это вообще не решение...
---
считаете, что код приводящий к ошибке, это решение?
Тогда говорить вообще не о чем...
---
Да уж точно. Не о чем.
---
тогда уж показывайте, что параметр именно стандартный период, а не ваш не стандартный период...
Передергиваете.
---
а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания.
А по поводу СтандартныйПериод рекомендую прочитать СП.
---
```1c
    Для Каждого ПараметрПользователя из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

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

У меня работает.
---
это тоже может дать ошибку. Значение есть не у всех элементов пользовательской настройки.
---
Согласен.