Параметр СКД в полных настройках безусловно игнорируется, если он добавлен в пользовательские

1. native-api 18.07.24 10:26 Сейчас в теме
В отчете на СКД требуется программно задать значение для параметра данных (оно получается вызовом функции объекта другого параметра, если он задан; для примера ниже я написал просто константу), но дать пользователю возможность переопределить его.

В ПриКомпоновкеРезультата прописал вычисляемое значение в "КомпоновщикНастроек.Настройки", а в схеме КД добавил параметр в пользовательские настройки.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	УстановитьПараметр(ЭтотОбъект.КомпоновщикНастроек.Настройки,"Параметр","123");
КонецПроцедуры

Функция УстановитьПараметр(Настройки, ИмяПараметра, Значение, Использование = Истина)
	
	ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
			Новый ПараметрКомпоновкиДанных(ИмяПараметра));
	
	Если ЗначениеПараметра <> Неопределено Тогда
		ЗначениеПараметра.Использование = Использование;
		ЗначениеПараметра.Значение      = Значение;
	КонецЕсли;
	
	Возврат ЗначениеПараметра;
	
КонецФункции
Показать


По утверждению Пользовательские настройки системы компоновки данных -- Система компоновки данных :: Руководство разработчика :: 1С:Предприятие 8.3.23. Документация:

При выполнении компоновки применяются как пользовательские, так и полные настройки. При этом пользовательские настройки «накладываются» на полные, формируя реально исполняемые настройки.


Однако, даже если пользователь снял галочку использования параметра, итоговое значение все равно берется оттуда, с "Использование = Ложь" (см. скриншоты). Т.е. никакого "наложения" не происходит, параметр из полных настроек просто игнорируется.

Гугление и поиск по ИТС (напр. "настройки скд наложение пользовательских настроек") не нашли никакого описания деталей механизма "наложения".

Нормальное ли это поведение? Описано ли оно где-либо? Если это нормально -- как предполагается достигать рекламируемого документацией эффекта наложения настроек?

Проверено на платформе 8.3.25.1336 и 8.3.23.2157. Вложен тестовый пример конфигурации.
Прикрепленные файлы:
1Cv8.cf
Найденные решения
6. native-api 13.08.24 13:05 Сейчас в теме
Судя по наблюдаемому поведению, хваленый механизм "наложения" как раз и состоит в том, что

параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета

и, насколько вижу, это не документировано.

Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. usershmuser 23.07.24 10:39 Сейчас в теме
В СКД "Параметры" работают как константы, для пользовательских настроек необходимо просто добавить в "Отбор" необходимые параметры и при необходимости отображать на форме отчета, в таком случае пользователь сможет выбирать использование данного отбора
3. native-api 23.07.24 13:07 Сейчас в теме
(2) Попробовал. Не вижу, как отбор по параметру повлияет на значение этого параметра. Как указано выше, мне нужно давать пользователю опционально переопределять значение параметра.
Прикрепленные файлы:
4. usershmuser 23.07.24 13:20 Сейчас в теме
(3)
Не вижу, как давать пользователю опционально переопределять значение параметра.

Я вижу так твой вопрос.
Судя по коду, тебе нужно по умолчанию поставить отбор, но пользователь при желании, должен иметь право на изменения значения в окне отбора?
А без твоего кода твой параметр работает? Если да, то в отборе ставишь равно и заполняешь "Правое значение", галка слева отвечает за применение при открытии. Где поставить галку, для отображения этого отбора тебе известно?
При использовании отбора - код удаляй/комментируй!
5. native-api 23.07.24 16:07 Сейчас в теме
(4)
Судя по коду, тебе нужно по умолчанию поставить отбор

В моем случае параметр -- это подписант получающегося документа. Его нужно менять, если подписывает заместитель.

В моем конкретном случае он не используется в самой СКД, а только в постпроцессинге, поэтому я придумал обход: в ПриКомпоновкеРезультата вручную проверяю флаг "Использование" в полных и пользовательских настройках, и если в пользовательских он сброшен, использую значение из полных.

---

Но допустим, параметр используется в отборе. Мы задаем в правом значении одно, пользователь задал другое. Применится значение пользователя.
Теперь пользователь хочет сбросить свой выбор и вновь использовать сгенерированное значение по умолчанию. Он снимает галку "использование"... и отбор не используется вообще. И свое выбранное значение он сбросить на сгенерированное никак не может -- что он ни задаст, это будет новое значение пользовательской настройки.
6. native-api 13.08.24 13:05 Сейчас в теме
Судя по наблюдаемому поведению, хваленый механизм "наложения" как раз и состоит в том, что

параметры, добавленные в пользовательские настройки, -- в т.ч. флажок использования -- всегда берутся оттуда, значение в полных настройках игнорируется и служит только начальным значением пользовательской настройки при первом запуске отчета

и, насколько вижу, это не документировано.

Т.о. если мне нужно какое-то другое поведение, нужно поступать имеено так как я -- манипулируя объектами настроек в ПриКомпоновкеРезультата, перекрывая штатное поведение компоновщика настроек.
Оставьте свое сообщение

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