Имя: Пароль:
1C
 
Хранилище значения
0 Sun125
 
01.08.10
19:40
Управляемое приложение. Пытаюсь записать в реквизит справочника (Тип Хранилище значения) файл:
   ФайлХранилища = Новый ХранилищеЗначения(ТекФайл);(на сервере)
Не записывается..подскажите,пожалуйста, в чем дело?

Считываю:
   ДанныеХранилища = Объект.Ссылка.ФайлХранилища.Получить(); // неопределено
1 EvgeniuXP
 
01.08.10
19:44
Установить
2 Sun125
 
01.08.10
19:51
(1) не очень понял, что установить?
3 Sun125
 
01.08.10
19:52
хотя бы пример какой-нибудь киньте..где используется Установить
4 Sun125
 
01.08.10
19:54
Объект.Ссылка.ДанныеХранилища = Новый ХранилищеЗначения(ТекФайл);
// ошибка: Поле объекта недоступно для записи
5 Aleksey_3
 
01.08.10
19:57
6 Sun125
 
01.08.10
20:03
(5) я так и делаю...
7 Sun125
 
01.08.10
20:04
на обычной форме все хорошо...а вот на управляемой не получается
8 Sun125
 
01.08.10
21:45
upну...
9 Bober
 
01.08.10
21:48
в каком контексте?
10 Sun125
 
01.08.10
21:59
(9) ФайлХранилища - это реквизит объекта, тип - Хранилище значения, на форме его нет. В модуле управляемой формы:
&НаСервере
ФайлХранилища = Новый ХранилищеЗначения(ТекФайл);

И не записывается значение реквизита...не могу понять почему.
11 Всеяд
 
01.08.10
22:18
(4) "Объект.Ссылка.ДанныеХранилища = ..."
Много думать.
12 Sun125
 
01.08.10
22:45
(11) Как тогда обратиться к реквизиту?
13 H A D G E H O G s
 
01.08.10
23:33
На Волге, на Волге, на том бережочке, мыла Маруся бледные ножки...

ЭтотОбъект=РеквизитФормыВЗначение("Объект");
ЭтотОбъект.ДанныеХранилища=Новый ХранилищеЗначения(ТекФайл);
ЗначениеВРеквизитФормы(ЭтотОбъект,"Объект");
14 H A D G E H O G s
 
01.08.10
23:34
Где, ТекФайл - ДвоичныеДанные, естественно.
15 Sun125
 
02.08.10
00:11
так странно...вроде сначала записывается...
смотрю в отладчике: ЭтотОбъект.ДанныеХранилища - табличный документ там
а потом все равно куда-то пропадает значение. в итоге не записывается.
16 Sun125
 
02.08.10
00:16
&НаКлиенте
УстановитьДанные()
ПолучитьДанные()

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

&НаСервере
Процедура ПолучитьДанные()
ЭтотОбъект=РеквизитФормыВЗначение("Объект");
ДанныеХранилища = ЭтотОбъект.ДанныеХранилища.Получить(); // тут уже пусто почему-то
КонецПроцедуры
17 H A D G E H O G s
 
02.08.10
00:24
(16) Объект после помещения не записан. Читается старая версия.
Хотишь работать на протяжении "сеанса" - Юзай ВременноеХранилище. Ну примерно так:

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   ЭтотОбъект=РеквизитФормыВЗначение("Объект");
   АдресКартинки=ПоместитьВоВременноеХранилище(ЭтотОбъект.Картинка.Получить(),УникальныйИдентификатор);
КонецПроцедуры
18 Sun125
 
02.08.10
01:11
(17) Спасибо! Вы мне очень помогли!