IE 2018
0. DitriX 2786 02.11.14 04:14 Сейчас в теме

Acode tools - расширение возможностей мобильной платформы 1С (Android)

Не хватает возможностей в мобильной платформе 1С?
Надо push сообщения, логи, zip, ftp, работа с nfc и bluetooth сканерами в режиме "внешнего события"?
Или, может, хотите исполнить произвольный код андроида с передачей параметра из 1С и получением обратно?
Тогда Вам сюда.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. vano-ekt 1110 09.11.14 23:00 Сейчас в теме
2. amon_ra 2 10.11.14 00:58 Сейчас в теме
Наконец-то появилась статья! :) Ждал ее появления с нетерпением после конференции)
3. Montecrizto 98 10.11.14 03:45 Сейчас в теме
Например, давайте решим задачу ввода некой строки. Или количества. Видь те формы, которые дает 1С для решения этой задачи – вообще не подходят.
4. DitriX 2786 10.11.14 07:40 Сейчас в теме
7. v.a.ryag 35 10.11.14 11:53 Сейчас в теме
(3) Montecrizto, тоже ненадолго завис пытаясь понять что такое "Видь"))
За статью большой + !!! Действительно всех этих вещей пока очень не хватает в мобильной платформе, равно как и гибкой настройки форм - что крайне необходимо при использовании мобильного приложения (например меню в виде плитки я лично реализовывал через "одно место" - в итоге все равно форма получилась чуть шире экрана и при движении пальцем немного прокручивается)
5. kser87 1669 10.11.14 10:27 Сейчас в теме
Потрясающая статья! Очень полезная!
6. PiccaHut001 10.11.14 11:28 Сейчас в теме
8. dablack 10.11.14 12:06 Сейчас в теме
Я ждал этого больше года!!! НО, у меня ни как не получается подключить ChipeLab 1560, вроде все делаю как надо, перевел сканер в режим SPP Slave (проверил программой типа BT SPP terminal - в ней все ок, штрихи читает), в 1с на кпк в списке показывает BT cканер, но пытаюсь подключиться пишет "Ошибка выполнения 0". Подскажите плиз куда можно капнуть, очень ждал Ваш функционал и тут ах... Спасибо.
10. DitriX 2786 10.11.14 13:28 Сейчас в теме
(8) dablack, ну мы тестировали на 1660. Список активных сопряжений выводит?
(9) если мы даже будем продавать по 1000 на каждого программиста, то этот функционал окупит себя с первого клиента, так как добавляет много доп работы программисту 1с.
Но мы пока про это все не думаем.
12. dablack 10.11.14 16:12 Сейчас в теме
(10) Да, выводит, а при нажатии "подключить" вываливает сообщение с MACом и "Ошибка выполнения 0". А сканер нужно перевести в SPP Slave или SPP Master? Я когда переводу в Slave, то КПК нормально его видит, а когда в Master - то ни как не могу подключить сканер к КПК (пишет, что не верный пин или пароль). Очень надеюсь, получиться получать ШК в 1с.
9. V_V_V 10.11.14 13:21 Сейчас в теме
Прикольно. Пригодится.
Надеюсь, на платную основу нет мыслей переводить? :)
11. dj_serega 356 10.11.14 16:10 Сейчас в теме
DitriX, Вы красавчик!!! Премию бы Вам выдать.
13. DitriX 2786 10.11.14 16:37 Сейчас в теме
(11) уже получил премию на конференции инфостарта :)
(12) а какой пин вводите? Введите 1234 на смарте и на терминале. Или 0000.
14. dablack 10.11.14 16:54 Сейчас в теме
(13) немножко повторюсь: у меня без проблем сканер подключается к КПК в режиме BT Slave (при этом 1С с ACODE сканер видит, но не подключает), а в режиме BT Maser я не могу подключить сканер к КПК, у меня даже не спрашивает PIN а сразу выдает сообщение, что не верный PIN или пароль. Но я не знаю, мне может быть и сто лет не нужен режим BT Master т.к. ACODE с таким режимом не работает (это я и хочу выяснить).
15. DitriX 2786 10.11.14 17:22 Сейчас в теме
(14) я вам тоже не отвечу, увы. Я оба сканера и моторолу и сайферлаб - забыл в питере :)
Давайте тогда методом тыка пытать все это.
Для начала - выключите сканер, но оставьте его в списке сопряженных устройств и оставьте включенный BT.
Попробуйте еще раз получить список сканеров - он у вас должен появиться в списке.
Нажмите подключиться - должа выпасть ошибка 6. Т.е. ошибка устройства. Если ошибка 0, то это ошибка в самом плагине.
Напоминаю, все это делается при выключенном сканере.

Далее - сформируйте лог при помощи программки logcat, ссылку на нее я указал в статье - сделайте отбор по acode - меню - отправить - как приложение и отправьте себе на почту или куда нибудь, потом прикрепите файл сюда.
16. dablack 10.11.14 18:32 Сейчас в теме
(15) Спасибо Вам большое за советы. Проблема видимо в блютузе конкретных КПК (Fly, Explay хотя в режиме HID с этими аппаратами проблем не было), взял Samsung и вуаля! сканер в Режиме BT Slave из 1с подключился (только пока не совсем понял реализацию сканирования, кнопку "обновить" надо нажать чтобы увидеть что отсканировано?, а по типу "Внешнее событие" как делать?). Logcat поставил, но он только под рутом работает, попозже попробую снять логи Fly и Explay почему они заразы не хотят работать. Еще раз большое спасибо за вашу разработку!
17. DitriX 2786 10.11.14 18:46 Сейчас в теме
(16) увы, 1с не поддерживает внешние события, так что по другому никак. По крайней мере - пока что.
Но, можно подключить обработчик ожидания, вот как с терминалами сделано и тогда все будет норм.
18. flyer 207 11.11.14 14:33 Сейчас в теме
классная разработка однозначно что то подобное начинал делать но бросил. такая вещица мне сейчас на google play нужна к моим программам но у вас политика другая вы ее там размещать не будете.
19. DitriX 2786 11.11.14 15:00 Сейчас в теме
(18) если держать ее там, то это значит что надо поддерживать кучу вариантов апи, т.е. версионность, а это слишком сложно.
Проще в конфу добавлять их и все. 3 метра особой погоды не сделают, либо где то у себя ее выложить и оттуда устанавливать.
20. dablack 12.11.14 16:37 Сейчас в теме
(19) Продолжил выяснение причин почему у меня не подключаются сканеры на ряде устройств. Сделал лог с помощью CatLog и вот, что увидел при попытке подключения :
11-12 17:23:17.561 W/System.err(482): java.lang.SecurityException: Need BLUETOOTH_ADMIN permission: Neither user 10084 nor current process has android.permission.BLUETOOTH_ADMIN.
Какая то у меня проблема с правами. Хотя на форумах по этой проблеме пишут, что надо править в манифесте андроид приложения.
p.s. устройства на которых не работает объединяет то, что она на Adroid 4.2.2. Устройство на котором Adroid 4.1.2 - все работает.
Прикрепленные файлы:
2014-11-12-17-23-41.txt
21. DitriX 2786 12.11.14 18:07 Сейчас в теме
(20) спасибо, скоро обновим.
22. dablack 12.11.14 18:09 Сейчас в теме
(21) Вам спасибо! Буду очень ждать обновления.
29. dablack 17.11.14 14:29 Сейчас в теме
(21) А когда примерно можно ждать обновления с исправленным подключением сканера?
Заметил еще одну проблему: если форма, в которой работает ОбработчикОжидания получающий каждую 1сек. штрихкоды открыта около 8 минут то мобильное приложение виснет, а потом просто закрывается. Поставил 3 секунды - зависло примерно через 24 минуты.

30. DitriX 2786 17.11.14 15:26 Сейчас в теме
(29) сейчас допиливаем новый функционал и выложим.
На счет вылета - какая версия платформы?
И пробовали ли вы переподключать обработчик каждые 8 минут? Это конечно через Ж, но что поделать...
31. DitriX 2786 17.11.14 15:32 Сейчас в теме
(29) и посмотрите логкат, может там хоть что то попадает туда?
32. DitriX 2786 17.11.14 15:52 Сейчас в теме
(29) Да, по ходу нашел ошибку :) Точнее - очередной прикол 1с, хотя, с другой стороны - вызывать интенты в цикле - тоже не совсем верно.
&НаКлиенте
Процедура АвтоОбновление(Команда)
	ОтключитьОбработчикОжидания("Обновить");
	ПодключитьОбработчикОжидания("Обновить",1,Ложь);
	УтилитыACODEКлиент.ТоастСообщение("Подключен обработчик опроса сканера раз в секунду");
КонецПроцедуры

&НаКлиенте
Процедура Обновить()
	Сервис = Новый Массив;
	ПараметрыДанных = Новый Соответствие;
	ПараметрыДанных.Вставить("Service","BTReader");
	ПараметрыДанных.Вставить("Action","Read"); 	
	Сервис.Добавить(ПараметрыДанных); 
	//МассивСканеров = УтилитыACODEКлиент.ВыполнитьИнтенты(Сервис);
	МассивСканеров = УтилитыACODEСервер.ПредопределенноеПодключение(Сервис);
	Если МассивСканеров = Неопределено Тогда Возврат КонецЕсли;
	Для Каждого Стр Из МассивСканеров Цикл
		Нов = Объект.Штрихкода.Добавить();
		Нов.Штрихкод = Стр;
	КонецЦикла;
КонецПроцедуры
Показать


Обратите внимание - вызов надо делать через сервер, а не клиент :)
33. dablack 17.11.14 17:12 Сейчас в теме
(32) Еще раз спасибо! Ближе к ночи смогу попробовать побороть проблему с вылетами.
34. dablack 17.11.14 19:14 Сейчас в теме
(32) Проверил, после 8 минут появляется сообщение: "Ошибка выполнения (утилиты) 2". Но главное, что ни чего не вылетает и убрав это сообщение можно след. 8 минут работать :) Как вариант в принципе все равно можно будет попробовать через 8 мин перезапускать обработчик.
Кстати такой вариант, наверное через одно место но все же: есть такой стандартный обработчик ПодключитьОбработчикSMSСообщений("ИмяПроцедуры"), а нельзя ли как нибудь в него с помощью андроид приложения эмулировать отправку смс, но в котором будет шк? Вот и был бы аналог внешнего события.
35. DitriX 2786 17.11.14 19:16 Сейчас в теме
(34) подумаем. Спасибо за идеи. Такой же обработчик есть и сканирования штрихкодов. Вот сейчас думаем на эту тему.
А эта ошибка один раз появляется? А то у меня через интенты 1С зависала через минуту, а через сервер - я тестировал пол часа и было норм.
37. dablack 17.11.14 19:39 Сейчас в теме
(35) Ошибка (с одинаковым содержанием) у меня появляется каждый 8 мин, закрыл и продолжил дальше сканировать. А вот то, что у вас через сервер не виснет и не выдает ошибок странно, а период обработчика ожидания какой ? 1 сек.?
36. Azathtot 17.11.14 19:18 Сейчас в теме
(34) dablack, Спасибо за идею. Разослать броадкаст о якобы приходе SMS не сложно,но есть ненулевая вероятность, что у других программ, читающих SMS от этого "снесет крышу".
38. dablack 17.11.14 19:42 Сейчас в теме
(36) Azathtot, У меня например нет на складских КПК других приложений кроме 1С :)
39. Azathtot 17.11.14 19:45 Сейчас в теме
(38) dablack, Ага, а стандартного Messages тоже нет? :) Вроде нашли способ, сейчас буду разбираться. День-два нужно.
40. dablack 17.11.14 19:57 Сейчас в теме
(39) Azathtot, точно, есть, не подумал про него. Удачи!
49. Azathtot 20.11.14 20:33 Сейчас в теме
(40) dablack, Собственно, решили мы проблему. Сделал через SMS механизм. DitriX на днях думаю выложит конфигурацию
53. dablack 21.11.14 15:06 Сейчас в теме
(49) Azathtot, Очень рад, что идея пригодилась. Жду с нетерпеньем заказанных у вас А401 и А420.
А проблему, что я описывал выше ( java.lang.SecurityException: Need BLUETOOTH_ADMIN permission: Neither user 10084 nor current process has android.permission.BLUETOOTH_ADMIN) не удалось пока решить в этом обновлении?
54. DitriX 2786 21.11.14 16:13 Сейчас в теме
(53) обновления еще не было. Сейчас уже заканчиваю, скоро появится
55. CyberCerber 216 25.11.14 08:32 Сейчас в теме
(54) а что ожидается в новой версии, не подскажите?
56. DitriX 2786 25.11.14 14:24 Сейчас в теме
(55)
1. Работа с графиками (живыми, т.е. растягивать можно и т.д.)
2. Глобальное оповещение для 1С с сервера
3. Переделанный механизм чтения нфц и сканеров, теперь вызывается событие по факту сканирование и при этом, если после включения сканирования 1С свернуть, то после скана - окно 1с всплывает и отрабатывает событие скана
4. Та и еще там всякие плюшки.

Но это будет доступно для общественности не раньше чем через месяца два или три, сейчас люди тестируют, исправляем баги.
23. WKBAPKA 193 13.11.14 10:31 Сейчас в теме

Не хватает возможностей в мобильной платформе 1С?
Надо push сообщения, логи, zip, ftp, работа с nfc и bluetooth сканерами в режиме "внешнего события"?
Или может хотите исполнить произвольный код андроида с передачей параметра из 1С и получением обратно?


используйте Eclipse или Android Studio и изучайте язык программирования Java :)
omegus; OLEG4120; eugeniezheludkov; antonbezrukov; ZLENKO; Persempre; ya.Avoronov; Anixx; DigitalMan; dour-dead; baton_pk; sorb; +12 Ответить
24. DitriX 2786 13.11.14 14:10 Сейчас в теме
(23) есть шанс не вернуться на 1с :)
Probot1c; el-gamberro; omegus; Anixx; ezhik_2000; +5 Ответить
74. ZLENKO 06.02.15 15:47 Сейчас в теме
(23) WKBAPKA, "используйте Eclipse или Android Studio и изучайте язык программирования Java :)"

IntelliJ IDEA вместо Eclipse или Android Studio
25. abryazgin 14.11.14 14:05 Сейчас в теме
А можно плагин написать, который бы брал фотографию, полученную с камеры средствами 1С и преобразовывал в нужный формат, чтобы уменьшить объем передаваемых в центральную базу данных?
26. DitriX 2786 14.11.14 14:40 Сейчас в теме
(25) можно. Но разве не проще сразу делать фото нужного качества?
27. abryazgin 14.11.14 18:09 Сейчас в теме
Возможно и проще. Есть 2 но.
1) 1С не выдает фото нужного качества. Настроек я не нашел.
2) Нужна еще картинка просмотра, чтобы форма не висла. У меня сейчас при добавлении на форму 5-ти полей картинки платформа вылетает (если 4, то форма открывается нормально). Когда переделал на отображение картинок в Поле html, то с каждой новой картинкой все больше проявляются подвисания отображения этого поля. В итоге к 5 картинкам платформа не вылетает, но работать невозможно ). Каждая картинка получена с камеры и весит порядка 1,5 мб.

Если есть вариант как сделать картинку и просмотр без применения кувалды, то хочу его знать )))
У меня на тестируемом девайсе не получилось поместить фотографию сделанную через вызов запустить приложение.
Делал по примеру "Как сделать фото (видео) в любом качестве?" из другой вашей публикации (http://infostart.ru/public/301851/). Картинку получаю, но поместить ее внутрь базы 1С не получилось.
В с этим вопросом тоже хотел бы разобраться.

Но все равно это не решение, так как при использовании получения фото из 1С требуется меньше кликов по экрану (ровно один, против 2-х через запустить приложение: сделать фото, нажать вроде "ок", чтобы закрылось окно просмотра фото и данные можно было забирать в 1С).
28. DitriX 2786 15.11.14 13:53 Сейчас в теме
(27) а как вы убедитесь, что фото было сделано верно? Т.е. не смазано и т.д.?
По поводу той статьи - что именно у вас не получилось? Создать двоичные данные и поместить в хранилище?
41. abryazgin 18.11.14 14:18 Сейчас в теме
(28)
1) В предполагаемом приложении должен быть предпросмотр, там можно определить, если фото сделано плохо. Но я так понял, что 1с после нажатия кнопки сфотографировать еще фокус потом настраивает сама (на моем устройстве).
2) Да не получилось получить двоичные данные, чтобы в РС внести.
Что пробовал
				
ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.jpg";
НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
Если НовВз.Запустить(Истина) <> 0 Тогда
        //ЗапуститьПриложение(ФайлКартинки); -- работает

        //помещение во временное хранилище работает
        ПутьКВРемХран = "";
        ПоместитьФайл(ПутьКВРемХран, ФайлКартинки,,ложь, УникальныйИдентификатор);

        //получить двоичные данные не получается ни напрямую из файла
	Попытка 
		Данные = Новый ДвоичныеДанные(ФайлКартинки);
	Исключение
		Сообщить(ОписаниеОшибки()); //Ошибка конструктора, недопустимое значение параметра
	КонецПопытки;	
	Попытка 
	    Данные = Новый ДвоичныеДанные(ПутьКВРемХран);
	Исключение
		Сообщить(ОписаниеОшибки()); //Файл не обнаружен "e1cib\tempstorage\..."
	КонецПопытки;	
КонецЕсли;
Показать
42. DitriX 2786 18.11.14 14:40 Сейчас в теме
(41)
ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.jpg";
НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
Если НовВз.Запустить(Истина) <> 0 Тогда

    Данные = Новый ДвоичныеДанные(ФайлКартинки);
    Хр = Новый ХранилищеЗначение(Данные);
КонецЕсли;


Вместо Хр - может быть реквизит справочника с типом ХранилищеЗначений.
Ну естественно надо распределить клиент и сервер, это я так, по памяти написал.
43. dablack 18.11.14 18:21 Сейчас в теме
(42) а вас не затруднит сообщить мне в приват, свои контакты, я пытаюсь отправить вам сообщение... и безрезультатно. Я бы хотел по ТСД ACode уточнить информацию.
44. DitriX 2786 18.11.14 18:42 Сейчас в теме
45. abryazgin 19.11.14 10:59 Сейчас в теме
(42)
У меня не выполняется строка
    Данные = Новый ДвоичныеДанные(ФайлКартинки);

Говорит, что "Недопустимое значение параметра (параметр номер '1')".

Пробовал выполнять получение двоичных данных как на сервере так и на клиенте.
Платформа 8.3.5.1186.

Точно такой способ получения двоичных данных должен работать на мобильном приложении? Есть примеры на какой платформе у вас точно работает?
46. DitriX 2786 19.11.14 15:21 Сейчас в теме
(45) не так
Данные = Новый ДвоичныеДанные(ФайлКартинки);

Потому что у вас:
ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.jpg";

а это uri, а не путь к файлу. Значит в вашем случае:
Данные = Новый ДвоичныеДанные( "/sdcard/Download/FotoTestFrom1C.jpg");
poligraff; abryazgin; +2 Ответить
50. abryazgin 21.11.14 11:16 Сейчас в теме
(46) Спасибо, огромное. Так работает.

Пытаюсь понять как работать с URI.
Вот, например, у меня есть выбор файла из галереи. Оттуда получаю uri "content://media/external/images/media/19991"
Если бы это был объект, то можно было бы применить метод uri.getPath()
Но 1С возвращает строку.
Как в данном случае можно определить путь до файла, который 1С сможет понять?
52. DitriX 2786 21.11.14 12:24 Сейчас в теме
(50) смотрите функцию выбора файлов конфигураторе этой конфигурации, там используется функция:
// Функция предназначена для получения прямого линка, на основе контента.
// Актуально для Андриод 4.4 и старше.
// Доступность: Клиент;
//
// Параметры:
//  Путь  - Строка - Путь с конткнтом
//
// Возвращаемое значение:
//   Соответствие, Неопределено   - Если ответ = Неопределено, то была ошибка.
&НаКлиенте
Функция ПолучитьUriИзContent(Путь)  Экспорт
	СтруктураСообщения = УтилитыACODEСлужебный.СформироватьСтруктуруДляПолученияUri(Путь);
	Возврат ВыполнитьИнтенты(СтруктураСообщения);
КонецФункции
Показать

Вот она и возвращает нормальный URI
47. CyberCerber 216 20.11.14 08:25 Сейчас в теме
Спасибо за ваши публикации по мобильной платформе!
С каждым разом они становятся все интересней и полезней.

Подскажите, пожалуйста... Скачал xml файл по пути "http://acode.pro/~mu". Создал в сборщике моб приложений apk файл, закидываю его на планшет, устанавливаю, запускаю. Появляется окно запуска 1С, потом иконка загрузки, и все на этом зависает. В чем может быть проблема?
48. DitriX 2786 20.11.14 14:53 Сейчас в теме
(47) ну обычно это бывает есл на arm установить образ x86
51. Azathtot 21.11.14 11:41 Сейчас в теме
"Дернуть" сервис ContentTool утилит. Передаете ему параметр Uri (строка),
получаете в Data путь.
57. Программулькин 277 26.11.14 05:38 Сейчас в теме
Сижу на работе, читаю с большим интересом эту статью. В это время заходит работник отдела кадров. Задаёт вопрос: "Что такое интересно читаешь?"
Я отвечаю, что мол вот у 1 с появились новые возможности, что бла...блааа.. она такая вся модная, вот до мобильников добралась, может тебе WI-FI включить, сказать что за мобилка у тебя, какая ОСь стоит, и так далее, бла...блаа...(читаю некоторые выдержки из статьи, напрочь забыв, что передо мной не ITшник, а кадровик ). Она на меня смотрит своими большими круглыми глазами, хлопает несколько раз своими длинными ресницами, и выдаёт сногсшибательную фразу: "А зачем это 1с надо? Ведь у неё и так своих проблем хватает!"...под столам.
FireFox_Manager; arteast; RuzAleks; CyberCerber; sCHTASS; PolAlex2; DitriX; +7 Ответить
58. DitriX 2786 26.11.14 11:45 Сейчас в теме
(57) у нее случаем не iPhone? А то обычно любители яблок так отвечают - если чего нет, то это не надо :)
59. Vo-Va 124 18.12.14 02:37 Сейчас в теме
Можно ли как то использовать эту утилиту для организации печати на мобильный принтер?
60. DitriX 2786 18.12.14 18:10 Сейчас в теме
(59) можно, но это индевидуально, под заказ.
61. CyberCerber 216 13.01.15 09:22 Сейчас в теме
Если кому нужно, вот как послать Broadcast сообщение с помощью BeanShell.

Код в 1С:

 Сервис = Новый Соответствие;
	Сервис.Вставить("Service","SendBroadcast");
	Сервис.Вставить("ActionName",ИмяДействия); // Здесь передаем имя выполняемого действия
        УтилитыACODEКлиент.ВыполнитьИнтенты(Сервис);


Создаем файл SendBroadcast.bsh, кладем в папку с плагинами, перезагружаем сервисы. В сам файл нужно вставить код:

//Внутренние пакеты модули.
import ru.acode.helper.instances.ScriptHelper;
import ru.acode.helper.ServiceDescriptor;
import ru.acode.helper.ServiceDescriptor.MethodParamType;
import ru.acode.helper.ServiceDescriptor.MethodParam;
import ru.acode.helper.Services;
import ru.acode.utils.ValueMap;
 
// Импорт из пакетов Android
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.R;
import android.content.Context;
import android.content.Intent;

ValueMap result = new ValueMap();
result.put(Services.INVOKE_RESULT, Services.E_OK);

initializer = new ScriptHelper.Initializer() {
  onInit(descriptor) {
      descriptor.setName("SendBroadcast"); //Имя сервиса. Именно по нему мы и обращаемся к этому плагину из 1С
      descriptor.params().add(new MethodParam("ActionName",MethodParamType.string,true)); // Обязательный строковый параметр
  }
};

executor = new ScriptHelper.Executor() {

  onExecute(Context context, ValueMap params) {
    actionName = params.getString("ActionName");
    Intent intent = new Intent();
    intent.setAction(actionName);
    context.sendBroadcast(intent);
    return result;
  }
};

helper = new ScriptHelper(initializer,executor);
Показать


Это самый простой пример, без передачи типов, доп данных. Просто мне пока больше не нужно было.
А зачем это вообще нужно? Сейчас 1С может только отправлять Интенты с передачей управления другому приложению. Броадкасты же могут запустить какие-то процессы на устройстве в фоновом режиме, не прерывая работы самой 1С. Я так сделал запись звука в фоне.
62. DitriX 2786 13.01.15 12:00 Сейчас в теме
(62) в новой версии утилит - мы научили 1С ловить броэдкасты. :)
63. CyberCerber 216 13.01.15 13:00 Сейчас в теме
(62) ловить - это тоже круто, но пока мне еще не понадобилось.

А еще такой вопрос... Не приходилось реализовывать простейшую рисовалку в мобильной 1С? Хотя бы просто на существующем рисунке тапами поставить пометки?
В HTML5 есть отличный объект Canvas, но в 1С 5-я версия не поддерживается... :-(
64. DitriX 2786 14.01.15 12:34 Сейчас в теме
(63) - что значит рисовалка? Открыли фото для редактирования и рисуйте :)
Смотрите статью про интенты.
65. DeniNikitin 31 20.01.15 16:26 Сейчас в теме
Здравствуйте!

Подскажите, а можно реализовать запуск утилит при загрузке конфигурации, и остановку при выходе из конфигурации? А то в памяти висит постоянно и ресурсы есть!!!
66. DitriX 2786 20.01.15 18:40 Сейчас в теме
(65) Ок, учли предложение. Реализуем в будующих версиях :)
111. DeniNikitin 31 27.03.15 16:05 Сейчас в теме
(66)
С выходом 8.3.6, ещё стоит надеятся на запуск и остановку процесса Acode?

Подскажите в чём может быть дело? Приложение свёрнуто, отправляю push сообщение, на одном телефоне высвечивается при свернутом и автоматически открывается приложение, а на других двух пока не подниму задачу не высвечивается!!!
112. DitriX 2786 27.03.15 20:24 Сейчас в теме
(111) уже сделали остановку и там еще пару моментов. Скоро будет обновление.
Вы про пуши от акоде? Или от 1С?
113. DeniNikitin 31 28.03.15 13:27 Сейчас в теме
114. DitriX 2786 28.03.15 14:21 Сейчас в теме
(113) щас будет обновление, там будем использовать мехаизмы 1с, что позволит по нажатию пуша открыть нужную базу и передать в нее данные.
А по вашей проблеме - опишите подробней, как вариант, проблема может быть в том, что вы на одном телефоне вызываете пуши с клиента, а на других - с сервера.
но в любом случае - если надо открыть приложение, то ждите обновлений и используйте 8.3.6 - все остальное это костыли
197. DeniNikitin 31 03.06.15 17:45 Сейчас в теме
(114)
Вызываю везде клиента, но на одном мобильном телефоне при свёрнутом приложении выскакивает пуш, а на другом при свёрнутом приложении не выскакивает, в чём может быть проблема? Приложение одно и код такой:
Путь = КаталогДокументов() + "/sound.mp3";
УтилитыACODEКлиент.ПроигратьЗвук("Ringtone",Путь);
УтилитыACODEКлиент.Вибрация(15);
PushДействие = "Set";
PushЗаголовок = "Новая заявка";
PushТекст = СокрЛП(Строка.Наименование) + " - " + СокрЛП(Строка.Количество);
PushОписание = "Оповещение";
PushИДСообщения = Ном;
PushНеВозможноУбрать = Ложь;
PushИконка = 2;
УтилитыACODEКлиент.ПушСообщение(PushЗаголовок,PushТекст,PushДействие,PushОписание,PushИДСообщения,PushНеВозможноУбрать,PushИконка);
Показать

Думал с обновлением что-то поменяется, но нет поведение такое же, проверял на трёх телефонах на двух не выскакивает пуш, на третьем без проблем!
67. pro1c@inbox.ru 169 21.01.15 13:54 Сейчас в теме
надо iOS!
те кто платит на iOS сидят!

а так все нормуль. костыли конечно, но на безрыбье....
68. DitriX 2786 21.01.15 17:29 Сейчас в теме
(67) Если надо, то можно и на iOS, только вот это уже не за бесплатно :)
69. AlxSch 19 28.01.15 14:26 Сейчас в теме
Спасибо автору публикации и всем из ACode за разработку и поддержку.
Может не совсем в тему, но просто эта ветка на мой взгляд одна из самых-самых по мобильной платформе.
Так вот когда стали переходить на 8.3.5 что пощупать все прелести AcodeTools, наткнулись на одной конкретной модели ТСД - при обновлении конфигурации (абсолютно любой) вылетает с ошибкой "Файл не является файлом базы данных data/data/com.e1c.mobile/files/gggggggg-gggg-gggg-ggggggggggggg/1cv8.1cd". Снимал копии через adb pull до и после - реально размер всех файлов в папке gggggggg-gggg-gggg-ggggggggggggg после обновления = 0. Убивает базу наповал.На 8.3.4 ничего подобного не было.
Как оказалось, на аппарате не стояла карточка, все было в памяти аппарата. Вылечилось установкой SD карты и переносом мобильной платформы на нее.
70. DitriX 2786 28.01.15 18:14 Сейчас в теме
(69) отлично. Рад, что смог помочь.
71. efin 04.02.15 16:36 Сейчас в теме
DitriX, от меня тоже спасибо за такую замечательную разработку! Правда, от нее мне нужны были только вибро, DeviceID и Push.

Push победить не удалось. По инструкции с сайта GOOGLE CLOUD MESSAGING (GCM), и по примерам в вашей конфигурации, реализовали и настроили push-server, запросы к нему отправляются, но в ответ приходит что Error=InvalidRegistration (использовал наугад).

Я понимаю, что мобильное приложение должно тоже зарегистрироваться на GCM при установке (или первом запуске) и я как-то должен узнать id, которое имеет конкретный экземпляр установленного приложение и использовать его при отправке. Но я не знаю как.

Можете подсказать?
72. DitriX 2786 05.02.15 11:31 Сейчас в теме
(71) стоп, вы уточните что вы вообще делаете :)
Вы используете локальные пуш сообщения через утилиты, или же используете специальный софт для пуш сообщений?
Я не понимаю при чем тут GCM? Я про него не рассказывал :) А одна причина - почему, это потому что не известно будет - дошло сообщение до адресата или нет.
Вам в таком случае не сюда, а к примеру - вот сюда http://habrahabr.ru/post/213027/.

Будет намного проще, если вы опишите задачу и ее критерии, а я вам может смогу что-то посоветовать
76. efin 06.02.15 20:12 Сейчас в теме
(72) когда я увидел, что acode tools позволяют добавить функционал push, я, естественно, понял, что речь идет о возможности принимать и обрабатывать стандартные push-сообщения от GCM. Мобплатформа этого не умеет, и я надеялся, что ваши утилиты могут выступать приемником push'ей от GCM и ретранслировать их в мобильную платформу.

Отправка сообщений в GCM у меня реализована из десктопной 1С обычными POST-запросами. В терминологии Гугла эта часть называется у них сервером.

Задача простая - из основной 1С оповещать сотрудников о входящей информации, вне зависимости от того где и как они подключены и запущена или нет мобильная платформа.
77. DitriX 2786 07.02.15 01:09 Сейчас в теме
(76) тогда у вас два варианта - ждать 8.3.6 :) И то, проблема в GCM - нет увереннсоти что сообщение дойдет.
Или смотрите 8 урок про другой сервис, который гарантирует доставку и сообщает - успешна она или нет. И тут не надо никакой платформы 1С, но оно платное, но есть и бесплатное, вообщем смотрите видео, там все есть.
73. imoby 06.02.15 15:41 Сейчас в теме
Здравствуйте.

Подскажите, пожалуйста. В настройках ACODE есть функция принимать вызовы из локальной сети и она работает. Будет ли она работать, если устройство будет иметь статический внешний IP адрес? При обращении по внешнему ip адресу и порту 8090 выходит надпись "<Array xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Value xsi:type="Map"><pair><Key xsi:type="xs:string">Result</Key><Value xsi:type="xs:decimal">2</Value></pair></Value></Array>", то есть внешний IP виден в сети, но при попытке передачи события на сервер выходит "Ошибка выполнения (утилиты) 2"
75. DitriX 2786 06.02.15 20:10 Сейчас в теме
(73) Добрый.
Будет. //E_INVALID_PARAMS = 2;
Это ваша ошибка, как вариант - вы могли не указать ID устройства.
Проверьте через конфу, которая есть тут. Для этого пропишите на первой вкладке тестов утилит IP и ID устройства, ID можно получить в этой же конфе на вкладке Информация - Инфо, это длинное число (обычно отрицательное, но писать надо его с минусом, если оно есть)
78. imoby 07.02.15 10:20 Сейчас в теме
(75) я написал что в локальной сети работает, ID и IP устройства указаны. Но стоит мне поменять IP на внешний, пишется такая ошибка. Хотя внешний IP виден в сети и 8090 порт прослушивается. Просто хотел узнать, может у вас какое-то ограничение стоит, чтобы только в одной локальной сети принимать данные.
79. DitriX 2786 07.02.15 10:31 Сейчас в теме
(78)ну а вы этот порт пробрасывали через роутер на телефон?
у меня все работает и по внешке.
Причины не работы чаще всего две:
1. Тупые роутеры, у которых если делать коннект по вненему IP, который равен IP роутеру, они его форсят на себя и не пусают дальше, если вы находитесь в подсети роутера.
2. Люди просто забывают пробросить порт с роутера на иелефон, или же пробросили, но забыли установить фиксированный IP для телефона.
80. imoby 07.02.15 23:36 Сейчас в теме
(79) планшет с симкой со статическим IP-адресом без роутеров, если ввести его адрес и порт через браузер, то он виден, но сама утилита не может передать событие, пишет ошибка выполнения утилиты (2). Думал, может какое-то ограничение на подключение извне.
81. DitriX 2786 08.02.15 01:06 Сейчас в теме
(80) на симке - не проверял, может быть, всетаки это другой тип подключения.
Но если по вайфаю - то все ок. Мы подумаем над тем, можно ли эту проблему решить, если она есть, или не можем :)
82. ilyar 08.02.15 17:58 Сейчас в теме
Acode - суперская вещь, спасибо вам за это.
Я так понял что работа с FTP заключается в получении и отправки файлов. Это уже хорошо но если вот добавить возможность удалять/переименовывать/перемещать файлы ты будет супер. Если не сложно реализуйте пожалуйста в следующей версии.
Вопрос: Можно ли средствами BeanShell докрутить возможность удалять/переименовывать/перемещать файлы по FTP?
83. DitriX 2786 08.02.15 19:08 Сейчас в теме
(82) а чего бы и нет?
Создавайте свой сервис и описание его, и работайте с ним :)
Мы эо делаьть не будем, во всяком случае до выхода 8.3.6 - точно, ибо там это все может появится.
88. Azathtot 04.03.15 13:17 Сейчас в теме
(82) ilyar,
Вопрос: Можно ли средствами BeanShell докрутить возможность удалять/переименовывать/перемещать файлы по FTP?

да, можно. beanShell предоставляет вам возможность доступа ко ВСЕМ классам утилиты и соответственно android API.
Для работы с FTP в утилитах используется apache.commons.net, все классы которой вам доступны.
84. Zasranec0 9 24.02.15 15:07 Сейчас в теме
Не плохая разработка. Как узнать при открытии формы ориентацию экрана?
85. DitriX 2786 24.02.15 16:14 Сейчас в теме
(84) хороший вопрос :)
Для этого надо где то в константе его хранить. Первую ориентацю можно вычислить пр помощи особенностей устройств с программными кнопками управления (домой, назад, меню) ну а потом внести текущее положение в константу, а дельше, при первом повороте - просто писать в константу.
86. Zasranec0 9 25.02.15 12:03 Сейчас в теме
(85) А через утилиту, можно же как то состояние это у андройда узнать? Не вижу сложностей реализации этого. Или это надо самому допиливать ?
К примеру
 УтилитыACODEКлиент.ПолучитьДанныеОбУстройстве("state.wifi");


Как то можно там прописать ориентацию экрана что бы возвращало? Могу ли я допилить такую функцию? Если да, то был бы очень благодарен, если бы мне чуть-чуть подсказали где этот код редактируется.

