Запуск приложения мобильного устройства - что это?

08.10.14

Разработка - Мобильная разработка

В этой статье я попробую ответить на этот вопрос.
А также посмотрим, как сканировать камерой, как отправлять почту и как делать фото (или видео и в любом качестве), причем не встроенными средствами 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пушы и тосты для тестов
.apk 53,08Kb
45
45 Скачать (1 SM) Купить за 1 850 руб.
Исходники (клиента и сервиса)
.zip 4,19Mb
71
71 Скачать (1 SM) Купить за 1 850 руб.

Добрый день.

Наконец у меня дошли руки до разбора нового функционала по мобильной платформе.

В частности, как вы поняли из заголовка статьи – речь пойдет о таком новом объекте, как ЗапускПриложенияМобильногоУстройства.

К сожалению, я не смогу в статье поделиться абсолютно всеми вещами, и добиться понимания читателем всей информации, так как тут будет слишком много специфики по Андроиду.

Но в любом случае попробую донести основную идею.

Итак, что это за такой интересный объект, вокруг которого крутится столько вопросов в инете, и нет ответов, а только догадки.

В двух словах – этот объект позволяет вызвать другое приложение из андроида, и получить ответ от него.

Например, вы можете открыть почту и передать в нее все нужные данные.

Давайте начнем с чего-то малого, но не менее интересного. К примеру – попробуем просканировать штрих-код при помощи камеры телефона, но не средствами 1С, а вызовем специальную программу.

Для этого необходимо установить на телефон программу вот эту.

Далее – создаем кнопку в 1С с вот такой функцией:

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.google.zxing.client.android.SCAN";
    Сообщить(НовВз.Запустить(Истина));
    ДляКаждогоСтрИзНовВз.ДополнительныеДанныеЦикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры

Обновляем конфигурацию и нажимаем кнопку. У меня отображается вот такое окно:

Выбираем Сканер штрих-кодов и сканируем что-то, и видим ответ:

 

В ответ мы получили результат работы, тот что «-1», и получили результаты сканирования, а именно – штрих-код и тип штрих-кода.

Ну как? Интересно? Если да, то давайте будем копать глубже.

Тут нам однозначно поможет справка 1С, или не поможет?

ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)

Свойства:

Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)

Методы:

Запустить (Run)

Описание:

Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.

Из справки, нам стало понятно, что работает это все только на Андроид, ну в принципе ничего странного.

Идем дальше. У нас есть определенные свойства и есть один метод.

Давайте разберем некоторые свойства:

Данные – это URIссылка, помните, мы ранее уже говорили про это в вот этой статье. Т.е. если мы хотим запустить браузер, тот тут мы передаем адрес страницы.

Действие – тут мы с вами описывали то, что мы хотим от мобильной платформы. В справке 1С очень скромно про это написали. Но мы вернемся чуть позже.

Категория – это уточняющая информация для описания действия. Например, если это приложение может делать много чего, то вы указываете конкретно что вы хотите. Либо можно запустить приложение по умолчанию, если оно назначено.

На основании этих трех данных система будет искать – что бы запустить для нас. Можно и не заполнять некоторые из них, тогда просто будет выдаваться больше программ для работы с нашим действием.

 

Приложение - тут мы можем указать какое именно приложение (его идентификатор) мы хотим использовать для наших действий, например - "com.google.android.gm", в этом случае откроется Gmail.

ИмяКласса - указывается в паре с приложением, выудить его можно при декомпиляции программы в манифесте, ну или в мануале, если есть, в случае Gmail - "com.google.android.gm.ComposeActivityGmail".

Если казать только приложение или только имя класса - ничего не произойдет. Их есть смысл указывать только в том случае, если вы понимаете о чем идет речь :) При этом можно не указывать Категорию.

В версии 8.3.5.79 исправлен баг (№30010918):

Описание:

В мобильной платформе у обьекта ЗапускПриложенияМобильногоУстройства при вызове метода Запустить игнорируется свойство Приложение, если не установлено свойство ИмяКласса.
 

ДополнительныеДанные – это (типо) структура, в которой мы описываем все параметры для передачи нашему приложению. И в ЭТУ ЖЕ структуру возвращается ответ. Тут не стоит забывать про третий параметр, это тип данных, например, в случае работы с фото, или прикрепляя к письму вложения - мы должны указать Uri представление, так как 1С не значет что это такое, то мы указываем путь и третьим параметром указываем тип, например - "Uri".


Тип – тут следует указать MIMEтип, например, для отправки почты вам надо указать "message/rfc822", а если хотите открыть контакт, то должны указать тип контакта, и т.д.

Метод Запустить – на самом деле тут два метода. Если передаете в параметр Истина, то приложение может вернуть некий код своей работы. Вот как в браузере, если страница не найдена – возвращает код ошибки 404. Если же его переключить в режим Ложь, то он будет работать как индикатор успешного выполнения приложения, т.е. вернет Истину, если же была ошибка, то вернет Ложь.


Что же это все за данные и откуда их брать?

Если в двух словах, то программы на Андроиде могут создавать Намерения (Intent) и обрабатывать их.

Т.е., когда программа написана специальным образом, то при установке она создает ассоциации с некоторыми событиями и их обработкой. В 1С есть хороший аналог – Оповестить() и ОбработкаОповещения(), но только в случае 1С – это локально, а в случае Андроид – глобально.

И ясное дело, что должны быть соответствующие инструкции по работе с ними.

Идем на сайт разработчиков и читаем - https://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/Intents.java

Вот это определение доступных режимов. Например, можете попробовать вызвать вот такой экшн (действие) :

"com.google.zxing.client.android.SHARE"

Посмотрите, что будет.

Теперь давайте отправим почту, за основу я взял первую попавшуюся статью:

Первое на что я смотрю:

IntentemailIntent = newIntent(Intent.ACTION_SEND);

Теперь тут надо быть внимательней. Так как вот это Intent.ACTION_SEND сокращение от android.Intent.action.SEND, а 1С не понимает сокращений, так что не попадайтесь на такие детские ошибки.

Поэтому пишет вот так и тестируем.

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="android.Intent.action.SEND"; 
    Сообщить(НовВз.Запустить(Истина));
КонецПроцедуры

В ответ мы получим «0», и ничего не произойдет. Почему? Ну так все же очевидно, видь должно быть написано не:

android.Intent.action.SEND

а:

android.intent.action.SEND

Разве не понятно? J

Меняем регистр букв, и, о чудо – у нас открылась куча приложений, которые могут отработать это событие. Давайте уточним поиск, для этого укажем тип, но не тот, который в статье той, так как количество приложений не уменьшится, а вот такой:

НовВз.Тип="message/rfc822";

Теперь нажав кнопку – у нас откроется значительно меньше приложений.

Ну и можем выбрать Gmail.

Теперь давайте заполним что-то, ну, например, тему и тело письма. В том примере это делается вот так:

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject of email");

emailIntent.putExtra(Intent.EXTRA_TEXT   , "body of email");

А вставить эти данные нам надо в ДополнительныеДанные. А это по сути массив структуры, где есть ключ и значение. И обратите внимание опять на сокращения.

Мы же должны написать вот так:

    НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");  

    НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Текст письма");

В итоге – открыв Gmail, там заполнятся эти поля. Кроме этого, если у вас установлен скайп, то можете попробовать это же выполнить с ним.

Итог

1С дала очень мощный механизм работы с ее продуктом. Это по сути реализация намерений из андроида, и пока, увы, 1С может выступать только как инициатор, но начало положено! Делать можно много чего при помощи этих функций, я указал лишь самые простые вещи, что бы показать суть, показав это вашему андроид программисту, вы сможете сэкономить часы, если не дни нахождения общего языка.

Дополнение

Как же без какого-то бонуса. А в качестве бонуса, я предлагаю вам поэкспериментировать с вот такой вот программкой, которую мой товарищ накатал за два часа. Делает она следующее – выводит сообщение, или делает пуш сообщение.

При чем в отличии от вот этой утилиты, которую мы написали ранее, когда еще не было этих функций в 1С, вам не надо запускать никакие сервисы, и вообще этой утилиты видно не будет, только в приложениях, так как она не имеет интерфейса.

Работать с ней вот так:

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.ditrix.ownaction.SHOW_TOAST"
    НовВз.ДополнительныеДанные.Добавить("com.ditrix.ownaction.EXTRAS_MESSAGE","Данные");

    Сообщить(НовВз.Запустить(Истина));

    Для Каждого Стр ИзНовВз.ДополнительныеДанные Цикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры

Это для простого сообщения, а вот это действие для пуша:

"com.ditrix.ownaction.SHOW_NOTIFICATION"

При этом вам вернется ответ в виде 3 данных разных типов.

Удачи!

 

Фабрика знаний

Тут будут писаться примеры реализации тех или иных механизмов.


Как сделать фото (видео) в любом качестве?


Учтите - работает не везде, зависит от приложения, при помощи которого делается фото. У меня на Cyan прошивке - все отрабатывало нормально.

    //Тут указываем путь, при чем путь должен быть доступен всем программам, так что временные файлы 1С не подйут
    ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.bmp";
    НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");

    //Обязательно указываем этот параметр, если его не указать, тогда вам вернется привью файла в низком качестве и находится он будет в параметрах с ключем data.
    НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");

    //Если фото не сделано, то ответ будет "0"
    Если НовВз.Запустить(Истина)  0 Тогда

    //ну а тут уже готовое фото, так что все что хотим, то и делаем.
        ЗапуститьПриложение(ФайлКартинки);
    Иначе
        Сообщить("Фото не сделано!");
    КонецЕсли;

Как отправить файл в разные программы? Спасибо Снежане

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "mailto:test@test.ru";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/emulated/0/Снежана/CDAInfo.txt","Uri");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Теекст-текст-текст");
НовВз.Запустить(Истина);

Как отправить файл только по почте? Спасибо Снежане

Должен быть установлен клиент Gmail

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.SEND";
НовВз.Данные = "test@test.ru";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/sdcard0/DCIM/Camera/20140829_115820.jpg","Uri");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Теекст-текст-текст");
НовВз.Тип = "text/plain";
//чтобы сразу Gmail открывался
НовВз.Приложение = "com.google.android.gm";
НовВз.ИмяКласса = "com.google.android.gm.ComposeActivityGmail";
//
НовВз.Запустить(Истина);

Пример работы с Viber'ом. Спасибо Снежане

//Открывает вайбер 
НовВз.Действие = "com.viber.voip.action.CONVERSATION";
//или
НовВз.Действие = "com.viber.voip.action.MESSAGES";


//Открывает список контактов в вайбере
НовВз.Действие = "android.intent.action.CALL_BUTTON";


//открывает диалог с конкретным человеком в вайбере
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "smsto:+380965336452";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.SystemDialogActivityPublic";
//Отправить текст по вайберу, предлагает выбрать, кому отправлять, потом сразу отправляет
НовВз.Действие = "android.intent.action.SEND";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity"; 
НовВз.Тип = "text/plain";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","ТЕКСТ: Теекст-текст-текст");


//Отправить фото по вайберу, предлагает выбрать, кому отправлять
НовВз.Действие = "android.intent.action.SEND";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity"; 
НовВз.Тип = "image/jpeg";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/emulated/0/DCIM/100ANDRO/DSC_0001.jpg","Uri");
//Открыть контакт в вайбере
НовВз.Действие = "android.intent.action.VIEW";
НовВз.Данные = "tel:+380965336452";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity";

Еще можно открыть контакты устройства и выбрать конкретный контакт, но вот проблема в том, что получаем в итоге Uri-ссылку на контакт, а 1С с ней ничего сделать не может... а хотелось бы данные вытянуть.

Написали в пожелания создание Локального ключа контакта на основании Uri-ссылки.

Спасибо Снежане

// Выбор контакта
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.intent.action.PICK";
Запуск.Тип = "vnd.android.cursor.dir/contact";
Запуск.Запустить(Истина);
Строка = Запуск.Данные;
//Открытие по ссылке
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.intent.action.VIEW";
Запуск.Данные = Строка;
Запуск.Запустить(Истина);

Как правильно указывать путь к файлам? Спасибо Вадиму

Когда мы сохраняем файл средствами моб платформы через

КаталогВременныхФайлов() + "sticker.pdf"


То этот файл недоступен другим приложениям. Можно писать так:

"file:///sdcard/sticker.pdf"


но теоретически карты памяти может и не быть. Поэтому есть более методически правильный метод:

КаталогДокументов() + "sticker.pdf";

Как выбрать файл нужного типа, при помощи менеджера файлов?

Обратите внимание на то, что у вас должен вернуться именно путь к файлу.
Он может быть или в виде content или в виде file, тогда все норм. Однако, если вернется провайдер, например, content://com.android.providers.media.documents/.... то это фигня.
1С с таким работать не сможет. Все зависит от прогаммы, при помощи которой делается выбор. К примеру - если использовать графу "Недавние", то может вернуться провайдет.
Вообщем экспериментировать надо.

 

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.GET_CONTENT";
//Указываем тип искомых файлов, нас интересует только фото
НовВз.Тип = "image/*"; //"file/*"; //"*/*"
//Говорим что интересуют только локальные данные, а не облачные
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
	Сообщить("Файл не выбран!");
	Возврат
КонецЕсли;
ПутьКФайлу = НовВз.Данные;

Как обрезать выбранное фото?

 

НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.android.camera.action.CROP", ПутьКФайлу);		
НовВз.Тип = "image/*";
НовВз.ДополнительныеДанные.Добавить("return-data", true);
		
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
	Сообщить("Фото не обработано!");
	Возврат
КонецЕсли;

ФайлВр = ПолучитьИмяВременногоФайла("jpg"); 
НовВз.ДополнительныеДанные.Получить("data").Значение.Записать(ФайлВр); // тут и будет сама картинка, которую можно запихнуть в 1С
ЗапуститьПриложение(ФайлВр);



ЗапускПриложенияМобильногоУстройства Android

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38233    108    161    

201

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    59322    192    103    

172

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    97286    587    189    

321

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Вашему вниманию предлагается специализированное программное обеспечение для терминалов сбора данных со встроенным сканером штрихкода. Предназначено для цифровизации всех товароучетных операций на любых складах, в том числе с адресным хранением различной сложности. Позволяет ускорить и упростить работу кладовщиков, а также снизить вероятность ошибок при работе, обусловленных человеческим фактором.

3450 руб.

28.04.2023    9487    15    0    

9

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4660    1    0    

6

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1220    6    informa1555    1    

13

Мобильная разработка Мобильная платформа Абонемент ($m)

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    2621    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. flyer 233 16.09.14 12:01 Сейчас в теме
ждем что то аналогичное для ios
adhocprog; +1 Ответить
2. DitriX 2102 16.09.14 14:05 Сейчас в теме
(1) очень сильно сомневаюсь :)
DanilaDru; +1 Ответить
134. maxx 996 24.05.18 13:04 Сейчас в теме
(2) прошло почти 4 года, не в курсе для ios описания такого нет?
172. sokdm 08.04.21 17:20 Сейчас в теме
173. maksa2005 550 10.07.21 23:47 Сейчас в теме
(172)на iOS только так
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);

ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

ДиалогВыбора.Заголовок = "Выберите файл";

ДиалогВыбора.Показать(Оповещение);
3. infosoft-v 927 16.09.14 12:42 Сейчас в теме
Добрый день. А такие приёмы требуют прав суперпользователя в устройстве на андроид?
4. DitriX 2102 16.09.14 15:00 Сейчас в теме
(3)Нет, это стандартный механизм.
5. dj_serega 393 16.09.14 16:12 Сейчас в теме
А можно где-то посмотреть общий список команд которые можно выполнить?
7. DitriX 2102 16.09.14 18:08 Сейчас в теме
(5) можно - для этого надо уже понимать основы программирования под андроид. И, увы, почему то далеко не все работает.
Ну вот на офф сайте http://developer.android.com/guide/components/intents-common.html

(6) теперь ждем момента, когда 1с сможет быть сервером броэдкаста, а то посылать она оповещения то может, а вот прослушивать - нет. А как было бы круто :)
Присылаешь линк, как в уф, на товар или накладную - открывается 1с с этим товаром/накладной :)
93. djvu 145 30.09.15 14:40 Сейчас в теме
(7)

Как я понял, запускать можно только активити с параметрами? Сервисы таким образом запускать нельзя?
94. DitriX 2102 30.09.15 17:22 Сейчас в теме
(93) вы вызываете намерение, у сервисов их нет, т.е. вы и активити то не все вызвать можете, а только те, у которых есть фильтр намерений.
95. djvu 145 01.10.15 08:26 Сейчас в теме
(94)
Т.е. для организации двухстороннего обмена с сервисом с использованием интентов нужна активити-прослойка в любом случае :/
Получается и асинхронный режим выпадает?
96. DitriX 2102 02.10.15 11:25 Сейчас в теме
(95) djvu, во всяком случае - на текущий момент, да.
Но как научимся слушать бродкасты...
98. enot_tut 20 18.11.15 10:04 Сейчас в теме
(96) можно конфигурацию скинуть этой статьи
99. DitriX 2102 21.11.15 20:28 Сейчас в теме
163. WKBAPKA 215 06.11.19 10:47 Сейчас в теме
(7) эх, еще бы LiveDat-у подключить :)
6. AlX0id 16.09.14 15:30 Сейчас в теме
А я говорил, что интенты добавят :)
8. allegrosoft 52 16.09.14 18:24 Сейчас в теме
С какого релиза все это стало возможно?
9. flyer 233 16.09.14 19:10 Сейчас в теме
110. ISP 06.07.16 13:47 Сейчас в теме
у меня заработал такой вызов камеры android/ Сделано на базе примера, за что спасибо
//Тут указываем путь, при чем путь должен быть доступен всем программам,
		// так что временные файлы 1С не подйут
		
		ФайлКартинки = КаталогДокументов()+"MobileFoto.jpg";
		// без замены слешей не сохраняет нормально
		ФайлКартинки = СтрЗаменить(ФайлКартинки,"\","/");
		// делаем как бы ссылку на файл для андроида
		ФайлКартинки = "file://" + ФайлКартинки; 
		
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
		
		//Обязательно указываем этот параметр, если его не указать,
		// тогда вам вернется привью файла в низком качестве
		// и находится он будет в параметрах с ключем data.
		НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
		
		//Если фото не сделано, то ответ будет "0"
		Рез = НовВз.Запустить(Истина);
		
		// а тут нормально обращение к файлу. Без этого вылетает ошибка, что файл не обнаружен 
		ФайлКартинки = СтрЗаменить(ФайлКартинки,"file://","");
		
		// сохраняем в справочник на смартфоне, для последующей выгрузки
		Фото_СохранитьСнимок(Неопределено,
		Новый ДвоичныеДанные(ФайлКартинки),
		Неопределено,
		Неопределено
		);

&НаСервере
Процедура Фото_СохранитьСнимок(ФотоСсылка,ДвоичныеДанные,РасширениеФайла,ТипСодержимого)
	Если ФотоСсылка = Неопределено Тогда 
		Фото = Справочники.ФотоДляСлужебок.СоздатьЭлемент();
		Фото.Наименование = Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HHmmss'") + "[Нов. фото]";
		Фото.ИмяФото = Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HHmmss'") + ".jpg";
	иначе	
		Фото = ФотоСсылка.ПолучитьОбъект();
	КонецЕсли;
	
	Фото.ДатаФото = ТекущаяДата();
	Фото.РасширениеФото = РасширениеФайла;
	Фото.ТипСодержимогоТекст = ТипСодержимого;
	// для отлаки
	Если ДвоичныеДанные = Неопределено Тогда 
		Фото.ХранилищеФото = Новый ХранилищеЗначения(Неопределено);
	иначе	
		Фото.ХранилищеФото = Новый ХранилищеЗначения(ДвоичныеДанные,Новый СжатиеДанных(9));
	КонецЕсли;
	Фото.ЕстьФото = Истина;	
	Фото.Родитель = Фото_ТекущаяСлужебка;
	Фото.Записать();
КонецПроцедуры
Показать
renmy; akR00b; +2 Ответить
10. allegrosoft 52 17.09.14 09:33 Сейчас в теме
А можно исходники приложения?))
11. DitriX 2102 17.09.14 14:52 Сейчас в теме
(10) можно все :) Позже обновлю статью и добавлю исходники
12. allegrosoft 52 17.09.14 14:57 Сейчас в теме
13. DitriX 2102 17.09.14 18:16 Сейчас в теме
14. sergei_tekh 84 22.09.14 16:30 Сейчас в теме
В эмуляторе (VMware) метод тоже должен работать? У меня ничего не происходит и никаких ошибок не выдаётся.
15. DitriX 2102 22.09.14 16:47 Сейчас в теме
(14) смотря что вы тестируете.
16. sergei_tekh 84 22.09.14 17:36 Сейчас в теме
(15) попробовал все примеры, что здесь были. Допустим, отправку почты:
&НаКлиенте
Процедура Сообщения(Команда)
	
    НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.SEND"; 
    Сообщить(НовВз.Запустить(ложь));
	
КонецПроцедуры

Метод "Запустить" выдает всегда Ложь (или 0, в зависимости от параметра метода)
18. DitriX 2102 22.09.14 19:03 Сейчас в теме
(16) странно, но боюсь что тут не пдскажу в чем дело, может нет ни одного приложения, которое должно откликнуться.ъ
(17) писали в IDEA
17. allegrosoft 52 22.09.14 18:21 Сейчас в теме
Проект в Eclipce разработан? Что-то не пойму, как -то криво в eclipce открывается.
19. CyberCerber 872 07.10.14 13:24 Сейчас в теме
Спасибо за полезную статью по интересной теме!

Попробовал примеры из статьи. Поставил прогу для штрих-кодов, запустил команду, да, сработало.

Но не работает команда "android.intent.action.SEND". При этом установлен тот же GMail, смотрел в его манифесте, там эта команда в интентах есть. Не знаете, в чем может быть дело?
20. DitriX 2102 07.10.14 15:56 Сейчас в теме
(19) CyberCerber, вы делаете вот так:
Процедура ПроверитьВзаимодействие(Команда)

    НовВз=Новый ЗапускПриложенияМобильногоУстройства();

    НовВз.Действие="android.intent.action.SEND"; 

    Сообщить(НовВз.Запустить(Истина));

КонецПроцедуры
Показать

?
Что вам в ответ приходит?
21. CyberCerber 872 07.10.14 20:54 Сейчас в теме
(20) да, именно так и делаю. В ответ приходит 0. И больше ничего не происходит.
22. DitriX 2102 07.10.14 21:43 Сейчас в теме
(21) CyberCerber, Даже не знаю что ответить. Это стандартная функция андроида.
Давайте тогда уточним все:
1. Версия андроид
2. Версия 1С
3. Название устройство
4. На скольки устройствах тестировали
5. Вы точно именно так писали? С учетом регистров и без своих каких-либо добавлений? На всякий случай скопируйте этот код и проверьте еще раз. Дабы был чистый эксперимент.
23. CyberCerber 872 08.10.14 08:15 Сейчас в теме
(22) по пунктам:
1. Андроид 4.0.4
2. 1С 8.3.5.1146
3. Huawei MediaPad 10 FHD
4. Пока на одном
5. Писал именно так, сто раз перепроверял, копировал из Манифеста.

Конечно, ус-во - китайщина, но разве может железо повлиять на работу этих механизмом. Тем не менее, постараюсь сегодня проверить на других девайсах.
24. CyberCerber 872 08.10.14 10:45 Сейчас в теме
(22) протестил на Samsung Galaxy S3 Android 4.3 - тоже самое

Но у меня получилось по-другому! Добавил строчку из примера НовВз.Тип="message/rfc822";
Открылся выбор Gmail и Bluetooth. Почему так, не можете подсказать? И откуда брать эту инфу о типе?
25. DitriX 2102 08.10.14 13:26 Сейчас в теме
(24) интересует версия мобильной 1С, а не стационарной.
Так как там они немного переделали механизмы. Вообщем попробуйте из новых примеров в конце статьи.
26. CyberCerber 872 10.10.14 09:22 Сейчас в теме
(25) мобильная 8.3.5.74. Это уже старая версия?
О, спасибо за примеры. В общем, понял, что нужно изучать Манифесты приложений.
А никто не пробовал открыть из 1С картинку на редактирование, сделать там какие-то пометки и закрыть, сохранив? Не могу найти удобные редакторы/рисовалки, которые с Интентами работают.
27. mzelensky 53 15.10.14 10:20 Сейчас в теме
Доброго времени суток!

Делаю фотку средствами 1С, сохраняю в базу и привязываю к нужному объекту. По сути встроенным и средствами все работает, но фотографии получаются довольно большие (мне бы хватило разрешения 800*600).

Можно ли это реализовать вашим методом?.
29. DitriX 2102 15.10.14 13:51 Сейчас в теме
(27) а почему нет? Вы вызываете приложения для работы с фото (не 1С), задаете там размеры и фоткаете, в 1С приходит фото.
Если надо обрезать уже сделанное фото - тоже можно.
Пробуйте, а там увидите.

(28) теоретически можно, но такую программу надо самому писать. Врядли вы найдете готовое решение.
28. Широкий 693 15.10.14 10:34 Сейчас в теме
А можно ли сторонними программа вызывать/скрывать клавиатуру?
Я как то копал - пришел к выводу, что нельзя.
Но на всякий случай спрошу - вдруг ошибаюсь.
30. DanilaDru 262 16.10.14 08:08 Сейчас в теме
Коллеги подскажите пожалуйста. В основном по nfc пишут про необходимость перехвата, но 1с этого не умеет. Может встречали приложение, с помощью которого можно было бы перехватить nfc метку? На подобии как автор вызывает стороннее приложение для сканирования штрих-кодов.
31. dj_serega 393 20.10.14 17:49 Сейчас в теме
А как можно запаковать в архив каталог?

Интерактивно делается так: Мои файлы - выбираем файл или каталог - меню - Заархивировать.
32. DitriX 2102 20.10.14 18:28 Сейчас в теме
33. dj_serega 393 21.10.14 13:05 Сейчас в теме
(32)
Собственно проблемы следующие:
1. Хочу с мобильного приложения создать десяток xml-ек. Запаковать в zip. Отправить по почте.

2. Хочу подключиться к ftp, передать туда десяток файлов или если получится запаковать в архив то передать архив.

Ни первое ни второе не работает.

upd: в тонком клиенте файлы на фтп передаются (в т.ч. каталоги создаются). А вот с мобильного лажа ;(
upd2: Код следующий:
СоздатьКаталог("ftp://login:pass@ip/ИмяКаталога/");

Ошибка следующая:
Каталог не знайдено 'ftp://login:pass/ip/ИмяКаталога': Помилка роботи з інтернет: ftp://ipRequest must not be null.

Я уже и / и \ пробовал. Толку ноль. Ошибка одна и та же.
34. DitriX 2102 21.10.14 17:04 Сейчас в теме
(33) dj_serega,
FTPСоединение (FTPConnection)

Описание:

Предназначен для работы с файлами и каталогами на ftp-серверах.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
35. dj_serega 393 22.10.14 15:14 Сейчас в теме
(34) Так вот именно. Что Новый FTPСоединие не работает на мобильном.
Я подключался по пути "СоздатьКаталог("ftp://login:pass@ip/ИмяКаталога/");"
Думал нет объекта но подключиться можно.

А как на счет вызова программы которая запакует несколько файлов?
36. DitriX 2102 22.10.14 17:33 Сейчас в теме
(35) хм, ну продолжайте копать :) Авось чего интересного найдете :)
37. CyberCerber 872 19.11.14 10:36 Сейчас в теме
Не подскажите, а может ли 1С отправлять broadcast команды?
В Манифесте приложения есть секция activity с intent-filter. Вот действия оттуда срабатывают.
А вот отправляю команду, которая находится в секции receiver с intent-filter - ничего не происходит.
Если через adb shell отправляю команду "am broadcast -a <описание.команды>", то все работает.
Получается, 1С этого еще не умеет?
38. DitriX 2102 19.11.14 14:26 Сейчас в теме
(37) не может, только стартануть активити может, и принимать бродкасты - тоже пока не умеет.
39. CyberCerber 872 20.11.14 08:20 Сейчас в теме
(38) ясно, значит, будем надеяться на новую версию платформы...
О, вижу, вы выложили разработку Acode tools! Как я понимаю, через нее можно реализовать и это.
40. arisha_rein 21.11.14 22:42 Сейчас в теме
Подскажите, пожалуйста, почему ХЗ = Новый ХранилищеЗначения(Новый ДвоичныеДанные("file:///sdcard/Download/FotoTestFrom1C.bmp")); вызывает ошибку недопустимое значение параметра 1?
41. DitriX 2102 22.11.14 13:32 Сейчас в теме
(40) потому что:
file:///sdcard/Download/FotoTestFrom1C.bmp - это URI
/sdcard/Download/FotoTestFrom1C.bmp - а это просто путь или path.

uri - Universal resource Identifier.
Эта штука включает в себя:
- схему доступа
- путь к элементу
- идентификатор элемента
т.е. например к записи в БД ты можешь создать uri.
Типичный URI:
jdbc:mysql://localhost/niflheim?useUnicode=true&characterEncoding=utf-8
А path это путь к объекту файловой системы.

Андроид обычно работает с uri, так как он должен понимать - вы указали путь к файлу, или это путь к записи в бд.

Если привести анологию в 1С, то в 1С есть такая фишка, как ссылка на объект.
К примеру:
e1cib/data/Справочник.Пользователи?ref=8259005056c0000811e4723249a21e41 - это путь к элементу справочника, в котором указывается, что это конкретно справочник, и не просто справочник, а вполне определенный справочник, или в андроиде - это URI

С другой стороны:
8259005056c0000811e4723249a21e41 - это просто ID, или в андроиде - path.

Вы если хотите обратиться к элементу, вы не можете просто взять указать ID и получить объект, вам надо указать - что это за объект.

Вот тут тоже самое. Т.е. когда вы делаете запись фото - вы должны указать для андроида uri, тогда он поймет, что это файл и где он лежит.
С другой стороны, когда вы получаете файл из 1С, то 1С уже и сама знает, что работать вы будете только с файлом и все.
Поэтому ей достаточно указать просто путь, а вот уже сама 1С, внутри своей системы - по этому пути получит uri и будет с ним работать.

Надеюсь я понятно объяснил?
Agrozentr; Vedich; +2 Ответить
42. arisha_rein 22.11.14 15:30 Сейчас в теме
(41) все понятно. Большое спасибо!
43. ignorant 25.11.14 15:40 Сейчас в теме
Автору - огромное спасибо, выдает "нагора" массу полезной информации!
Кандидат в "Фабрику знаний" - вкл / выкл приемник GPS

// GPS On
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
Запуск.Данные 	= "enabled:true";
Запуск.Запустить(Истина);

// GPS Off
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
Запуск.Данные 	= "enabled:false";
Запуск.Запустить(Истина);
Показать
akR00b; mojo.aka; dablack; DitriX; +4 Ответить
44. gigapevt 25 27.11.14 18:31 Сейчас в теме
А как скрыть экранную клавиатуру после окончания ввода текста (например в своей форме поиска).

