1. PoZiTiFFF 201 04.01.17 04:00 Сейчас в теме

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Вот в том то и дело. Только из-за этого говорить, что решение в корни неверное - это перебор. Тем более говорить, что это вообще не решение...
34. spacecraft 09.01.17 17:43 Сейчас в теме
(33) считаете, что код приводящий к ошибке, это решение?
Тогда говорить вообще не о чем...
36. victorree 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 2 09.01.17 17:52 Сейчас в теме
Для Каждого ПараметрПользователя из  КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

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


У меня работает.
38. spacecraft 09.01.17 18:01 Сейчас в теме
(35) это тоже может дать ошибку. Значение есть не у всех элементов пользовательской настройки.
39. user633533_encantado 2 09.01.17 18:25 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день