Вот у меня запускается 1с, в этот момент открывается форма, в ней уже не понятно как расположить элементы. При первом повороте конечно же можно записать это делать в константу, но интересует именно при запуске командой узнать.
87. DitriX 2786 25.02.15 13:45 Сейчас в теме
(86) на днях ждем выхода 8.3.6, там появились новые функции работы с экраном. Пока она не выйдет - делать не будем, так как если оно уже будет сделанно там, то смысл его пилить тут.
А сделать вы это можете - для этого есть скрипты, пишите свой скрипт и получайте чаго хотите. Мы же специально систему плагинов сделали
89. solarisman 121 06.03.15 07:31 Сейчас в теме
Добрый день!

Разрабатываем приложение для ТСД на андроид (на мобильной платформе 1С), тестируем. Возникает одно довольно большое неудобство: при открытии формы для сканирования ШК приходится "тапать" в поле ввода, что крайне неудобно в режиме ТСД.

Можно ли при помощи данных утилит вызывать, допустим, событие нажатия кнопки, чтобы курсор вставал в поле ввода?
90. DitriX 2786 06.03.15 13:17 Сейчас в теме
(89) все зависит от ТСД :) Что у вас за ТСД?
91. solarisman 121 06.03.15 18:54 Сейчас в теме
Не совсем понимаю, какая разница. Даже пусть это будет смартфон с bluetooth-сканером (в режиме клавиатуры).

Суть чтобы наборщик не выполнял лишнее действие. Представляете, надо обработать 1000 строк в день, это 1000 кликов по экрану. Пусть даже 2 секунды на действие, полчаса в день тупо на клики.

При открытии формы в 1С даже при принудительной установке текущего элемента
ТекущийЭлемент = Элементы.Штрихкод

установки курсора не происходит, а при сканировании поле не заполняется.

Так же не помогает свойство "АктивироватьПриОткрытии", а при вызове метода "ВвестиТекст" в диалоговом окне курсор не устанавливается в поле

Может быть, в манифесте поправить/добавть свойства?
Я слишком поверхностно знаю Android, но при разработке простейшего приложения в Android Studio курсор устанавливается уже при открытии окна и кликать лишний раз не надо.
92. Azathtot 06.03.15 19:08 Сейчас в теме
(91) solarisman,
Вообще-то при работе утилит с БТ сканнером происходит 2 вещи, при сканировании
- расылка "СМС" с номера 04 c сосканированным кодом
- рассылка интента c action "ru.acode.control" и следующими параметрам Action - 2 (SCAN), Status - 0 (OK), Scanner - 4 (БТ сканнер), Data - баркод.
Вы можете принимать эти сообщения не используя никаких активных полей ввода
93. solarisman 121 06.03.15 19:14 Сейчас в теме
Если хорошо покопаться в платформе, то можно найти Layout с аким поисанием:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/formBaseLayout"
	android:layout_width="fill_parent"
 	android:layout_height="fill_parent"
  	android:padding="0dip">
  	<LinearLayout 
		android:id="@+id/formButtonBar"
    
		android:layout_width="match_parent"
    
		android:layout_height="wrap_content"
    
		android:layout_alignParentBottom="true"
    
		android:orientation="vertical">


    
  		<LinearLayout 
      
			android:layout_width="match_parent"
      
			android:layout_height="wrap_content"
      
			android:orientation="horizontal"
      
			android:background="@android:drawable/bottom_bar"
      
			android:paddingTop="5dip"
      
			android:paddingLeft="3dip"
      
			android:paddingRight="2dip"
      	
			android:paddingBottom="0dip">


      
			<LinearLayout android:id="@+id/formLeftBarSpacer"
        
				android:layout_width="0dip"
        
				android:layout_height="wrap_content"
        
				android:layout_weight="0.25"
        
				android:layout_gravity="left"
        
				android:orientation="horizontal"
        
				android:visibility="gone"
			/>

 
      
			<Button
        
				android:id="@+id/formNegativeButton"
        
				android:layout_width="wrap_content"
        
				android:layout_height="wrap_content"
        	
				android:layout_weight="0.5"
        
				android:layout_gravity="fill_horizontal"
        	
				android:textSize="18sp"
        
				android:visibility="gone" 
			/>

	
			<Button
			        android:id="@+id/formPositiveButton"
			        android:layout_width="wrap_content"
			        android:layout_height="wrap_content"
			        android:layout_weight="0.5"
			        android:layout_gravity="fill_horizontal"
			        android:textSize="18sp"
			        android:visibility="gone"
			/> 
     
      
			<LinearLayout 
				android:id="@+id/formRightBarSpacer"
        
				android:layout_width="0dip"
        
				android:layout_height="wrap_content"
        
				android:layout_weight="0.25"
       
				android:layout_gravity="right"
        
				android:orientation="horizontal"
        
				android:visibility="gone" 
			/>

  

		</LinearLayout>
  
	</LinearLayout>


</RelativeLayout>
Показать


Я полагаю, что это и есть оконная форма, в которую динамически (в зависимости от конфигурации) добавляются элементы

Вот только как заставить платформу курсор туда поставить?
94. solarisman 121 06.03.15 19:19 Сейчас в теме
Это понятно с БТ сканнером, статью я прочитал и с конифгурацией ознакомился. Но хотелось бы, чтобы приложение "взлетело" на любом устройстве с режимом ввода с клавиатуры. А вообще заказали вот такой аппарат для тестирования, ждем посылку. Он работает в режиме ввода с клавиатуры
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Системный аналитик
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Программист 1С
Казань
Полный день