Получение значения стандартного периода заданного на форме отчета СКД УФ
Приветствую, коллеги.
Необходимо программно получить значение, внесенное в параметр Период типа стандартный период, отображаемое на форме отчета СКД (Свойства элемента пользовательских настроек - быстрый доступ). Никак не получается достучаться до значения, заданного на форме. Нет его ни в настройках, ни в настройках пользователя, ни в фиксированных компоновщика настроек. В обычных формах в типовых конфигурациях можно было получить как то так:
Как этого добиться на управляемых формах?
Заранее спасибо за помощь.
Необходимо программно получить значение, внесенное в параметр Период типа стандартный период, отображаемое на форме отчета СКД (Свойства элемента пользовательских настроек - быстрый доступ). Никак не получается достучаться до значения, заданного на форме. Нет его ни в настройках, ни в настройках пользователя, ни в фиксированных компоновщика настроек. В обычных формах в типовых конфигурациях можно было получить как то так:
ТиповыеОтчеты.ЗагрузитьВРеквизитЗначенияНастроекПанелиПользователя(ЭтотОбъект, ЭтаФорма);
ЗначенияНастроек = ТиповыеОтчеты.ПолучитьЗначенияНастроекПанелиПользователяОбъекта(ОтчетОбъект);
ПараметрНачалоПериода = ЗначенияНастроек.СтандартныйПериод.ДатаНачала;
ПараметрКонецПериода = ЗначенияНастроек.СтандартныйПериод.ДатаОкончания;
Как этого добиться на управляемых формах?
Заранее спасибо за помощь.
По теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Шаблон отчета на СКД с сохранением настроек
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Права на объект (расширение, отчет)
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
Найденные решения
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
Если ПараметрПользовательскойНастройки <> Неопределено Тогда
ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
ПараметрКонецПериода = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
КонецЕсли;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ПараметрДанных = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
Если ПараметрДанных <> Неопределено Тогда
ПараметрПользовательскойНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
Если ПараметрПользовательскойНастройки <> Неопределено Тогда
ПараметрНачалоПериода = ПараметрПользовательскойНастройки.Значение.ДатаНачала;
ПараметрКонецПериода = ПараметрПользовательскойНастройки.Значение.ДатаОкончания;
КонецЕсли;
КонецЕсли;
Показать
(8) это 100% рабочий код.
В каком обработчике используете?
Может вызываете до загрузки настроек компоновки данных.
Возможно стандартный период имеет имя не Период. Или вообще не стандартный период используется.
Покажите скрин закладки "Параметры" схемы компоновки данных.
В каком обработчике используете?
Может вызываете до загрузки настроек компоновки данных.
Возможно стандартный период имеет имя не Период. Или вообще не стандартный период используется.
Покажите скрин закладки "Параметры" схемы компоновки данных.
(24) решение в (6) совсем не ваше, даже близко не ваше.
Решение в (2) совсем не верное. Там не пользовательские настройки.
И решение в (3) не верное.
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
Решение в (2) совсем не верное. Там не пользовательские настройки.
И решение в (3) не верное.
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
(25) Как громко сказано. "Даже близко не ваше". Я бы сказал очень близко, те другого правильного и нет. Неожиданно но значения находятся в ПользовательскихНастройках. Я вас в плагиате не обвиняю. Топикстартер тоже самое написал и про ваше решение, только почему то потом у него глаза открылись, только не на мой пост а на ваш. И да у меня опечатка в 24 посте правильное решение в (3) о чем я и написал в начале третьего поста.
(25)
Всё просто. Код рабочий. Взят не с потолка, а из написанного мной отчета.
(25)
Во-первых, зачем использовать РеквизитФормыВЗначение? Совсем лишнее.
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
Во-вторых, обычно в отчете бывает не только период, но и отборы. При этом код в (3) выдаст ошибку, что-то такое "Поле не обнаружено, Параметр".
Всё просто. Код рабочий. Взят не с потолка, а из написанного мной отчета.
(26)
Ваше решение тупо перебор пользовательских настроек. И сравнение на "Параметр" элемента пользовательских настроек.
Какая при этом может быть ошибка я уже описывал.
Если решение может дать ошибку, то это не решение.
Мое же решение, это поиск в настройках элемента настройки, и уже по его идентификатору поиск в пользовательских настройках.
Это совсем разные решения.
В отличие от вашего, ошибки не получится.
Я бы сказал очень близко, те другого правильного и нет.
Ваше решение тупо перебор пользовательских настроек. И сравнение на "Параметр" элемента пользовательских настроек.
Какая при этом может быть ошибка я уже описывал.
Если решение может дать ошибку, то это не решение.
Мое же решение, это поиск в настройках элемента настройки, и уже по его идентификатору поиск в пользовательских настройках.
Это совсем разные решения.
В отличие от вашего, ошибки не получится.
(27) Читайте код внимательней. Я уже написал, что там никакой ошибки быть не может. Пять строк кода напишите его и проверьте на предполагаемую ошибку. И раз вам уж так захотелось поискать решение которое даст ошибку, то вы его написали. Задайте стандартный период "Начало этого дня" и выполните свой код. Там в помине нет Значение.ДатаНачала и Значение.ДатаОкончания.
&НаСервере
Функция ПолучитьЗначениеПараметраНаСервере()
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ВариантыОтчета = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек;
НастройкиВарианта = ВариантыОтчета.Основной.Настройки.ПараметрыДанных;
Для Каждого Эл Из НастройкиВарианта.Элементы Цикл
Если Строка(Эл.Параметр) = "ИмяПараметра" Тогда
//присвоение значения которое находиться в Эл
КонецЕсли;
КонецЦикла;
КонецФункции
ПоказатьИмяПараметра - это название параметра периода
(2) Чутка не так.
Вот так правильно:
Вот так правильно:
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
Для Каждого Эл Из ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если Строка(Эл.Параметр) = "Период" Тогда
//нужные данные в Эл.Значение
КонецЕсли;
КонецЦикла;
Эти значения указаны в коде "В обычных формах в типовых конфигурациях можно было получить", а в условиях стандартный период. Это не всегда ДатаНачала и ДатаОкончания. А вот про отборы со значением "Включить в пользовательские настройки" в условии ничего нет. Как то так.
Ну раз уж вы добились ошибки, то вероятно и в работоспособности моего кода тоже удостоверились. Как в возможности ошибки в вашем.
Вообще мой пост был адресован не вам, а топикстартеру, но ваше резкое высказываение меня задело.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные". Вопрос где значение - ответ Пользовательские настройки.
Ну раз уж вы добились ошибки, то вероятно и в работоспособности моего кода тоже удостоверились. Как в возможности ошибки в вашем.
Вообще мой пост был адресован не вам, а топикстартеру, но ваше резкое высказываение меня задело.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные". Вопрос где значение - ответ Пользовательские настройки.
(30)
Я уже ответил на этот вопрос. Если вы это не понимаете, то мне жаль.
Меня ваш код, как вы выражаетесь: "задел".
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
И мне абсолютно не понятно по какой причине вы считаете, что наши решения каким то невероятным образом "абсолютно разные".
Я уже ответил на этот вопрос. Если вы это не понимаете, то мне жаль.
Меня ваш код, как вы выражаетесь: "задел".
Это неправильный код. Так "нельзя" получать пользовательские настройки. "Нельзя" с моей точки зрения.
Для Каждого ПараметрПользователя из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(ПараметрПользователя.Значение) = Тип("СтандартныйПериод") Тогда
ДатаНачала = ПараметрПользователя.Значение.ДатаНачала;
ДатаОкончания = ПараметрПользователя.Значение.ДатаОкончания;
КонецЕсли;
КонецЦикла;
У меня работает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот