|
Хранилище значений | ☑ | ||
---|---|---|---|---|
0
PetrPervuy
05.12.11
✎
16:07
|
Пытаюсь поместить картинку в хранилище значений, но она не сохраняется.
&НаСервере Функция ПолучитьИзХранилища(НомерСтроки) ЭтотОбъект=РеквизитФормыВЗначение("Объект"); Хранилище=ЭтотОбъект.Приложение[НомерСтроки].Файл; АдресХранилища=ПоместитьВоВременноеХранилище(Хранилище,ЭтаФорма.УникальныйИдентификатор); Возврат АдресХранилища; КонецФункции &НаСервере Функция ЗаписатьВХранилище(НомерСтроки,АдресКартинки) ЭтотОбъект=РеквизитФормыВЗначение("Объект"); ЭтотОбъект.Приложение[НомерСтроки].Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресКартинки)); ЗначениеВРеквизитФормы(ЭтотОбъект,"Объект"); УдалитьИзВременногоХранилища(АдресКартинки); КонецФункции // ЗаписатьВХранилище() // &НаКлиенте Функция ВыбратьФайл(Хранилище, НомерСтроки) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПредварительныйПросмотр = Истина; Если Диалог.Выбрать() Тогда ВыбранныйФайл = Диалог.ПолноеИмяФайла; ДвоичныеДанные = Новый ДвоичныеДанные(ВыбранныйФайл); АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); ЗаписатьВХранилище(НомерСтроки, АдресКартинки); Возврат Истина; КонецЕсли; Возврат Ложь; КонецФункции // ВыбратьФайл() &НаКлиенте Процедура Приложение1ОписаниеФайлаОткрытие(Элемент, СтандартнаяОбработка) ТекущаяСтрока = Элементы.ПриложениеФРМ.ТекущиеДанные; НомерСтроки=Элементы.ПриложениеФРМ.ТекущаяСтрока; Адрес=ПолучитьИзХранилища(НомерСтроки); Файл =ПолучитьИзвременногоХранилища(Адрес); Если ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда Путь = КаталогВременныхФайлов() + "\" + ТекущаяСтрока.ИмяФайла; Файл.Записать(Путь); ЗапуститьПриложение(Файл); Иначе ВыбратьФайл(Хранилище, НомерСтроки); КонецЕсли; КонецПроцедуры |
|||
1
Defender aka LINN
05.12.11
✎
16:10
|
ПередЗаписьюНаСервере
|
|||
2
PetrPervuy
05.12.11
✎
16:17
|
а что надо написать? у меня надо фиксировать картинку для каждой строки
|
|||
3
Buster007
05.12.11
✎
16:18
|
поиск пробовал? разницы между ТЧ и реквизитом никакой нет.
|
|||
4
PetrPervuy
05.12.11
✎
16:25
|
все таки что я должен поместить в событие ПередЗаписьюНаСервер?? я ж вроже и так заполняю тч функцией ЗаписатьВХранилище
|
|||
5
PetrPervuy
05.12.11
✎
16:37
|
??
|
|||
6
Buster007
05.12.11
✎
16:39
|
запись в хранилище происходит только в процедуре ПередЗаписьюНаСервере.
|
|||
7
Defender aka LINN
05.12.11
✎
16:41
|
(4) Помещать в эту процедуру ничего не надо, да и не выйдет. Платформа и так тебе все нужное поместит.
|
|||
8
PetrPervuy
05.12.11
✎
16:50
|
ну тогда почему картинка не получается достать из хранилища?
Файл =ПолучитьИзвременногоХранилища(Адрес); Если ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда Файл имеет тип "ХранилищеЗначений" и значение тоже равно "Хранилище значений". Файл.Получить() возвращает неопределено. |
|||
9
Defender aka LINN
05.12.11
✎
16:53
|
(8) А какой тип ему еще иметь, если это реквизит объекта?
|
|||
10
Buster007
05.12.11
✎
17:00
|
АдресВХранилище = "";
ПоместитьФайл(АдресВХранилище, Диалог.ВыбранныеФайлы[0],, Ложь, УникальныйИдентификатор); В перед записью КакойТоРеквизитСХранилищем = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресВХранилище)); |
|||
11
PetrPervuy
05.12.11
✎
17:08
|
"Defender aka LINN" поидее насколько я понимаю при выполнении Файл.Получить(), я должен получить двоичные данные, а не неопределенно.
"Buster007" - перед записью . Т.е. я во временное хранилище закидываю все картинки, с индексом например номер строки + "какое-то слово". и при записи достаю из временного хранилища и записываю. Т.Е. эта процедура неправильная &НаСервере Функция ЗаписатьВХранилище(НомерСтроки,АдресКартинки) ЭтотОбъект=РеквизитФормыВЗначение("Объект"); ЭтотОбъект.Приложение[НомерСтроки].Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресКартинки)); ЗначениеВРеквизитФормы(ЭтотОбъект,"Объект"); УдалитьИзВременногоХранилища(АдресКартинки); КонецФункции // ЗаписатьВХранилище() |
|||
12
Defender aka LINN
05.12.11
✎
17:18
|
(11) ЗначениеВРеквизитФормы(ЭтотОбъект,"Объект") - вот тут все твои данные теряются нахрен. Ибо в данных формы хранилища нет. Объект, с которым можно работать, система тебе покажет только перед записью
|
|||
13
PetrPervuy
05.12.11
✎
22:35
|
это что при вводе каждо строки надо записывать документ?
|
|||
14
H A D G E H O G s
05.12.11
✎
22:36
|
(13) Храни все двоичные данные во временных хранилищах, а на клиенте - адреса этих хранилищ, в структуре, напрример
|
|||
15
H A D G E H O G s
05.12.11
✎
22:37
|
Надо в БЗ статью написать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |