| 
    
        
     
     | 
    
    
  | 
Добавление фотографии на мобильной платформе | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Enot_tut    
     27.07.15 
            ✎
    11:12 
 | 
         
        Есть загрузку изображения с компьютера, 
 
        https://yadi.sk/i/1xFOL9zoi7Ac6 &НаКлиенте Процедура ДобавитьКартинку(Команда) ИмяФайла = ""; ПутьФайла = ""; //Вызываем Диалоговое окно и помещаем файл Картинки из локальной файловой системы во временное хранилище Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина) = Истина Тогда //в строковый реквизит ФОТО нашей формы сохраняем ссылку на Картинку во временном хранилище Фото = ПутьФайла; //для создания нового элемента в Справочнике Файлы и записи Картинки в его реквизит Файл //переходим на сервер с помощью вызова серверной процедуры УстановитьКартинку(); КонецЕсли; //условие ЕСЛИ нужно для того, чтобы если пользователь отказался от выбора файла //мы не вызывали серверную процедуру УстановитьКартинку() КонецПроцедуры &НаСервере Процедура УстановитьКартинку() //создаем новый элемент в Справочнике Файлы НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент(); //в реквизит СправочникаФайлы Файл помещаем выбранную ранее Картинку НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото)); Фото = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить()); //записываем новый элемент справочника Файлы НовыйФайлКартинки.Записать(); //устанавливаем значение реквизита Картинка Справочника Сотрудники Объект.Картинка = НовыйФайлКартинки.Ссылка; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //отображение картинки при открытии формы справочника Фото = ПолучитьНавигационнуюСсылку(Объект.Картинка, "Файл"); //устанавливаем автомасштаб для картинки Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер; КонецПроцедуры при нажатие на кнопке на мобильной фотокамеры открывается фотокамера после того как сделана фотка изображение не где не появляться как это исправить помогите пожалуйста https://yadi.sk/i/IZjNCI08i7Ak2 https://yadi.sk/i/DW3Uk9yii7ApF НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) УРИ = "file:///sdcard/Download/1.png"; НовВз = Новый ЗапускПриложенияМобильногоУстройства(); НовВз.Действие = "android.media.action.IMAGE_CAPTURE"; НовВз.ДополнительныеДанные.Добавить("output",УРИ, "Uri"); если НовВз.Запустить(Истина) = 0 Тогда Возврат; КонецЕсли; ФотокамераФрагмент(УРИ); КонецПроцедуры &НаСервере Процедура ФотокамераФрагмент(Знач УРИ) Перем ДД, ХЗ; ДД = Новый ДвоичныеДанные("/sdcard/Download/1.png"); ХЗ = Новый ХранилищеЗначения(ДД, Новый СжатиеДанных(9)); КонецПроцедуры &НаКлиенте Процедура УдалитьФайл(УРИ) УдалитьФайлы(УРИ); КонецПроцедуры  | 
|||
| 
    1
    
        DitriX    
     27.07.15 
            ✎
    22:06 
 | 
         
        я могу ошибаться, но вроде это не должно быть так.
 
        УРИ = "file://sdcard/Download/1.png"; Если вы указываете такой формат, то укажите это вот так УРИ = "file:///sdcard/Download/1.png";  | 
|||
| 
    2
    
        Enot_tut    
     28.07.15 
            ✎
    11:21 
 | 
         
        все исправил теперь как добавляет фотографию пишет ошибку
 
        https://yadi.sk/i/2QUi9ew-i8Qjy  | 
|||
| 
    3
    
        DitriX    
     28.07.15 
            ✎
    12:03 
 | 
         
        у меня такое подозрение, что вы нарвались на некий баг платформы.
 
        Вы только на одном устройстве пробовали?  | 
|||
| 
    4
    
        Enot_tut    
     28.07.15 
            ✎
    12:57 
 | 
         
        да     
         | 
|||
| 
    5
    
        Enot_tut    
     28.07.15 
            ✎
    13:00 
 | 
         
        ДанныеМультимедиа = СредстваМультимедиа.СделатьФотоснимок();
 
        Если Не ДанныеМультимедиа = Неопределено Тогда Попытка ДвоичныеДанные = ДанныеМультимедиа.ПолучитьДвоичныеДанные(); АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); Фото = АдресХранилища; Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; https://yadi.sk/i/gDhvPoLoi8YgB сделал по этому коду все нормально в форму добавляет но после того как нажимаешь готово фотография пропадает  | 
|||
| 
    6
    
        Enot_tut    
     28.07.15 
            ✎
    13:01 
 | 
         
        я предполагаю что этот код надо связать как тос этим кодом но я не разобрался как
 
        &НаСервере Процедура УстановитьКартинку() //создаем новый элемент в Справочнике Файлы НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент(); //в реквизит СправочникаФайлы Файл помещаем выбранную ранее Картинку НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото)); Фото = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить()); //записываем новый элемент справочника Файлы НовыйФайлКартинки.Записать(); //устанавливаем значение реквизита Картинка Справочника Сотрудники Объект.Картинка = НовыйФайлКартинки.Ссылка; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //отображение картинки при открытии формы справочника Фото = ПолучитьНавигационнуюСсылку(Объект.Картинка, "Файл"); //устанавливаем автомасштаб для картинки Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер; КонецПроцедуры  | 
|||
| 
    7
    
        DitriX    
     28.07.15 
            ✎
    13:20 
 | 
         
        Вот вам пример из реального проекта. Фотки - это реквизит формы типа строка,  выведенный на форму как каринка.
 
        &НаКлиенте Процедура ФоткиНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Для Каждого Эл Из Параметры.Данные Цикл // Если Эл.Ключ = "ID" Тогда Продолжить КонецЕсли; // Номенклатура = Номенклатура + Эл.Ключ + ": " + Эл.Значение + Символы.ПС; //КонецЦикла; ЗаполнитьЗначенияСвойств(ЭтаФорма, Параметры.Данные); КонецПроцедуры &НаКлиенте Процедура ОбработкаКоманды(Команда) //Тут указываем путь, при чем путь должен быть доступен всем программам, так что временные файлы 1С не подйут ФайлКартинки = "/sdcard/Download/FotoTestFrom1C.bmp"; НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE"); //Обязательно указываем этот параметр, если его не указать, тогда вам вернется привью файла в низком качестве и находится он будет в параметрах с ключем data. НовВз.ДополнительныеДанные.Добавить("output","file://" + ФайлКартинки,"Uri"); //Если фото не сделано, то ответ будет "0" Если НовВз.Запустить(Истина) <> 0 Тогда //ну а тут уже готовое фото, так что все что хотим, то и делаем. ДД = Новый ДвоичныеДанные(ФайлКартинки); Фотки = ПоместитьВоВременноеХранилище(ДД); IDФото = Новый УникальныйИдентификатор; Иначе Сообщить("Фото не сделано!"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтправитьФото(Команда) Если IDФото = "" Тогда Сообщить("Сделайте фото!"); Возврат; КонецЕсли; ХТТП = Новый HTTPСоединение("127.0.0.1",65100,"dima","pass"); СтруктураЗапроса = Новый Соответствие; СтруктураЗапроса.Вставить("ID", ID); СтруктураЗапроса.Вставить("IDFoto", IDФото); СтруктураЗапроса.Вставить("type", 1); ХТТПЗапрос = Новый HTTPЗапрос("/BaseOneNew/hs/DataTransfer/Sync",СтруктураЗапроса); ХТТПЗапрос.УстановитьТелоИзДвоичныхДанных(ПолучитьИзВременногоХранилища(Фотки)); Ответ = ХТТП.ОтправитьДляОбработки(ХТТПЗапрос); ОтветОтСервера = Ответ.ПолучитьТелоКакСтроку("UTF-8"); Если Ответ.КодСостояния <> 200 Тогда ВызватьИсключение "Ошибка подключения к серверу: " + Символы.ПС + Ответ.КодСостояния + ОтветОтСервера; КонецЕсли; Сообщить(ОтветОтСервера); КонецПроцедуры  | 
|||
| 
    8
    
        Enot_tut    
     28.07.15 
            ✎
    13:46 
 | 
         
        ХТТП = Новый HTTPСоединение("127.0.0.1",65100,"dima","pass");
 
        вот это строка что озночает  | 
|||
| 
    9
    
        DitriX    
     28.07.15 
            ✎
    14:27 
 | 
         
        Процедура ОтправитьФото(Команда)
 
        Эта процедура отправляет данные на сервер 1с по http сервисам.  | 
|||
| 
    10
    
        Enot_tut    
     28.07.15 
            ✎
    14:51 
 | 
         
        ,"dima","pass"
 
        это так же оставить??  | 
|||
| 
    11
    
        DitriX    
     28.07.15 
            ✎
    14:53 
 | 
         
        вам вообще это не надо.
 
        Оттуда вас интересует только одна строка - где получаются двоичные данные: ПолучитьИзВременногоХранилища(Фотки). Может скинете обрабоку, и проще будет ее посмотреть сразу и ответить вам, а то так мы врядли к чему прийдем.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |