Есть справочник. В нем реквизит СхемаКомпоновки (тип ХранилищеЗначения). В модуле формы есть реквизит ТекущаяСхема (тип СхемаКомпоновкиДанных), который принимает в себя объект из реквизита СхемаКомпоновки. Далее с текущей схемой работаем через КонструкторСхемыКомпоновкиДанных в форме. При записи снова конвертим в хранилище (в реквизит справочника).
Так вот - куда то исчезают Настройки по умолчанию. Простейший код
Сообщить("До сохранения "+ТекущаяСхема.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Количество());
СхемаКомпоновки = Новый ХранилищеЗначения(ТекущаяСхема);
ТекущаяСхема = СхемаКомпоновки.Получить();
Сообщить("После сохранения "+ТекущаяСхема.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Количество());
Выдает
До сохранения 4
После сохранения 0
Хотя самое парадоксальное, что если после этого открыть ТекущаяСхема в конструкторе - настройки по умолчанию заполнены! Это почему так?
А если сделать
КонструкторСхемы = Новый КонструкторСхемыКомпоновкиДанных;
КонструкторСхемы.УстановитьСхему(ТекущаяСхема);
КонструкторСхемы.Редактировать(ЭтаФорма);
то тут же
КонструкторСхемы.ПолучитьСхему().НастройкиПоУмолчанию
уже не пустые! (и это видно в самом конструкторе). Откуда он их тогда берет, если не из ТекущейСхемы?
Все, вопрос снят. Тупанул. В настройках по умолчанию в окне параметры не стояли галки :) Получается, что в настройки по умолчанию сохраняются только "взведенные" параметры.
А при открытии конструктора это окно заполняется доступными (в том числе и отключенными) параметрами, которые прописаны в самой схеме, а не только в настройках по умолчанию.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.