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

1. PoZiTiFFF 914 04.01.17 04:00 Сейчас в теме
Приветствую, коллеги.

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

Как этого добиться на управляемых формах?
Заранее спасибо за помощь.
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. spacecraft 04.01.17 23:50 Сейчас в теме +2 $m
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
        ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
        ПараметрКонецПериода  = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
        КонецЕсли;
КонецЕсли;
Показать
Gendelf; dmbarchenkov; stone_evil; +3
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. spacecraft 04.01.17 23:50 Сейчас в теме +2 $m
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
    ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
        ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
        ПараметрКонецПериода  = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
        КонецЕсли;
КонецЕсли;
Показать
Gendelf; dmbarchenkov; stone_evil; +3
8. PoZiTiFFF 914 05.01.17 00:47 Сейчас в теме
(6) ни в коллекции КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, ни в коллекции Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы нет значения внесенного в форме в параметр "Период".
+
13. spacecraft 05.01.17 01:22 Сейчас в теме
(8) это 100% рабочий код.
В каком обработчике используете?
Может вызываете до загрузки настроек компоновки данных.

Возможно стандартный период имеет имя не Период. Или вообще не стандартный период используется.
Покажите скрин закладки "Параметры" схемы компоновки данных.
+
24. victorree 19 09.01.17 08:56 Сейчас в теме
(1) Ай как не красиво поступаете молодой человек. Я вам рабочее решение сразу написал, а вы даже проверить не удосужились а потом за мой же ответ вознаграждение другому начисляете. Не хорошо...
(21) Решение в пункту 2 правильное...
+
25. spacecraft 09.01.17 10:24 Сейчас в теме
(24) решение в (6) совсем не ваше, даже близко не ваше.
Решение в (2) совсем не верное. Там не пользовательские настройки.
И решение в (3) не верное.
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
+
26. victorree 19 09.01.17 16:11 Сейчас в теме
(25) Как громко сказано. "Даже близко не ваше". Я бы сказал очень близко, те другого правильного и нет. Неожиданно но значения находятся в ПользовательскихНастройках. Я вас в плагиате не обвиняю. Топикстартер тоже самое написал и про ваше решение, только почему то потом у него глаза открылись, только не на мой пост а на ваш. И да у меня опечатка в 24 посте правильное решение в (3) о чем я и написал в начале третьего поста.

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

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

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

Мое же решение, это поиск в настройках элемента настройки, и уже по его идентификатору поиск в пользовательских настройках.
Это совсем разные решения.
В отличие от вашего, ошибки не получится.
+
28. victorree 19 09.01.17 16:34 Сейчас в теме
(27) Читайте код внимательней. Я уже написал, что там никакой ошибки быть не может. Пять строк кода напишите его и проверьте на предполагаемую ошибку. И раз вам уж так захотелось поискать решение которое даст ошибку, то вы его написали. Задайте стандартный период "Начало этого дня" и выполните свой код. Там в помине нет Значение.ДатаНачала и Значение.ДатаОкончания.
+
29. spacecraft 09.01.17 16:50 Сейчас в теме
(28) Вы не внимательны. Эти значения указаны в исходном вопросе. Так что они там есть.
А вот скрин с ошибкой на вашем коде прикладываю.
Прикрепленные файлы:
Roootru; +1
2. victorree 19 04.01.17 11:35 Сейчас в теме
&НаСервере
Функция  ПолучитьЗначениеПараметраНаСервере()

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

КонецФункции
Показать


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

		Если Строка(Эл.Параметр) = "Период" Тогда
			//нужные данные в Эл.Значение
		КонецЕсли;
		
	КонецЦикла;
+
4. PoZiTiFFF 914 04.01.17 16:18 Сейчас в теме
(3) В коллекции ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы только пользовательские отборы. Значение параметра "Период" там нет.
+
5. PoZiTiFFF 914 04.01.17 22:37 Сейчас в теме
7. as 04.01.17 23:53 Сейчас в теме
(5) У вас платформа какая? Некоторые вкусности появились начиная вроде 8.3.7. Например обращание к компонентам даты.
+
9. PoZiTiFFF 914 05.01.17 00:49 Сейчас в теме
(7) Платформа 8.3.8. О каком именно обращение к компонентам даты Вы говорите?
+
10. as 05.01.17 00:55 Сейчас в теме
Дата.Месяц в компоновке. В вашей уже это должно быть. Хотя проверьте еще режим совместимости какой.
+
11. PoZiTiFFF 914 05.01.17 01:01 Сейчас в теме
(10)к чему применять то "Месяц"? Вопрос в том, чтобы найти где хранится текущее значение, указанное в стандартном параметре "Период" на форме отчета СКД,
+
12. as 05.01.17 01:22 Сейчас в теме
Вы можете в серверной процедуре написать так
ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение
Если у вас один параметр.
+
14. 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. spacecraft 05.01.17 01:39 Сейчас в теме
(16) не надо вводить в заблуждение. Этот параметр Вы в конфигураторе задаете.
Теперь попробуйте в пользовательском режиме установить другую дату и ее получить...
+
18. as 05.01.17 01:43 Сейчас в теме
Тогда я вас не понимаю. В конфигураторе стоит стандартное значение. Можете его в предприятии поменять. Суть будет та же
+
19. spacecraft 05.01.17 01:44 Сейчас в теме
(18) попробуйте сами. я то знаю, что там не поменяется.
+
20. as 05.01.17 01:44 Сейчас в теме
В том то и дело что попробовал
+
22. spacecraft 05.01.17 01:49 Сейчас в теме
(20) чтоб не быть голословным, привожу скрин с Вашим отчетом.
Приводи свой, если уверены в своей правоте.
Прикрепленные файлы:
+
21. PoZiTiFFF 914 05.01.17 01:46 Сейчас в теме
Прошу прощения. Решение, указанное в пункте 6 верное. В коллекции КомпоновщикНастроек.ПользовательскиеНастройки.Элементы присутствует нужное мне значение параметра. Спасибо!
+
23. as 05.01.17 01:51 Сейчас в теме
Согласен. я меня через изменить отчет, а не на форме в пользовательских настройках
+
30. victorree 19 09.01.17 17:10 Сейчас в теме
Эти значения указаны в коде "В обычных формах в типовых конфигурациях можно было получить", а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания. А вот про отборы со значением "Включить в пользовательские настройки" в условии ничего нет. Как то так.
Ну раз уж вы добились ошибки, то вероятно и в работоспособности моего кода тоже удостоверились. Как в возможности ошибки в вашем.
Вообще мой пост был адресован не вам, а топикстартеру, но ваше резкое высказываение меня задело.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные". Вопрос где значение - ответ Пользовательские настройки.
+
31. spacecraft 09.01.17 17:18 Сейчас в теме
(30)
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные".

Я уже ответил на этот вопрос. Если вы это не понимаете, то мне жаль.
Меня ваш код, как вы выражаетесь: "задел".
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
+
33. victorree 19 09.01.17 17:39 Сейчас в теме
(31)
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.

Вот в том то и дело. Только из-за этого говорить, что решение в корни неверное - это перебор. Тем более говорить, что это вообще не решение...
+
34. spacecraft 09.01.17 17:43 Сейчас в теме
(33) считаете, что код приводящий к ошибке, это решение?
Тогда говорить вообще не о чем...
+
36. victorree 19 09.01.17 17:56 Сейчас в теме
(34) Да уж точно. Не о чем.
Прикрепленные файлы:
+
37. spacecraft 09.01.17 17:59 Сейчас в теме
(36) тогда уж показывайте, что параметр именно стандартный период, а не ваш не стандартный период...
Передергиваете.
+
32. spacecraft 09.01.17 17:26 Сейчас в теме
(30)
а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания.

А по поводу СтандартныйПериод рекомендую прочитать СП.
+
35. user633533_encantado 11 09.01.17 17:52 Сейчас в теме
Для Каждого ПараметрПользователя из  КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

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


У меня работает.
tmh_mazin_p; +1
38. spacecraft 09.01.17 18:01 Сейчас в теме
(35) это тоже может дать ошибку. Значение есть не у всех элементов пользовательской настройки.
+
39. user633533_encantado 11 09.01.17 18:25 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот