Имя: Пароль:
1C
1С v8
Сохранение СКД в хранилище значений.
0 0xFFFFFF
 
05.09.13
10:04
Есть справочник. В нем реквизит СхемаКомпоновки (тип ХранилищеЗначения). В модуле формы есть реквизит ТекущаяСхема (тип СхемаКомпоновкиДанных), который принимает в себя объект из реквизита СхемаКомпоновки. Далее с текущей схемой работаем через КонструкторСхемыКомпоновкиДанных в форме. При записи снова конвертим в хранилище (в реквизит справочника).
Так вот - куда то исчезают Настройки по умолчанию. Простейший код

Сообщить("До сохранения "+ТекущаяСхема.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Количество());
СхемаКомпоновки = Новый ХранилищеЗначения(ТекущаяСхема);
ТекущаяСхема = СхемаКомпоновки.Получить();
Сообщить("После сохранения "+ТекущаяСхема.НастройкиПоУмолчанию.ПараметрыДанных.Элементы.Количество());

Выдает
До сохранения 4
После сохранения 0

Хотя самое парадоксальное, что если после этого открыть ТекущаяСхема в конструкторе - настройки по умолчанию заполнены! Это почему так?
1 Crush
 
05.09.13
10:28
Пробовал через двоичные данные?
2 0xFFFFFF
 
05.09.13
10:40
Неа. Это в промежуточный файл сохранять чтоли?
Еще непонятный мне эффект.
После открытия и выполнения

ТекущаяСхема = СхемаКомпоновки.Получить();

Смотрим - ТекущаяСхема.НастройкиПоУмолчанию - пустые

А если сделать
КонструкторСхемы = Новый КонструкторСхемыКомпоновкиДанных;
КонструкторСхемы.УстановитьСхему(ТекущаяСхема);
КонструкторСхемы.Редактировать(ЭтаФорма);

то тут же
КонструкторСхемы.ПолучитьСхему().НастройкиПоУмолчанию

уже не пустые! (и это видно в самом конструкторе). Откуда он их тогда берет, если не из ТекущейСхемы?
3 Crush
 
05.09.13
10:48
Побегай в отладчике по скд. Может конструктор знает какой то укромный уголок, от куда загружает настройки по умолчанию
4 0xFFFFFF
 
05.09.13
10:54
Все, вопрос снят. Тупанул. В настройках по умолчанию в окне параметры не стояли галки :) Получается, что в настройки по умолчанию сохраняются только "взведенные" параметры.
А при открытии конструктора это окно заполняется доступными (в  том числе и отключенными) параметрами, которые прописаны в самой схеме, а не только в настройках по умолчанию.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.