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