Имя: Пароль:
1C
1С v8
Проблема сохранения Таблицы значений в ХранилищеЗначений
,
0 Aston86
 
01.12.12
19:01
Доброго всем времени суток.
Подскажите кто знает как нормально сохранить таблицузначений в реквизит объекта типа хранилище значений.

Вот код.
&НаСервере
Процедура ЗаписатьТаблицуЭтажаВРеквизит()
СериализуемыйОбъект = Новый ТаблицаЗначений;
СериализуемыйОбъект = ЭтаФорма.ТЗРасшифровкаЭтажа.Выгрузить();
ДокОбъект = РеквизитФормыВЗначение("Объект",);  
ДокОбъект.РасшифровкаЭтажей = Новый ХранилищеЗначения(СериализуемыйОбъект);
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ЕстьРеквизитОбъектаКлиент("ТЗРасшифровкаЭтажа", Элементы) Тогда
 ЗаписатьТаблицуЭтажаВРеквизит();
КонецЕсли;
КонецПроцедуры


А проблема в следующем.
Если в процедуре ЗаписатьТаблицуЭтажаВРеквизит() убрать строку ДокОбъект.Записать(РежимЗаписиДокумента.Запись);, то При записи на сервере В объекте, в реквезите РасшифровкаЭтажей уже ничего нет тое = Неопределено. Или я чего то не знаю или после окончания процедуры происходит обновление данных как то, а если эту строку оставить, то он сохраняет один документ с заполненным реквизитом и тут же точно такой же с незаполненным.

Только не советуйте писать При записи Отказ = Истина.
Сохраняет документ и документ остается открытым. Кагда пытаешься выйти, он пишет - Документ был изменен - сохранить изменения - ну дальше по сценарию :)
Подскажите кто знает как бороться с этой бедой :)
1 H A D G E H O G s
 
01.12.12
19:14
ПередЗаписьюНаСервере()
ТекущийОбъект.РасшифровкаЭтажей = Новый ХранилищеЗначения(СериализуемыйОбъект);
2 H A D G E H O G s
 
01.12.12
19:15
3 Нуф-Нуф
 
01.12.12
19:53
может дело в том что набор - это не объектный тип?
4 kosts
 
01.12.12
20:40
(0)
СериализуемыйОбъект = Новый ТаблицаЗначений; - лишнее


Не понадобятся ли потом данные по расшифровке этажей в отчетах и запросах?
5 Aston86
 
02.12.12
00:42
Я знаю что лишнее но я уже с примера из инэта писал всё равно какая то лажа я незнаю как записать динамичискую ТЗ в хранилище значений в управляемом приложении. Хотя это решало бы много задач (.
6 kosts
 
02.12.12
13:26
(5) Попробуй ЗначениеВСтрокуВнутр()
7 oleg_km
 
02.12.12
21:46
По-моему в 8.2 стало глючить
8 Aston86
 
03.12.12
00:59
kosts ЗначениеВСтрокуВнутр()
Эта функция насколько я понял и смотрел сохраняет уникальный идентификатор объекта, а если объект временный то до фени всё это.
Да глючит на сколько я понял именно в управляемом приложении. Пришлось с типовой код сдерать и переделывать под мои нужды, но если честно код большой и переписывать много, вроде задача на словах не сложная а в коде переписывать много.
Глюк в 8.2 происходит как я понял по причине того что происходит какое то действие которое очишает хранилище до записи, а что это за действие хз.
9 H A D G E H O G s
 
03.12.12
01:01
(8) В
ПередЗаписьюНаСервере()
записываешь?
10 kosts
 
03.12.12
06:52
(8) Если очищается ХЗ, то попробуй записать в строку неограниченной длины.

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