gifts2017

Мобильная платформа. Что можно еще?

Опубликовал Дмитрий Шерстобитов (DitriX) в раздел Программирование - Практика программирования

Что еще можно сделать на мобильной платформе, кроме набора номера и смс?

Добрый день.

Давно я ничего не писал про мобильную платформу. Давайте что-то напишу.

Например, про то, как можно расширить немного функционал мобильной платформы.

Все мы знаем про такие конструкции:

&НаКлиенте
Процедура Позвонить(Команда)
    ЗапуститьПриложение("tel: +7111111111");
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьСМС(Команда)
    ЗапуститьПриложение("sms: +7111111111");
КонецПроцедуры

Однако не все знаю про такие:

&НаКлиенте
Процедура ОтправитьСМС(Команда)
    ЗапуститьПриложение("sms: +7111111111,+555555555");
КонецПроцедуры

Подготовить сообщение нескольким абонентам

ЗапуститьПриложение("geo:46.4984,30.7234?z=19");

В этом случае откроется нормальная карта гугла, или яндекса. Координаты взять можно из специального объекта 1С. Подробней тут (http://infostart.ru/public/256078/)

ЗапуститьПриложение("file:///sdcard/c360_debug.txt");

Запустить файл из любого доступного места, например, с SDкарты.

ЗапуститьПриложение("https://play.google.com/store/apps/details?id=com.viber.voip");

Откроет программу гугл плей, или браузер, в зависимости от типа ссылки.

ЗапуститьПриложение("mailto:ggg@ggg.com,ffff@kkk.er");

Запускает программу отправки почты, нужные адреса через запятую.

Ну и т.д. смотрите справку по Андроиду, вот вам ориентир для поиска: Uri.parse("smsto:").

А теперь самое интересное – 1С обещали в 8.3.5 сделать возможность подстановки текста смс. А что это значит? Сейчас они не возвращают никакой объект, хотя функция Uri.parse() – возвращает объект с которым можно работать. В случае смс – туда можно отправить текст смс. А значит, наверноеJ, в будущем – можно будет с этими объектами работать как в андроиде, т.е. добавить текст в почту и т.д.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. сергей сергей (sergei198821) 25.03.14 18:07
Доброе время суток! Случайно не знаете команды для работы со встроенной камерой на андроиде, и можно подключится к ней и выводить результат например в элемент "Картинка" ?
2. Дмитрий Шерстобитов (DitriX) 25.03.14 18:20
(1)
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Фото = Новый СредстваМультимедиа;
Если Фото.ПоддерживаетсяФотоснимок() Тогда
Данные = Фото.СделатьФотоснимок();
Если Данные = Неопределено Тогда Возврат КонецЕсли; //Фото не сделали
Сообщить(Данные.РасширениеФайла + " " + Данные.ТипСодержимого);
Фото = ПоместитьВоВременноеХранилище(Данные.ПолучитьДвоичныеДанные()); //Реквизит формы строковый, вынесен на форму и поставленно тип поля - картинка
Иначе
Сообщить("Данное устройство не поддерживает создание фото!")
КонецЕсли;
КонецПроцедуры
clev; unlstu; +2 Ответить 1
3. Ruslan (flyer) 26.03.14 07:54
для IOS как все это отработает? надо будет проверить.
4. Дмитрий Шерстобитов (DitriX) 26.03.14 11:58
(3) без понятия :) проверите и расскажите :)
5. Сергей Куликов (ksvd) 03.04.14 17:21
(2) DitriX, Попробовал - ошибка: Тип не определен (СредстваМультимедиа)
1С:Предприятие 8.3 (8.3.4.437)
Управление небольшой фирмой для мобильной работы (1.1.1.1)
Назначение использования = Мобильное устройство

Куда посмотреть?
6. Дмитрий Шерстобитов (DitriX) 03.04.14 18:57
(5)полный код ошибки дайте
7. Сергей Куликов (ksvd) 04.04.14 09:50
(6) DitriX, Вот

{Документ.Заказ.Форма.ФормаДокумента.Форма(223,15)}: Тип не определен (СредстваМультимедиа)
Фото = Новый <<?>>СредстваМультимедиа; (Проверка: Тонкий клиент)
8. Дмитрий Шерстобитов (DitriX) 04.04.14 11:36
(7) ksvd, Фото = Новый <>СредстваМультимедиа; (Проверка: Тонкий клиент)
Вот ошибка :)

Напишите этот кусок в контексте мобильного клиента:
#Если МобильныйКлиент Тогда
//А между ними вставьте тот код. Или отключите проверку тонкого клиента.
#КонецЕсли
9. Сергей Куликов (ksvd) 04.04.14 12:11
(8) DitriX, Спасибо! Ошибка при компиляции пропала, но и не заходит туда.
В этом коде говорит - Не мобильный клиент.
Назначение использования = Мобильное устройство - это недостаточно?

&НаКлиенте
Процедура Сфотографировать(ПараметрКоманды, ПараметрыВыполненияКоманды)
#Если МобильныйКлиент Тогда
Фото = Новый СредстваМультимедиа;
Если Фото.ПоддерживаетсяФотоснимок() Тогда
Данные = Фото.СделатьФотоснимок();
Если Данные = Неопределено Тогда Возврат КонецЕсли; //Фото не сделали
Сообщить(Данные.РасширениеФайла + " " + Данные.ТипСодержимого);
Фото = ПоместитьВоВременноеХранилище(Данные.ПолучитьДвоичныеДанные()); //Реквизит формы строковый, вынесен на форму и поставленно тип поля - картинка
Иначе
Сообщить("Данное устройство не поддерживает создание фото!")
КонецЕсли;
#Иначе
Сообщить("Не мобильный клиент!")
#КонецЕсли
КонецПроцедуры
10. Дмитрий Шерстобитов (DitriX) 04.04.14 12:59
(9) ну так код надо запускать на телефоне :)
11. Сергей Куликов (ksvd) 04.04.14 13:13
(10) DitriX, Пятница - хороший день. Но все-таки
Вот например в этом случае у меня на смартфоне заголовок кнопки = 2
&НаКлиенте
Процедура ПриОткрытии(Отказ)
#Если МобильныйКлиент Тогда
Элементы.Сфотографировать.Заголовок = "1";
#Иначе
Элементы.Сфотографировать.Заголовок = "2";
#КонецЕсли
КонецПроцедуры
12. Сергей Куликов (ksvd) 04.04.14 15:29
Что-то я в справке не нашел
#Если МобильныйКлиент Тогда
есть
#Если МобильноеПриложениеКлиент Тогда

с ним код выполняется, но до
Данные = Фото.СделатьФотоснимок();
на это говорит "В 1С:Enterprise произошла ошибка" и программа закрывается
13. Дмитрий Шерстобитов (DitriX) 04.04.14 16:21
(12) действительно, по памяти писал, ошибся.
Вылеты бывают, на некоторых вообще ничего не происходит. Попробуйте поменять версию мобильного приложения на более новую или старую. Или на другом устройстве попробуйте.
14. Дмитрий Гостищев (Dimon93dimon) 07.04.14 18:50
(12) ksvd, попробуй сначал проверять, поддерживает ели устрйоство фотоснимок
# Если МобильноеПриложениеКлиент  Тогда	
		Если СредстваМультимедиа.ПоддерживаетсяФотоснимок() Тогда
			Хранилище = СредстваМультимедиа.СделатьФотоснимок();
	Иначе
			Сообщить("На данном устройстве не поддерживается фотосъемка!");
		КонецЕсли;
		
	# КонецЕсли 