Код есть, но как его прикрутить к 1С ?

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
45. DitriX 2102 27.11.14 20:39 Сейчас в теме
(44) без исходников 1с - никак. Во всяком случае - мы не смогли этого добиться.
Еще один из вариантов - своя клавиатура. Вот у нас в ТСД своя клавиатура, и мы ее можем скрывать, открывать и вообще че хотим то и делаем :)
128. mxs89 18 03.11.17 11:50 Сейчас в теме
(45) приветствую. есть какие нибудь изменения касательно скрытия клавиатуры? Если своя клавиатура, имеется в виду скачать какую нибудь клавиатуру с playmarket? например эту
46. ssa 04.02.15 01:05 Сейчас в теме
Большое спасибо за пример с "android.media.action.IMAGE_CAPTURE". Пригодилось.
Но есть проблема с размером картинки. У меня приложение "Камера", которое автоматически вызывается, позволяет установить минимальное разрешение 1 Мпикс. И файл изображения получается большой. Как его можно уменьшить?
47. DitriX 2102 04.02.15 12:36 Сейчас в теме
(46) автоматически вызывается из 1с? Ну так вызовите свое приложение камеры. Я вот это люблю https://play.google.com/store/apps/details?id=fr.xplod.focal&hl=ru
48. ssa 04.02.15 13:24 Сейчас в теме
Спасибо. Но если я установлю еще одно приложение камеры, как указать, чтобы использовалось именно оно? Ведь может быть несколько подобных приложений на моб. устройстве.
49. DitriX 2102 04.02.15 13:53 Сейчас в теме
(48) смотрите вот этот кусок в этой публикации "Как сделать фото (видео) в любом качестве?"
И при запуске - у вас будет вопрос - что выбрать. Выберите камеру и скажете что бы выбиралось всегда по умолчанию.
Либо можно доп параметрами указать конкретное приложение, как это сделать - указано в статье
kingartos; +1 Ответить
50. ssa 04.02.15 14:11 Сейчас в теме
Понял, спасибо за разъяснение.
51. kingartos 08.02.15 21:17 Сейчас в теме
Всем привет! Никто не пробовал работать с "распознователем речи"? Нашел статейку на эту тему(http://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones) только у меня ничего не выходит (видимо потому что в этом неразбираюсь) может кто то уже пробовал если да до выложите плиз кусочек кода))
167. serg33rus 32 22.07.20 15:44 Сейчас в теме
(51) Самое простое для голосовых команд.
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
		Результат = НовВз.Запустить(Истина);
		Если Результат = 0 Тогда
			Возврат;
		КонецЕсли;
		
		ГолосоваяКоманда= НовВз.ДополнительныеДанные.Получить("query").Значение;
52. solarisman 149 04.03.15 17:10 Сейчас в теме
Подскажите, как сделать таким образом, чтобы при открытии формы курсор сразу вставал на поле, чтобы сканирование выполнялось в поле ввода? Приходится "тапать" на поле, после чего выполнять сканирование.
Нельзя ли, например, поставить стороннюю клавиатуру и вызвать событие "Enter" или "Tab"?
53. DitriX 2102 05.03.15 18:14 Сейчас в теме
(52) баг платформы, увы, эта опция доступно только в 8.3.4.17, во всех остальных - не работает. А вам с какой целью?
54. solarisman 149 07.04.15 20:28 Сейчас в теме
Каким образом можно мобильное приложение развернуть на весь экран? Толком так и не разобрался, но тут написано, что для API 16 и выше работает только метод
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();
Показать


Можно ли этот код выполнить из 1С?
55. DitriX 2102 09.04.15 11:48 Сейчас в теме
(54) не туда копаете, правьте манифест и там указывайте что хотите, только это нарушает лицензию 1с :)
56. solarisman 149 09.04.15 18:01 Сейчас в теме
(55) Было бы все так просто. Правка манифеста - не панацея. Опробовали на разных устройствах, и в зависимости от параметров экрана снизу остается полоса высотой до 100 пикселей. На смартфонах от 3,5 до 4" работает норм. На смарте 5" остается совсем небольшая полоса снизу, почти незаметная, а вот на ТСД - бидапичаль. Причем после закрытия окон в этой полосе отображается шапка окна (глюк?)
В приложении это видно. При правке манифеста единственное, что меняется - скрывается статусбар

Прикрепленные файлы:
57. DitriX 2102 09.04.15 19:37 Сейчас в теме
(56) ну это таки глюк, на партнерке о нем вроде как говорили, а вообще отправьте в 1с инфу, зарегят и исправят.
58. DeniNikitin 40 20.05.15 16:41 Сейчас в теме
Здравствуйте!

Ну а где сама утилита для реализации кода?

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.ditrix.ownaction.SHOW_TOAST"
    НовВз.ДополнительныеДанные.Добавить("com.ditrix.ownaction.EXTRAS_MESSAGE","Данные");

    Сообщить(НовВз.Запустить(Истина));

    Для Каждого Стр ИзНовВз.ДополнительныеДанные Цикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры
Показать


Это для простого сообщения, а вот это действие для пуша:

"com.ditrix.ownaction.SHOW_NOTIFICATION"
При этом вам вернется ответ в виде 3 данных разных типов.
59. DitriX 2102 20.05.15 20:26 Сейчас в теме
(58) во вложении к статье :)
174. AlexBar 51 16.09.21 15:03 Сейчас в теме
(59) Подскажите какие параметры работают с методом com.ditrix.ownaction.SHOW_NOTIFICATION?
И еще: как можно задавать длительность показа toast-сообщения?
60. DeniNikitin 40 21.05.15 17:58 Сейчас в теме
Я не много не понял скачал apk, установил, прописал Ваш код по отправке push и toast, в итоге не получил ни push ни toast сообщений, расскажите как использовать?
61. DeniNikitin 40 21.05.15 18:01 Сейчас в теме
(60) DeniNikitin,
Извиняюсь просмотрел всё работает корректно!
62. DeniNikitin 40 21.05.15 18:07 Сейчас в теме
А никак нельзя иконку и текст "Notification" заменить?
63. DitriX 2102 21.05.15 18:19 Сейчас в теме
(62) увы, это ограничения Андроида, можно выставлять только те иконки, которые находятся в ассетах приложения, т.е. при компиляции.
64. DeniNikitin 40 22.05.15 05:37 Сейчас в теме
(63)
Если я правильно понял скачиваю ваши исходники меняю там иконку компилирую и будет другая иконка?
65. DitriX 2102 22.05.15 12:14 Сейчас в теме
(64) ну если именно заменить, то да, а если добавить еще одну, то надо код дописывать.
66. DeniNikitin 40 26.05.15 12:57 Сейчас в теме
(63)
Подскажи в какой среде разработки написан проект? Какой IDE использовал?
67. DitriX 2102 26.05.15 13:39 Сейчас в теме
(66) не помню, или идея или эклипс
68. DeniNikitin 40 27.05.15 16:44 Сейчас в теме
Здравствуйте!

А есть пример, что сделать с этой штукой:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.GET_CONTENT";
?
69. DeniNikitin 40 27.05.15 17:08 Сейчас в теме
(68) DeniNikitin,
Что возвращает, как вытащить расширение и.т.д.?
70. DeniNikitin 40 27.05.15 17:17 Сейчас в теме
Приношу извинения пример есть:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.GET_CONTENT";
//Указываем тип искомых файлов, нас интересует только фото
НовВз.Тип = "image/*"; //"file/*"; //"*/*"
//Говорим что интересуют только локальные данные, а не облачные
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
    Сообщить("Файл не выбран!");
    Возврат
КонецЕсли;
ПутьКФайлу = НовВз.Данные;
Показать

Но я понимаю он возвращает uri, а как из него получить двоичные данные? Если можно пример?
71. DitriX 2102 28.05.15 10:06 Сейчас в теме
(70) URI - это путь к файлу, а как из файла вытащить двиочные данные - точно так же как и в стационарной, и читайте камменты, тут был пример с картинкой
72. DeniNikitin 40 28.05.15 11:24 Сейчас в теме
(71)
Если URI - Путь к файлу, тогда должно работать

ДвоичныеДанные = Новый ДвоичныеДанные(НовВз.Данные); 

Но не работает пишет "Недопустимое значение параметра №1"

Попробовал:
	  	Картинка = Новый Картинка(НовВз.Данные);
	  	СтрокаПуть = Картинка.ПолучитьДвоичныеДанные();

Выдаёт Файл не обнаружен "file://content://external/images/media/10466"

В примерах посмотрел с картинкой примера нет, если только не прописывать строкой ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.bmp";

Подскажите куда копать?
73. DeniNikitin 40 28.05.15 13:01 Сейчас в теме
(71) И ещё заметил такую вещь, что после выбора картинки мне возвращается строка "content://external/images/media/10466", а по факту в total commander смотрю там файл img_.....jpg? Точно путь возвращается в Данные?
74. DitriX 2102 28.05.15 13:05 Сейчас в теме
(73) верн. Так вы выюираете через последние данные. Хотите так выбирать, тогда надо выпрямить ссылку. Читайте в другой статье про утилиты
75. DeniNikitin 40 28.05.15 13:10 Сейчас в теме
(74)
А ссылку на статью можно?
77. DitriX 2102 28.05.15 15:24 Сейчас в теме
(75)http://infostart.ru/public/310565/
(76) нет. Во всяком случае - я не знаю как это сделать из 1с
76. DeniNikitin 40 28.05.15 13:40 Сейчас в теме
Нашёл пример на яве
if(resultCode==RESULT_OK){
String FilePath = data.getData().getPath();
textFile.setText(FilePath);
}
А ни как нельзя этот getPath() в каких-нибудь свойствах ЗапускПриложенияМобильногоУстройства тоже прикрутить?
78. DeniNikitin 40 28.05.15 16:59 Сейчас в теме
Спасибо! Использовал функцию ПолучитьUriИзContent(Путь) и всё как надо!
79. DeniNikitin 40 28.05.15 17:10 Сейчас в теме
Вопросит по фото из 1С

		ФайлКартинки = "file:///sdcard/DCIM/FotoTestFrom1C.jpg";
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
		НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
		НовВз.Запустить(Истина);


Чтобы он в галерее отображался? А то у меня физически есть а в галереи нету?
80. DitriX 2102 28.05.15 17:48 Сейчас в теме
(79) не понял вопрос, можете уточнить?
81. DeniNikitin 40 28.05.15 20:51 Сейчас в теме
(80)
Смысл в следующем, код работает и файл сохраняет, но при этом захожу в галерею андроида, его там нет! Через total commander - есть! Вы в андроиде больше понимаете, скорей всего есть какой-то параметр, который надо подключить, чтобы в галерее отображался!
82. DitriX 2102 28.05.15 20:56 Сейчас в теме
(81) ну для начала путь укажите верный: file:///sdcard/DCIM/Camera/FotoTestFrom1C.jpg
83. DeniNikitin 40 29.05.15 06:19 Сейчас в теме
(82) Дело не в пути, я галерею открываю и у меня там по папкам фото отображается и в том числе есть папка DCIM, и которые файлы там лежат они отображаются кроме того, что сфотал интентом!
84. DitriX 2102 29.05.15 10:09 Сейчас в теме
(83) очень интересно. Может расширение файла не совпадает с его реальным типом?
Тут я затрудняюсь ответить. У меня галерея подхватывает все. Так что тут скорее всего вопросы именно в вашей галерее.
85. Andrey_R91 23.07.15 15:52 Сейчас в теме
Подскажите, как можно открыть html-файл через браузер? Какой MIME-тип нужно указывать чтобы запустился браузер? Или само название приложения (к примеру "com.google.android.gm")
Оставьте свое сообщение