Получение значения стандартного периода заданного на форме отчета СКД УФ

1. Михаил Проходцев (PoZiTiFFF) 146 04.01.17 04:00 Сейчас в теме
Приветствую, коллеги.

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

Как этого добиться на управляемых формах?
Заранее спасибо за помощь.
Вознаграждение за ответ
Показать полностью
Найденные решения
6. Oleg Space (spacecraft) 04.01.17 23:50 Сейчас в теме +2 $m
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
        ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
        ПараметрКонецПериода  = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
        КонецЕсли;
КонецЕсли;
...Показать Скрыть
stone_evil; +1 Ответить 2
Остальные ответы
2. Андрей Асанов (victorree) 04.01.17 11:35 Сейчас в теме
&НаСервере
Функция  ПолучитьЗначениеПараметраНаСервере()

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

КонецФункции
...Показать Скрыть


ИмяПараметра - это название параметра периода
3. Андрей Асанов (victorree) 04.01.17 12:31 Сейчас в теме
(2) Чутка не так.
Вот так правильно:
	ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
	Для Каждого Эл Из ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

		Если Строка(Эл.Параметр) = "Период" Тогда
			//нужные данные в Эл.Значение
		КонецЕсли;
		
	КонецЦикла;
...Показать Скрыть
4. Михаил Проходцев (PoZiTiFFF) 146 04.01.17 16:18 Сейчас в теме
(3) В коллекции ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы только пользовательские отборы. Значение параметра "Период" там нет.
5. Михаил Проходцев (PoZiTiFFF) 146 04.01.17 22:37 Сейчас в теме
6. Oleg Space (spacecraft) 04.01.17 23:50 Сейчас в теме +2 $m
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
        ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
        ПараметрКонецПериода  = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
        КонецЕсли;
КонецЕсли;
...Показать Скрыть
stone_evil; +1 Ответить 2
7. Юрий (as) 04.01.17 23:53 Сейчас в теме
(5) У вас платформа какая? Некоторые вкусности появились начиная вроде 8.3.7. Например обращание к компонентам даты.
8. Михаил Проходцев (PoZiTiFFF) 146 05.01.17 00:47 Сейчас в теме
(6) ни в коллекции КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, ни в коллекции Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы нет значения внесенного в форме в параметр "Период".
9. Михаил Проходцев (PoZiTiFFF) 146 05.01.17 00:49 Сейчас в теме
(7) Платформа 8.3.8. О каком именно обращение к компонентам даты Вы говорите?
10. Юрий (as) 05.01.17 00:55 Сейчас в теме
Дата.Месяц в компоновке. В вашей уже это должно быть. Хотя проверьте еще режим совместимости какой.
11. Михаил Проходцев (PoZiTiFFF) 146 05.01.17 01:01 Сейчас в теме
(10)к чему применять то "Месяц"? Вопрос в том, чтобы найти где хранится текущее значение, указанное в стандартном параметре "Период" на форме отчета СКД,
12. Юрий (as) 05.01.17 01:22 Сейчас в теме
Вы можете в серверной процедуре написать так
ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение
Если у вас один параметр.
13. Oleg Space (spacecraft) 05.01.17 01:22 Сейчас в теме
(8) это 100% рабочий код.
В каком обработчике используете?
Может вызываете до загрузки настроек компоновки данных.

Возможно стандартный период имеет имя не Период. Или вообще не стандартный период используется.
Покажите скрин закладки "Параметры" схемы компоновки данных.
14. Oleg Space (spacecraft) 05.01.17 01:27 Сейчас в теме
(12) там будет всегда значение по умолчанию. Т.е. период с пустой датой.
15. Юрий (as) 05.01.17 01:35 Сейчас в теме
(14) Сообщить(ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.Дата);
Мне выдает 05.01.2017 0:00:00
16. Юрий (as) 05.01.17 01:37 Сейчас в теме
Во вложении пример в виде отчета
Прикрепленные файлы:
ПримерОтчета.erf
17. Oleg Space (spacecraft) 05.01.17 01:39 Сейчас в теме
(16) не надо вводить в заблуждение. Этот параметр Вы в конфигураторе задаете.
Теперь попробуйте в пользовательском режиме установить другую дату и ее получить...
18. Юрий (as) 05.01.17 01:43 Сейчас в теме
Тогда я вас не понимаю. В конфигураторе стоит стандартное значение. Можете его в предприятии поменять. Суть будет та же
19. Oleg Space (spacecraft) 05.01.17 01:44 Сейчас в теме
(18) попробуйте сами. я то знаю, что там не поменяется.
20. Юрий (as) 05.01.17 01:44 Сейчас в теме
В том то и дело что попробовал
21. Михаил Проходцев (PoZiTiFFF) 146 05.01.17 01:46 Сейчас в теме
Прошу прощения. Решение, указанное в пункте 6 верное. В коллекции КомпоновщикНастроек.ПользовательскиеНастройки.Элементы присутствует нужное мне значение параметра. Спасибо!
22. Oleg Space (spacecraft) 05.01.17 01:49 Сейчас в теме
(20) чтоб не быть голословным, привожу скрин с Вашим отчетом.
Приводи свой, если уверены в своей правоте.
Прикрепленные файлы:
23. Юрий (as) 05.01.17 01:51 Сейчас в теме
Согласен. я меня через изменить отчет, а не на форме в пользовательских настройках
24. Андрей Асанов (victorree) 09.01.17 08:56 Сейчас в теме
(1) Ай как не красиво поступаете молодой человек. Я вам рабочее решение сразу написал, а вы даже проверить не удосужились а потом за мой же ответ вознаграждение другому начисляете. Не хорошо...
(21) Решение в пункту 2 правильное...
25. Oleg Space (spacecraft) 09.01.17 10:24 Сейчас в теме
(24) решение в (6) совсем не ваше, даже близко не ваше.
Решение в (2) совсем не верное. Там не пользовательские настройки.
И решение в (3) не верное.
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
26. Андрей Асанов (victorree) 09.01.17 16:11 Сейчас в теме
(25) Как громко сказано. "Даже близко не ваше". Я бы сказал очень близко, те другого правильного и нет. Неожиданно но значения находятся в ПользовательскихНастройках. Я вас в плагиате не обвиняю. Топикстартер тоже самое написал и про ваше решение, только почему то потом у него глаза открылись, только не на мой пост а на ваш. И да у меня опечатка в 24 посте правильное решение в (3) о чем я и написал в начале третьего поста.

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

Всё просто. Код рабочий. Взят не с потолка, а из написанного мной отчета.
27. Oleg Space (spacecraft) 09.01.17 16:20 Сейчас в теме
(26)
Я бы сказал очень близко, те другого правильного и нет.

Ваше решение тупо перебор пользовательских настроек. И сравнение на "Параметр" элемента пользовательских настроек.
Какая при этом может быть ошибка я уже описывал.
Если решение может дать ошибку, то это не решение.

Мое же решение, это поиск в настройках элемента настройки, и уже по его идентификатору поиск в пользовательских настройках.
Это совсем разные решения.
В отличие от вашего, ошибки не получится.
28. Андрей Асанов (victorree) 09.01.17 16:34 Сейчас в теме
(27) Читайте код внимательней. Я уже написал, что там никакой ошибки быть не может. Пять строк кода напишите его и проверьте на предполагаемую ошибку. И раз вам уж так захотелось поискать решение которое даст ошибку, то вы его написали. Задайте стандартный период "Начало этого дня" и выполните свой код. Там в помине нет Значение.ДатаНачала и Значение.ДатаОкончания.
29. Oleg Space (spacecraft) 09.01.17 16:50 Сейчас в теме
(28) Вы не внимательны. Эти значения указаны в исходном вопросе. Так что они там есть.
А вот скрин с ошибкой на вашем коде прикладываю.
Прикрепленные файлы:
30. Андрей Асанов (victorree) 09.01.17 17:10 Сейчас в теме
Эти значения указаны в коде "В обычных формах в типовых конфигурациях можно было получить", а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания. А вот про отборы со значением "Включить в пользовательские настройки" в условии ничего нет. Как то так.
Ну раз уж вы добились ошибки, то вероятно и в работоспособности моего кода тоже удостоверились. Как в возможности ошибки в вашем.
Вообще мой пост был адресован не вам, а топикстартеру, но ваше резкое высказываение меня задело.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные". Вопрос где значение - ответ Пользовательские настройки.
31. Oleg Space (spacecraft) 09.01.17 17:18 Сейчас в теме
(30)
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные".

Я уже ответил на этот вопрос. Если вы это не понимаете, то мне жаль.
Меня ваш код, как вы выражаетесь: "задел".
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
32. Oleg Space (spacecraft) 09.01.17 17:26 Сейчас в теме
(30)
а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания.

А по поводу СтандартныйПериод рекомендую прочитать СП.
33. Андрей Асанов (victorree) 09.01.17 17:39 Сейчас в теме
(31)
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.

Вот в том то и дело. Только из-за этого говорить, что решение в корни неверное - это перебор. Тем более говорить, что это вообще не решение...
34. Oleg Space (spacecraft) 09.01.17 17:43 Сейчас в теме
(33) считаете, что код приводящий к ошибке, это решение?
Тогда говорить вообще не о чем...
35. Александр Васильев (user633533_encantado) 2 09.01.17 17:52 Сейчас в теме
Для Каждого ПараметрПользователя из  КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

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


У меня работает.
36. Андрей Асанов (victorree) 09.01.17 17:56 Сейчас в теме
(34) Да уж точно. Не о чем.
Прикрепленные файлы:
37. Oleg Space (spacecraft) 09.01.17 17:59 Сейчас в теме
(36) тогда уж показывайте, что параметр именно стандартный период, а не ваш не стандартный период...
Передергиваете.
38. Oleg Space (spacecraft) 09.01.17 18:01 Сейчас в теме
(35) это тоже может дать ошибку. Значение есть не у всех элементов пользовательской настройки.
39. Александр Васильев (user633533_encantado) 2 09.01.17 18:25 Сейчас в теме
Оставьте свое сообщение