Параметр СКД в полных настройках безусловно игнорируется, если он добавлен в пользовательские
В отчете на СКД требуется программно задать значение для параметра данных (оно получается вызовом функции объекта другого параметра, если он задан; для примера ниже я написал просто константу), но дать пользователю возможность переопределить его.
В ПриКомпоновкеРезультата прописал вычисляемое значение в "КомпоновщикНастроек.Настройки", а в схеме КД добавил параметр в пользовательские настройки.
По утверждению :
Однако, даже если пользователь снял галочку использования параметра, итоговое значение все равно берется оттуда, с "Использование = Ложь" (см. скриншоты). Т.е. никакого "наложения" не происходит, параметр из полных настроек просто игнорируется.
Гугление и поиск по ИТС (напр. "настройки скд наложение пользовательских настроек") не нашли никакого описания деталей механизма "наложения".
Нормальное ли это поведение? Описано ли оно где-либо? Если это нормально -- как предполагается достигать рекламируемого документацией эффекта наложения настроек?
Проверено на платформе 8.3.25.1336 и 8.3.23.2157. Вложен тестовый пример конфигурации.
В ПриКомпоновкеРезультата прописал вычисляемое значение в "КомпоновщикНастроек.Настройки", а в схеме КД добавил параметр в пользовательские настройки.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
УстановитьПараметр(ЭтотОбъект.КомпоновщикНастроек.Настройки,"Параметр","123");
КонецПроцедуры
Функция УстановитьПараметр(Настройки, ИмяПараметра, Значение, Использование = Истина)
ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных(ИмяПараметра));
Если ЗначениеПараметра <> Неопределено Тогда
ЗначениеПараметра.Использование = Использование;
ЗначениеПараметра.Значение = Значение;
КонецЕсли;
Возврат ЗначениеПараметра;
КонецФункции
ПоказатьПо утверждению :
При выполнении компоновки применяются как пользовательские, так и полные настройки. При этом пользовательские настройки «накладываются» на полные, формируя реально исполняемые настройки.
Однако, даже если пользователь снял галочку использования параметра, итоговое значение все равно берется оттуда, с "Использование = Ложь" (см. скриншоты). Т.е. никакого "наложения" не происходит, параметр из полных настроек просто игнорируется.
Гугление и поиск по ИТС (напр. "настройки скд наложение пользовательских настроек") не нашли никакого описания деталей механизма "наложения".
Нормальное ли это поведение? Описано ли оно где-либо? Если это нормально -- как предполагается достигать рекламируемого документацией эффекта наложения настроек?
Проверено на платформе 8.3.25.1336 и 8.3.23.2157. Вложен тестовый пример конфигурации.
Прикрепленные файлы:
Найденные решения
Судя по наблюдаемому поведению, хваленый механизм "наложения" как раз и состоит в том, что
параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета
и, насколько вижу, это не документировано.
Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета
и, насколько вижу, это не документировано.
Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В СКД "Параметры" работают как константы, для пользовательских настроек необходимо просто добавить в "Отбор" необходимые параметры и при необходимости отображать на форме отчета, в таком случае пользователь сможет выбирать использование данного отбора
(3)
Я вижу так твой вопрос.
Судя по коду, тебе нужно по умолчанию поставить отбор, но пользователь при желании, должен иметь право на изменения значения в окне отбора?
А без твоего кода твой параметр работает? Если да, то в отборе ставишь равно и заполняешь "Правое значение", галка слева отвечает за применение при открытии. Где поставить галку, для отображения этого отбора тебе известно?
При использовании отбора - код удаляй/комментируй!
Не вижу, как давать пользователю опционально переопределять значение параметра.
Я вижу так твой вопрос.
Судя по коду, тебе нужно по умолчанию поставить отбор, но пользователь при желании, должен иметь право на изменения значения в окне отбора?
А без твоего кода твой параметр работает? Если да, то в отборе ставишь равно и заполняешь "Правое значение", галка слева отвечает за применение при открытии. Где поставить галку, для отображения этого отбора тебе известно?
При использовании отбора - код удаляй/комментируй!
(4)
В моем случае параметр -- это подписант получающегося документа. Его нужно менять, если подписывает заместитель.
В моем конкретном случае он не используется в самой СКД, а только в постпроцессинге, поэтому я придумал обход: в ПриКомпоновкеРезультата вручную проверяю флаг "Использование" в полных и пользовательских настройках, и если в пользовательских он сброшен, использую значение из полных.
---
Но допустим, параметр используется в отборе. Мы задаем в правом значении одно, пользователь задал другое. Применится значение пользователя.
Теперь пользователь хочет сбросить свой выбор и вновь использовать сгенерированное значение по умолчанию. Он снимает галку "использование"... и отбор не используется вообще. И свое выбранное значение он сбросить на сгенерированное никак не может -- что он ни задаст, это будет новое значение пользовательской настройки.
Судя по коду, тебе нужно по умолчанию поставить отбор
В моем случае параметр -- это подписант получающегося документа. Его нужно менять, если подписывает заместитель.
В моем конкретном случае он не используется в самой СКД, а только в постпроцессинге, поэтому я придумал обход: в ПриКомпоновкеРезультата вручную проверяю флаг "Использование" в полных и пользовательских настройках, и если в пользовательских он сброшен, использую значение из полных.
---
Но допустим, параметр используется в отборе. Мы задаем в правом значении одно, пользователь задал другое. Применится значение пользователя.
Теперь пользователь хочет сбросить свой выбор и вновь использовать сгенерированное значение по умолчанию. Он снимает галку "использование"... и отбор не используется вообще. И свое выбранное значение он сбросить на сгенерированное никак не может -- что он ни задаст, это будет новое значение пользовательской настройки.
Судя по наблюдаемому поведению, хваленый механизм "наложения" как раз и состоит в том, что
параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета
и, насколько вижу, это не документировано.
Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета
и, насколько вижу, это не документировано.
Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