...Показать Скрыть
15. Сергей Куликов (ksvd) 08.04.14 09:38
(14) Dimon93dimon, Так в примере такая проверка есть.
На двух HTC проверял разных. Версию приложения еще попробую поменять
16. Дмитрий Шерстобитов (DitriX) 08.04.14 11:51
(15) проверка указывает на возможность, а не на то, что фото 100% сделается.
У нас на ТСД - проверку тоже проходит, но фото не делает, т.е. как будто ничего не происходит
17. Юрий Лазаренко (TitanLuchs) 11.04.14 16:57
А 1С уже штатно позволяет отсылать СМСки со смартфонов? Что-то я отстал от жизни...
18. Дмитрий Шерстобитов (DitriX) 11.04.14 17:49
19. Сергей Куликов (ksvd) 24.04.14 17:45
Только руки дошли проверить на другой платформе. Дело было в ней. На 8.3.4.17 все работает
20. Seeker Seeker (Seeker) 29.10.15 06:29
добрый день,
А вы не знаете как проиграть выбранную мелодию?
21. Seeker Seeker (Seeker) 29.10.15 12:39
получился вот такой код:

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
	НовВз.Действие = "android.intent.action.VIEW";
	НовВз.Данные = "file:///storage/sdcard0/music/beep.mp3";
	НовВз.Тип = "audio/*";
	НовВз.Категория = "android.intent.category.DEFAULT";
	НовВз.Запустить(Истина);
...Показать Скрыть


НО, при исполнении такого кода, открывается проигрыватель и мелодия начинает играть.
Мне же необходимо что бы мелодия проигралась без открывания проигрывателя, так скажем в фоне.
22. Дмитрий Шерстобитов (DitriX) 29.10.15 18:14
(21) Seeker, ну тогда только через утилиты. По другому не вижу вариантов.
23. Seeker Seeker (Seeker) 30.10.15 07:27
(22) DitriX, через какие утилиты можно по подробней?
24. Дмитрий Шерстобитов (DitriX) 30.10.15 12:27
25. Erutan Revol (erutan) 30.06.16 12:26
Здравствуйте!
Не могли бы Вы дать небольшой совет.
пишу следующее

&наклиенте
процедура сообщитьконтакты(команда)
мк=новый менеджерконтактов;
выборка=мк.найтиконтакты();//без параметров - чтобы веонуть всех
для каждого стр из выборка цикл
сообщить (стр.имя);
конец цикла;
конецпроцедуры
...Показать Скрыть


Возвращает ничего (количество 0)
чтяднт?

Спасибо.
26. Дмитрий Шерстобитов (DitriX) 30.06.16 17:45
(25) erutan, платформа для разработчиков стоит?
27. Erutan Revol (erutan) 01.07.16 00:54
(26) DitriX, конкретно это тестировал на тестовой сборке на "живом" телефоне.

Платформа для разработчиков - это где подгружается xml-файл с веб-сервера? Разворачивал на виртуалке, но что-то с отладкой мобильного приложения не разобрался. Вечером попробую еще подумать.
28. Erutan Revol (erutan) 02.07.16 08:16
(26) DitriX, получилось как-то вот так

&НаКлиенте
Процедура СообщитьКонтакты(Команда)
	#Если МобильноеПриложениеКлиент Тогда
	МК = Новый МенеджерКонтактов;
    //ЛокальныеКонтакты = МК.ПолучитьЛокальнуюУчетнуюЗаписьКонтактов();
	выборка=МК.НайтиКонтакты();
	для Каждого стр из выборка цикл
		попытка
			текст=строка(текст)+" "+строка(мк.ПолучитьКонтакт(стр).ДанныеКонтакта.Имя);
		исключение
		конецпопытки;
	конеццикла;
	сообщить(текст);
	//сообщить(выборка.Количество());
	#КонецЕсли
КонецПроцедуры
...Показать Скрыть


Что меня печалит: если не делать попытка .. исключение .. конецпопытки, падает на строке "без имени", крича, что не объектный тип. То есть если у контакта имя не введено (не заполнено) - к этому полю вообще обратиться не выходит. Страннота.
29. Дмитрий Шерстобитов (DitriX) 03.07.16 22:09
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа