Имя: Пароль:
1C
 
Реквизит типа ХранилищеЗначения очищается в форме при создании копированием
0 Xammsa
 
12.12.20
11:52
Добрый день!
У справочника есть реквизит с типом ХранилищеЗначения, в который при записи элемента справочника сохраняются данные, а при открытии формы извлекаются.
Всё происходит нормально, кроме создания элемента справочника копированием - в этом случае ХранилищеЗначения оказывается пустым. Все остальные реквизиты копируются.

Вот код, реквизит справочника-ХранилищеЗначения называется "НастройкиКомпоновщика". На форме есть реквизит "КомпоновщикНастроек", куда и загружаются данные из хранилища значения при создании формы.

//Сохранение
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    ТекущийОбъект.НастройкиКомпоновщика = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());

КонецПроцедуры

//Загрузка в реквизит формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    СохраненныеНастройки = об.НастройкиКомпоновщика.Получить(); //при создании копированием получает значение Неопределено
    
    КомпоновщикНастроек.ЗагрузитьНастройки(СохраненныеНастройки);            
    
КонецПроцедуры

Проверил отладчиком в модуле объекта в событии ПриКопировании() для нового элемента справочника - реквизит НастройкиКомпоновщика заполнен правильно. А вот в модуле формы он уже пуст.
Не пойму, почему это происходит только при копировании.
1 Xammsa
 
12.12.20
11:54
В процедуре ПриСозданииНаСервере первая строчка:

Об = РеквизитФормыВЗначение("Объект");
2 Вафель
 
12.12.20
12:08
руками копировать.
по иддее событие нужно не в присоздании, а в причтении. но для новых объектов оно увы не вызывается
3 acht
 
12.12.20
12:12
(1) В основном реквизите, который ДанныеФормыСтруктура, этого хранилища уже нет. Странно, что он у тебя есть при обычном открытии формы.
Бери параметр формы ЗначениеКопирования (кажется так) и перечитывай из него. Ну и для уже существующих, тебе правильно говорят, надо ПриЧтении извлекать.
4 Xammsa
 
12.12.20
13:32
Спасибо, всё получилось!