|
Проблема сохранения Таблицы значений в ХранилищеЗначений |
☑ |
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) Если очищается ХЗ, то попробуй записать в строку неограниченной длины.
И все же попробуй писать как есть в табличную часть документа, зачем эти преобразования туды-сюды...
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший