|
Мобильное приложение 1с и сохранение фото в хранилище значений | ☑ | ||
---|---|---|---|---|
0
arccos6pi
29.10.14
✎
12:25
|
Есть документ с табличной частью "Присоединенные файлы"
у ТЧ есть реквизит - Файл с типом "Хранилище значений" вот кусок кода &НаКлиенте Процедура ПрисоедниненныеФайлыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) #Если МобильноеПриложениеКлиент Тогда Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда Фото = СредстваМультимедиа.СделатьФотоснимок(); ДобавитьФайлНаСервере(Фото.ПолучитьДвоичныеДанные()); КонецЕсли; #КонецЕсли КонецПроцедуры &НаСервере Процедура ДобавитьФайлНаСервере(Фото) НовыйФайл = Объект.ПрисоединенныеФайлы.Добавить(); НовыйФайл.ИмяФайла = "Проверка"; НовыйФайл.Файл = Новый ХранилищеЗначения(Фото); КонецПроцедуры Ошибка - "Поле объекта не обнаружено(Файл)" |
|||
1
DexterMorgan
29.10.14
✎
12:34
|
продолжайте наблюдения
|
|||
2
arccos6pi
29.10.14
✎
12:37
|
(1) дельный совет,как я сразу не додумался
и все же...как мне фото в док загрузить? |
|||
3
DmitrO
29.10.14
✎
12:41
|
Суть в том, что тип ХранилищеЗначений не поддерживается в данных формы. И не только на мобильной платформе, а и вообще, для любой платформы.
Надо файл кинуть во временное хранилище, а при записи объекта, устанавливать уже в ТЧ ДокументОбъект-а. |
|||
4
mzelensky
29.10.14
✎
12:42
|
(0) Изначально плохой подход! Фотографии (да вообще любые файлы) нельзя хранить в самом объекте. Для этого используют отдельный справочник или регистр.
|
|||
5
mzelensky
29.10.14
✎
12:46
|
(0) Так у тебя ошибка вот в этой строке:
"НовыйФайл.Файл = Новый ХранилищеЗначения(Фото);" ??? Сделай так: &НаСервере Процедура ДобавитьФайлНаСервере(Фото) ТекОбъект = реквизитФормыВЗначение("Объект"); НовыйФайл = ТекОбъект.ПрисоединенныеФайлы.Добавить(); НовыйФайл.ИмяФайла = "Проверка"; НовыйФайл.Файл = Новый ХранилищеЗначения(Фото); ЗначениеВРеквизитФормы(ТекОбъект, "Объект"); КонецПроцедуры |
|||
6
DmitrO
29.10.14
✎
12:49
|
(5)угу, так будет работать без ошибок, но только файлы сохраняться не будут. :)
|
|||
7
arccos6pi
29.10.14
✎
12:53
|
(3),(5) спасибо,буду пробовать
(4) я понимаю что это не очень правильно,но если хранить эти данные в отдельном справочнике,мне его нужно будет завести в базе с которой обмениваюсь,и соответственно еще один справочник синхронизировать..а хочется это как-то минимизировать |
|||
8
mzelensky
29.10.14
✎
13:14
|
(6) Почему нет? Я лично не пробовал (в своем случае пишу в регистр), но явных проблем, из-за которых файлы сохраняться не будут, не вижу.
|
|||
9
arccos6pi
29.10.14
✎
14:23
|
||||
10
DmitrO
29.10.14
✎
15:35
|
(9)значит написал не правильно.
Делай так: 1)в данных формы в ТЧ ПрисоединенныеФайлы добавь колонку типа Строка с именем АдресФайла. 2)измени процедуру &НаСервере Процедура ДобавитьФайлНаСервере(Фото) НовыйФайл = Объект.ПрисоединенныеФайлы.Добавить(); НовыйФайл.ИмяФайла = "Проверка"; НовыйФайл.АдресФайла = ПоместитьВоВременноеХранилище(Фото, УникальныйИдентификатор); КонецПроцедуры 3)добавь обработчик события в форме: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Индекс = 0; Для каждого СтрокаФормы из Объект.ПрисоединенныеФайлы Цикл Если ЗначениеЗаполнено(СтрокаФормы.АдресФайла) Тогда ТекущийОбъект.ПрисоединенныеФайлы[Индекс].Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СтрокаФормы.АдресФайла)); КонецЕсли; Индекс = Индекс+1; КонецЦикла; КонецПроцедуры |
|||
11
arccos6pi
29.10.14
✎
16:31
|
(10) так у меня и сделано
буду капать дальше |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |