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

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

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

Комментарии
95. Тимур Мансорунов (solarisman) 118 06.03.15 19:23 Сейчас в теме
Тут ведь есть еще один момент - подтверждение пользователем.

То есть, отсканировали - пользователь посмотрел - нажал "ОК" или скорректировал и потом нажал "ОК".
Например, если количество считывается из ШК. Чтобы скорректировать, ему опять придется сделать "тык" по экрану в форме и уже потом корректировать количество.
96. Тимур Мансорунов (solarisman) 118 06.03.15 19:30 Сейчас в теме
Есть еще вот такая штука, похожая на описание поля ввода, файл называется "uiedit.xml"

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

<com.e1c.mobile.UIEdit
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:scrollbars="vertical"
  android:gravity="left|top"
  android:inputType="textLongMessage|text|textNoSuggestions|textVisiblePassword"
  android:imeOptions="flagNoExtractUi|flagNoFullscreen"
  android:singleLine="true"
  >
</com.e1c.mobile.UIEdit>
Показать
97. Дмитрий Шерстобитов (DitriX) 2736 06.03.15 21:33 Сейчас в теме
(96) Давайте еще раз - сканирование в активное поле - это полный бред, который не подходит для решения реальных задач, пример - человек клацнул на ввод даты, или на таблицу, что вы будете дальше делать? Вешать везде обработчики событий и переводить активность? Ну реально :) Честно, мы так пробовали и если хотите сами попробовать - установите 8.3.4.17 и потестируйте, сами поймете бессмысленость этой затеи.
Это раз, а два - вы смотрели 8.3.6 и то, как там все сделано? Там вообще активность поля совсем не в тему. Поэтому - мы на эту тему не переживаем.
А три - без исходников 1С, я сомневаюсь что у вас что-то получится, а исходники - никто не даст. Можете написать еще одну заявку в 1С, будет уже 100500 заявка на эту тему :)

Но с другой стороны - у вас нет другого выхода, кроме как повторять все то, что ACODE разрабатывали на протяжении года (виртуальная клавиатура вам сможет помочь и т.д.)
А то что вы тут приводите - это xml описания стационарных форм, к примеру - форма создания и подключения базы, изменив тут что то, вы получите активность в той форме, а что дальше?
98. Тимур Мансорунов (solarisman) 118 06.03.15 23:37 Сейчас в теме
Не понял:
сканирование в активное поле - это полный бред, который не подходит для решения реальных задач

Вы приложение для "1C: WMS4" видели для Win CE? что значит бред? Вообще как бы не вижу смысл тут полемику разводить и разъяснять, что мы о разных вещах говорим, бизнес-задачи у всех разные.

Суть задачи не меняется - необходимо, чтобы при открытии формы 1С открывался диалог редактирования первого поля ввода.
Вопрос: можно ли это реализовать при помощи ACODE Tools?

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

Пробовал добавить "requestfocus" в описание поля ввода, не помогает. Видимо, что-то случилось :(
99. Дмитрий Шерстобитов (DitriX) 2736 06.03.15 23:41 Сейчас в теме
(98) то что было раньше - это не значит, что так правильно, просто тогда не было возможности сделать по другому. Именно поэтому, я, как "специалист", а если точнее - человек который запускал такую модель на реальном предприятии - говорю, что это НЕ работает. Увы.
Вы сами можете в этом удостоверится. Установите 8.3.4.17 и попробуйте там сделать то, что вы хотите, вы сразу увидите - что работать оно не будет.

Те задачи, которые описали вы - решаются по другому, как именно - я рассказал выше.

Активность поля может починить ТОЛЬКО 1С :) И все.
100. Тимур Мансорунов (solarisman) 118 06.03.15 23:42 Сейчас в теме
И да, 8.3.6 смотрел, подход совсем другой.
Более того, полно глюков, которые на "Testplatform@1c.ru" отправлены и якобы зарегистрированы, но в списке "bugreports" их нет (лично 1 ошибку нашел и отправил)

При вводе "Enter" даже завершения редактирования не происходит.. Ой, даже писать не охота про количество ошибок
101. Тимур Мансорунов (solarisman) 118 07.03.15 00:00 Сейчас в теме
В общем, бидапичаль, нанимаем андроид-программиста
Прикрепленные файлы:
102. Дмитрий Шерстобитов (DitriX) 2736 07.03.15 03:30 Сейчас в теме
(101) а что вы хотели от тестового релиза :) Скайп и поныне глючный, но нчего :)
105. Вадим Латышев (pro1c@inbox.ru) 167 10.03.15 11:34 Сейчас в теме
(102)
вот поэтому у нас такое ПО!
глючный - это нормально! ох, да...
106. Дмитрий Шерстобитов (DitriX) 2736 10.03.15 12:39 Сейчас в теме
(105) pro1c@inbox.ru, не понял - к чему это? Вы сравниваете "политический" релиз, который был выпущен спецом перед конференцией 1С с чем-то тем, на чем люди реально работают?
103. Тимур Мансорунов (solarisman) 118 10.03.15 09:56 Сейчас в теме
Плюс Вам в карму, все работает быстро и без сбоев
104. Дмитрий Шерстобитов (DitriX) 2736 10.03.15 11:19 Сейчас в теме
107. Тимур Мансорунов (solarisman) 118 10.03.15 12:42 Сейчас в теме
(104) Скачал, установил, протестировал ACODE tools, к этому
108. Дмитрий Шерстобитов (DitriX) 2736 10.03.15 12:43 Сейчас в теме
(107) solarisman, ну тогда - спасибо за отзыв :)
109. Денис Никитин (DeniNikitin) 31 20.03.15 14:49 Сейчас в теме
Здравствуйте!

Можно ли вашим функционалом сделать следующее:

1. При формировании push сообщения по его нажатию в трее открывать моё приложение?
2. Или хотя бы по нажатию на push сообщение в трее просто его закрывать, а не программно?

110. Дмитрий Шерстобитов (DitriX) 2736 20.03.15 16:38 Сейчас в теме
(109) в этом уже нет смысла, смотрите в сторону 8.3.6, там есть все описанные вами функции.
Нашим функционалом - нельзя, увы. И развивать именно этот функционал, уже не имеет смысла.
115. Сергей Апухтин (Zasranec0) 7 30.03.15 12:22 Сейчас в теме
DitriX, появилась возможность узнать из 1с ориентацию экрана при запуске ?
116. Дмитрий Шерстобитов (DitriX) 2736 30.03.15 13:00 Сейчас в теме
(115) че то я призабыл. Напомните - чем вас такой вариант не устраивает?
	Структура = Новый Структура("Высота, Длина, Ширина",0,0,0);
	#Если МобильноеПриложениеСервер Тогда
		Экран = ПолучитьИнформациюЭкрановКлиента()[0];
		
		Структура.Вставить("Высота",Экран.Высота);
		Структура.Вставить("Длина", Окр(Экран.Высота/Экран.DPI*2.54));
		Структура.Вставить("Ширина",Окр(Экран.Ширина/Экран.DPI*2.54));
		
	#КонецЕсли
	ПараметрыСеанса.ХарактеристикиЭкрана = Новый ФиксированнаяСтруктура(Структура);
Показать

И это можно вызвать при запуске 1С
117. Сергей Апухтин (Zasranec0) 7 30.03.15 13:43 Сейчас в теме
(116) ориентацию экрана не узнать при этом. Только размеры экрана.
118. Дмитрий Шерстобитов (DitriX) 2736 30.03.15 16:44 Сейчас в теме
(117) Как это не узнать?
Если высота больше ширины, то портрет, иначе - ландшафт.
119. Сергей Апухтин (Zasranec0) 7 01.04.15 10:08 Сейчас в теме
(118)
ИнформацияЭкранаКлиента (ClientDisplayInformation)
Свойства:

DPI (DPI)
Высота (Height)
Ширина (Width)

Описание:

Предназначен для описания экрана устройства.
На мобильной платформе ширина и высота экрана всегда выдаются в оригинальной ориентации, без учета поворота устройства. Для телефонов и некоторых планшетов это портретная ориентация, для большинства планшетов - ланшафтная.
121. Дмитрий Шерстобитов (DitriX) 2736 01.04.15 12:29 Сейчас в теме
(119) это все немного кривая справка 1с:) Без учета поворота, это значит, что если мы привыкли, что телефон выше чем шире, то повернув его - программа будет считать его шире чем выше :)
Короче, все случиться как надо, и не забываем новую функцию в 8.3.6 - ПриИзмененииПараметровЭкрана
&НаКлиенте
Процедура ПриИзмененииПараметровЭкрана()
    МассивИнформаций = ПолучитьИнформациюЭкрановКлиента();
    Если МассивИнформаций[0].Ширина > МассивИнформаций[0].Высота Тогда
        ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
    Иначе
        ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
    КонецЕсли;
КонецПроцедуры
Показать
156. Сергей Апухтин (Zasranec0) 7 13.04.15 15:04 Сейчас в теме
(121) проверил, не работает, всегда выводит 720 / 1280. Этот вариант не подойдет.

Не могу при начале работы системы определить как повернут экран. Может кто помочь?
120. Макс Зеленский (mzelensky) 53 01.04.15 10:46 Сейчас в теме
Доброго времени суток!
Мощная поделка, ничего не скажешь! Читаешь и слюни текут от всех тех идей и мыслей, которые в голову лезут. Осталось только найти заказчика на разработку и обкатывать сей функционал!!!
122. Тимур Мансорунов (solarisman) 118 02.04.15 14:17 Сейчас в теме
Можно ли каким-то образом прослушивать произвольный SerialPort, например, если я хочу "прикрутить" утилиты к ТСД (не ACODE)
123. Дмитрий Шерстобитов (DitriX) 2736 02.04.15 14:27 Сейчас в теме
(122) ну если на beanshell напишите, то можно. Но сомневаюсь. Очень много зависит от терминала и его структуры подключения, потому что иногда - не обойтись без виртуальной клавиатуры, а иногда надо прописать действия на аппаратные кнопки и т.д.
В Acode - мы это называем Support модули, и они различаются не только от модели к модели, но и от партии к партии.
Так что вы в любом случае прийдете к тому, к чему пришли и мы.
124. Тимур Мансорунов (solarisman) 118 03.04.15 10:31 Сейчас в теме
(123) Можете поделиться куском кода для эмуляции входящего СМС? Мануалов, конечно, куча, но опыта маловато разобраться с этими интентами
125. Дмитрий Шерстобитов (DitriX) 2736 03.04.15 10:49 Сейчас в теме
(124) Это уже устаревший механизм, мы теперь юзаем бродкасты в 8.3.6. Если Android программист решит поделиться, то он поделиться, а я не могу просто взять и кусок вырезать :) Он тут иногда отвечает на вопросы. Но предупреждаю, в текущей версии 8.3.6 - не работают смс, там баг в самой 1С
126. Тимур Мансорунов (solarisman) 118 03.04.15 20:51 Сейчас в теме
Там код-то простенький должен быть вроде, типа

 final String ActionName = "com.google.android.c2dm.intent.RECEIVE";
 Intent intent = new Intent(ActionName);
 intent.addCategory("com.e1c.mobile");
 intent.putExtra("Data", "111");
 sendBroadcast(intent);


Но вот почему, зараза, не срабатывает - непонятно.

ЧЯДНТ?
127. Дмитрий Шерстобитов (DitriX) 2736 03.04.15 20:54 Сейчас в теме
(126) Ну это бродкасты, в целом да, но есть нюансы, и вы уже сами это поняли :)
128. Тимур Мансорунов (solarisman) 118 03.04.15 21:10 Сейчас в теме
Не понял только, почему 1С не отлавливает эти уведомления. Имя и категорию скопировал из платформы как в Permissions.xml написано, дальше - хз.
131. Тимур Мансорунов (solarisman) 118 06.04.15 08:15 Сейчас в теме
(128)
В общем, я разобрался. Правда, пришлось для этого декомпилировать платформу и научиться немного программировать на Java.
129. ssmeta (ssmeta) 05.04.15 20:28 Сейчас в теме
Доброго времени суток.
Спасибо, очень полезная статья.

Не удалось посмотреть возможности утилиты к сожалению.
Android 5.0.1

Загрузил её на телефон по пути "http://acode.pro/upload/1cema.xml" (возможности скачать приложенные к статье файлы у меня нет)

Нажал на кнопку установить утилиты. По идее написано было что утилита установлена, но после нажатия на кнопку "Запустить",
приложение утилиты выдаёт ошибку "в приложении AСode:Поддержка 1С произошла ошибка".

Есть версия в чём может быть проблема? Может кто-то может прислать мне файлики приложенные к статье, если не затруднит 4istij@list.ru?

.
130. ssmeta (ssmeta) 05.04.15 21:06 Сейчас в теме
(129) ssmeta,

Сообщение об ошибке выдаёт, но тем не менее при тестировании например вывода сообщений, сообщения появляются.
Интересно, буду тестировать дальше.
132. Дмитрий Шерстобитов (DitriX) 2736 07.04.15 09:54 Сейчас в теме
(129) не поверите, нет устройства на 5 андрюше, а на виртуалке - все ок. Скиньте логкат, знаете как сделать?
(131) ну, как видите - ничего сложного, можете кстати сюда скинуть все возможные параметры пуша :)
133. ssmeta (ssmeta) 07.04.15 14:56 Сейчас в теме
(132) нет, к сожалению не знаю что это такое (логкат) и как его делать.
134. ssmeta (ssmeta) 07.04.15 15:04 Сейчас в теме
(133) Вот нашел такую функцию в коде "Функция ЛогКат()", попробую сделать, если Вы это имели ввиду.
137. Тимур Мансорунов (solarisman) 118 08.04.15 13:33 Сейчас в теме
(132) Да ничего особенного вроде нет

Уведомление в 1С отсылается так:
        final String ActionName = "com.google.android.c2dm.intent.RECEIVE";
        Intent intent = new Intent(ActionName);
        intent.addCategory("com.e1c.mobile");
        intent.putExtra("text", "Barcode:" + Barcode);
        intent.putExtra("title", "1C");
        sendBroadcast(intent);


Нативная обработка локальных уведомлений происходит методом
        NativeProcessNotification(str2, str1, str4, true)

где
str2 = localBundle.getString("base")
str1 = localBundle.getString("text")
str4 = localBundle.getString("data")

Далее нативную обработку уже не вскрыть, т.к. она зашита в скомпилированной библиотеке .so

При попытке установить какое-нибудь значение в поле "base" начинает валиться ошибка "Уведомление для неизвестной конфигурации [значение поля "base"]". Не помогает вставлять туда ни идентификатор базы, ни имя конфигурации, ни что-то еще. Не знаю, как Вы с этим справились в утилитах Acode
Однако, если база в списке одна, то работает и без этого, просто поле не добавляется

По непонятной мне причине, строка из поля "text" не сериализуется (при попытке запихнуть ее в XDTO валится ошибка), хотя нормально обрабатывается приложением и вставляется в строковые переменные. Пришлось написать функцию, которая оставляет только допустимые символы.

Жаль, что очень много скрыто в скомпилированной библиотеке. Особенно уродско, ИМХО, работа интерфейса
139. Дмитрий Шерстобитов (DitriX) 2736 09.04.15 11:46 Сейчас в теме
(137) это ID базы, раблотаем с ним отлично, другой вопрос что его получать надо через Ж для текущей базы :)
(138) Копать в сторону багов 1с :) Попробуйте последний релиз 8,3,6,138, я правда не проверял веб-сервисы там, но на 110 - точно не работает:)
141. Илья Андреевич (Degustator) 09.04.15 18:15 Сейчас в теме
(139) Пробовал на 138, тоже самое - не работает
(140) solarisman, попробую Ваш код, но вроде, на первый взгляд, в нем принципиальных отличий нет от моего
135. Дмитрий Шерстобитов (DitriX) 2736 07.04.15 15:24 Сейчас в теме
(135) Не совсем то, вообщем это что то типа журнала в 1с, куда сыпятся все ошибки в1с, вот в андроиде тоже такой есть, и есть программы, которые позволяют этот лог журнал просмотреть, например эта https://play.google.com/store/apps/details?id=com.nolanlawson.logcat, но для этого нужен рут на устройстве, иначе программу будет видеть только свои логи.
136. ssmeta (ssmeta) 07.04.15 15:58 Сейчас в теме
(135) Ясно, жаль. Root прав нет. Ладно.
Кстати попытался посмотреть работу с FTP, тоже непонятки.
После выбора файла идет сообщение что файл не найден. Посмотрел, вроде причина в том, что content не разбирается. (предположение)
После выбора файла ФтпПутьКФайлуДляОтправки = пустая строка.
Возможно Android 5.0 шалит :)
Но все равно интересно, буду дальше изучать...
138. Илья Андреевич (Degustator) 08.04.15 21:17 Сейчас в теме
День добрый. Набор утилит просто прекрасный, спасибо огромное. Но есть вопрос: при переводе мобильного приложения с 8.3.5 на 8.3.6 почему-то перестал отрабатывать конструктор WSОпределения. Выдает ошибку: "Ошибка при вызове конструктора (WSОпределения) по причине: Неверный формат". На 8.3.5 все прекрасно работает. На стационарной машине запускаю базу мобильного приложения под 8.3.6 - тоже все хорошо. Создал в центральной базе еще один веб-сервис полностью пустой, к нему тоже не хочет цепляться. Может подскажете, куда можно копать?
140. Тимур Мансорунов (solarisman) 118 09.04.15 18:06 Сейчас в теме
(138) У меня работает на 8.3.6.110 и на 8.3.6.138

Формирование адреса подключения

АдресСервера 	= Константы.АдресСервера.Получить();
	ИмяКаталога 	= Константы.ИмяКаталога.Получить();
	ИмяСервиса 		= Константы.ИмяСервиса.Получить();
	ПортСоединения 	= Формат(Константы.ПортСоединения.Получить(), "ЧГ=");	
	
	СтрокаАдрес = "http://%АдресСервера%%ПортСоединения%/%ИмяКаталога%/ws/%ИмяСервис­а%.1cws?wsdl";
	СтрокаАдрес = СтрЗаменить(СтрокаАдрес, "%АдресСервера%", АдресСервера);
	СтрокаАдрес = СтрЗаменить(СтрокаАдрес, "%ИмяКаталога%", ИмяКаталога);
	СтрокаАдрес = СтрЗаменить(СтрокаАдрес, "%ИмяСервиса%", ИмяСервиса);
		
	ПортСоединения = ?(ПустаяСтрока(ПортСоединения), "", ":" + ПортСоединения);
	СтрокаАдрес = СтрЗаменить(СтрокаАдрес, "%ПортСоединения%", ПортСоединения);
	
	Константы.АдресЦентральнойБазы.Установить(СтрокаАдрес);
Показать


Подключение

ПользовательЦентральнойБазы = ОбщегоНазначенияПовтИсп.ПользовательЦентральнойБазы();
	ПарольДляОбмена 			= ОбщегоНазначенияПовтИсп.ПарольДляОбмена();
	АдресПодключения 			= ОбщегоНазначенияПовтИсп.АдресЦентральнойБазы();
	URIПространстваИмен			= ОбщегоНазначенияПовтИсп.URIПространствоИмен();
	ИмяСервиса					= ОбщегоНазначенияПовтИсп.ИмяСервиса();
	ИмяТочкиПодключения			= ИмяСервиса + "Soap";
	ТаймаутПрокси				= 10;
	
	Попытка
		Определение = Новый WSОпределения(АдресПодключения, ПользовательЦентральнойБазы, ПарольДляОбмена,, ТаймаутПрокси);
		Прокси		= Новый WSПрокси(Определение, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения,, ТаймаутПрокси);	
		Прокси.Пользователь = ПользовательЦентральнойБазы;
		Прокси.Пароль 		= ПарольДляОбмена;                                                     
	Исключение
		Возврат Неопределено;
	КонецПопытки;		

	Возврат Прокси;
Показать


URIПространствоИмен() - как оно задано у Вас в центральной базе в пакете XDTO
142. Илья Андреевич (Degustator) 09.04.15 19:36 Сейчас в теме
(140) solarisman, попробовал, не работает.
(139) я правильно понял, что у Вас веб-сервисы на мобильной 8.3.6 тоже не работают?
143. Дмитрий Шерстобитов (DitriX) 2736 09.04.15 19:38 Сейчас в теме
(140)(141) отличие не в коде, а типх передаваемых данных, у вас скорее всего стоит хранилище, поставьте строку и тогда все взлетит, а вот с хранилищем - таки баг
144. Илья Андреевич (Degustator) 09.04.15 20:13 Сейчас в теме
(143) хранилище действительно есть в передаваемых данных. Но у меня на 8.3.6 не взлетает даже пустой веб-сервис.
145. Илья Андреевич (Degustator) 09.04.15 20:26 Сейчас в теме
Попробую зайти с другой стороны. Причина, по которой захотел перейти на 8.3.6 следующая: имеется сканер CipherLab 1661, на версии утилит 2.05 он не работает, а на версии 2.07 - работает. А для 2.07 и нужна новая платформа. Может можно как-то заставить работать данный сканер под 2.05? Подключается нормально, но при сканировании штрих-код не добавляется в таблицу на форме
146. Тимур Мансорунов (solarisman) 118 10.04.15 08:11 Сейчас в теме
(145) Проверьте работу сервиса для начала через браузер. Там куча нюансов, вплоть до соблюдения регистра символов в строке адреса
147. Максим Стежко (maks_v) 10.04.15 08:47 Сейчас в теме
(146) solarisman, да я же говорю, у меня не то что в браузере нормально работает, у меня под мобильной 8.3.5 все прекрасно работает, не работает только под мобильной 8.3.6.

Написал под другим пользователем :) но это я , Degustator :)
148. Дмитрий Шерстобитов (DitriX) 2736 10.04.15 10:52 Сейчас в теме
(145) ну так используйте 2.07 на 8.3.5, нам то какая разница? Вы просто переключите его в режим смс, и все.
149. Илья Андреевич (Degustator) 10.04.15 11:34 Сейчас в теме
(148) хорошо, спасибо, попробую
150. Дмитрий Шерстобитов (DitriX) 2736 10.04.15 12:03 Сейчас в теме
(149) не за что, будут проблемы - пишите.
151. Илья Андреевич (Degustator) 10.04.15 18:42 Сейчас в теме
(150) начал пробовать и стало понятно, почему у меня сканер с 2.05 не работал. На планшете нет модуля телефонии :) Прямо и то не так, и так не эдак

Видимо, придется ждать следующей версии 8.3.6
152. Дмитрий Шерстобитов (DitriX) 2736 10.04.15 19:37 Сейчас в теме
(151) ну тогда да, но зато вы знаете, что на 8.3.6 - все будет как надо :)
170. AlexBar (AlexBar) 52 20.04.15 11:14 Сейчас в теме
(145)
Вам удалось заставить 1661 работать с 1С? Если да, то на какой версии платформы и с какой версией утилит?
153. Сергей Куликов (ksvd) 13.04.15 10:52 Сейчас в теме
Заинтересовал момент передачи сообщений на мобильное устройство из центральной базы. В одной сети через WiFi все работает замечательно. Но если мобильное устройство в другой сети, его IP определяется как внутренний для его подсети - т.е. 192.168.0.1 например, и отправить на него сообщение неполучается. Так же не получилось отправить сообщение, если мобильное устройство в сети через симку. Из утилит нельзя узнать внешний IP мобильного устройства ?
154. Дмитрий Шерстобитов (DitriX) 2736 13.04.15 12:39 Сейчас в теме
(153) это не проблема утилит, если телефн в другой сети, значит надо перенаправить порты с роутера на это устройство, ну и узнать IP адрес внешний, утилиты это не умеют, но это не проблема добавить скриптами, к примеру.
На счет симки - мобильные операторы не дают внешний белый IP адрес, и блокируют все запросы извне, т.е. там тоже так не выйдет.
155. Сергей Куликов (ksvd) 13.04.15 13:05 Сейчас в теме
Спасибо за ответ. Но тогда зачем эта возможность отсылать сообщения на мобильное устройство? Реально торговые работают через интернет мобильный (т.е. через симки), ну могут еще использовать бесплатный WiFi в торговых центрах. А получается, что использовать можно, только когда торговые в офисе.
157. Дмитрий Шерстобитов (DitriX) 2736 13.04.15 15:47 Сейчас в теме
(155) а на задачи склада, приемки, отдела ОТК - вы не смотрите? Почему мы не решаем вашу задачу, потому что ее уже решили 1с в 8.3.6, используя GCM - можно сделать то, что вам нужно. Какой смысл нам дублировать этот функционал. Но наш функционал работает там, где нет выхода во внешний инет и от там никому не нужен.
Так что вы пытаетесь решить одну проблему, но инструментом, который предназначен для решения других проблем :)
(156) ну тогда это баг, пишите в 1с :) Т.е. у вас при повороте экрана, всегда выводит одни и те же данные? И вы, конечно же, после каждого события повотра экрана - переинициализируете эти параметры, т.е. постоянно вызываете функцию ПолучитьИнформациюЭкрановКлиента() и смотрите данные там, верно?
158. Сергей Куликов (ksvd) 13.04.15 17:56 Сейчас в теме
(157) Согласен, надо смотреть шире.
159. Сергей Апухтин (Zasranec0) 7 13.04.15 18:09 Сейчас в теме
(157) верно, работает как написано в справке. Ширина и высота от поворота не изменяется.

Получается что при старте 1с я не могу определить как у меня экран повернут...
160. Дмитрий Шерстобитов (DitriX) 2736 13.04.15 18:22 Сейчас в теме
(159) это для стационарного они фиксированы, а для мобильного - нет. Читай ИТС:
26.3.6.9. Ориентация экрана

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

Каждый элемент массива описывает один экран, подключенный к устройству. Параметры Высота и Ширина описывают, соответственно, высоту и ширину экрана в точках. При этом для мобильного устройства эти параметры зависят от ориентации устройства (если это разрешено в настройках), а платформы для персонального компьютера всегда возвращает канонические параметры подключенных экранов. Таким образом, на мобильном устройстве можно анализировать, в каком положении находится устройство и на основании этого принимать решения о трансформации интерфейса приложения. Для облегчения работы с ориентацией существует событие ПриИзмененииПараметровЭкрана, которое можно обработать в модуле управляемого приложения и в модуле управляемой формы.

В качестве примера рассмотрим изменение отображения формы, отображаемой на рабочем столе. В указанной форме есть два списка, которые отображают некоторую информацию. При портретной ориентации экрана (узкая сторона устройства – нижняя) списки будут отображаться друг под другом, а при ландшафтной (широкая сторона устройства – нижняя) ориентации – списки расположены рядом. Для реализации такого поведения в модуле формы, расположенной на рабочем столе, следует разместить обработчик события ПриИзмененииПараметровЭкрана следующего вида:


&НаКлиенте
Процедура ПриИзмененииПараметровЭкрана()
    МассивИнформаций = ПолучитьИнформациюЭкрановКлиента();
    Если МассивИнформаций[0].Ширина > МассивИнформаций[0].Высота Тогда
        ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
    Иначе
        ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
    КонецЕсли;
КонецПроцедуры
Показать
164. Сергей Апухтин (Zasranec0) 7 14.04.15 11:46 Сейчас в теме
(160) Этот функционал работает только на 8.3.6
165. Дмитрий Шерстобитов (DitriX) 2736 14.04.15 16:35 Сейчас в теме
(164) ну в 8.3.5 даже функции такой глобальной нету у форм. Чето я забыл уточнить, сори.
161. Дмитрий Шерстобитов (DitriX) 2736 13.04.15 18:24 Сейчас в теме
(159) короче, приложи сюда конфу и скажи на какой версии компилишь, а я протестю и дам знать.
162. Сергей Апухтин (Zasranec0) 7 14.04.15 11:27 Сейчас в теме
(161) https://drive.google.com/file/d/0B-uCrBOTwUB1M2Z6VnVtYlNRQ2M/view?usp=sharing

Это ссылка на мобильное приложение, которое на андройд ставлю. Версия 8.3.5.96 ( не обновлял )
Конфигурация очень простая, при начале работы системы идет тот код который ты написал вышел. Всегда выдает одну и ту же циферку.

Может стоить обновить? Боюсь, что что то другое перестанет работать.
163. Дмитрий Шерстобитов (DitriX) 2736 14.04.15 11:44 Сейчас в теме
(162) не, так не пойдет, что я буду смотреть без конфигурации.
Создайте простую конфу с одной формой, где будет два элемента, и при повороте экрана - группа, в которой они находятся, должна делать вертикальное или горизонтальное выравнивание и все. И приложите сюда тупо конфу, или саму обработку
166. AlexBar (AlexBar) 52 16.04.15 15:50 Сейчас в теме
Шикарная публикация. Мне очень понравилась.
Автор, подскажите, указанные утилиты могут работать только с блютуз сканером или с usb тоже можно реализовать оповещение 1С?
167. Дмитрий Шерстобитов (DitriX) 2736 16.04.15 16:51 Сейчас в теме
(166) не умеют. Но возможно все, вопрос или в деньгах, или в свободном времени :)
168. AlexBar (AlexBar) 52 16.04.15 23:46 Сейчас в теме
(167) В вашем примере, указанном в видео №7 имеется следующий код:
	Если НомерСобытия = 1 Тогда
		Возврат "Сканирование 1D";

Какое событие обрабатывается с номером 1?
2.07 работает с версией 8.3.5? Пытаемся прикрутить сейчас CipherLab 1661 к планшету с обработкой оповещения от сканера, согласно ваших примеров.
В (145) указано что 1661 не работает с 2.05, а для 2.07 требуется вроде как 8.3.6.
Поясните что с чем работает, чтобы не наступать на чужие грабли. Пока работаем на 8.3.5 и до выхода рабочего релиза 8.3.6 переходить на него не планируем.
169. Дмитрий Шерстобитов (DitriX) 2736 17.04.15 11:47 Сейчас в теме
(168) все очень просто.
2.05 - работает и с 8.3.5 и с 8.3.6, однако, принцип ее работы в эмуляции смс сообщения, из-за этого был ряд проблем:
1. Если нет gsm модуля в телефоне (например планшет без возможности звонить), то естественно ничего не работало.
2. В первой версии 8.3.6.106 - был баг, из-за которого она падала в крит, если подключали обработчик оповещения.

2.07 - работает по принципу смс, и по принципу броадкаста. (нужное включается в настройке)
Соответственно - 2.07 работает с 8.3.5 но только в режиме смс (так как в 8.3.5 нет режима бродкаста)
Ну а с 8.3.6 - работает в любом режиме.

Просто из-за багов 1С - иногда приходится делать чудные вещи :)
171. AlexBar (AlexBar) 52 20.04.15 13:15 Сейчас в теме
(169)
Мда.. мой случай оказался сложнее. Планшет не поддерживает СМС, так как отсутствуют средства телефонии. Специально подбирали такой планшет для производства. Тестовый релиз 8.3.6 глючный и тормознутый. так что с ним пока даже связываться не хочется.
А Вы не думали использовать для оповещения 1С от блютуз сканера или терминала сбора данных средства мультимедиа? Т.е. если сейчас Вы предприняли попытку создать ложный СМС для оповещения 1С. то почему бы не воспользоваться "ложным" штрихкодом из средств мультимедиа?
172. Дмитрий Шерстобитов (DitriX) 2736 20.04.15 13:26 Сейчас в теме
(171) потому что там все намного сложнее, та и не имело смысла, ибо ранее смс нас устраивало - а теперь через уведомления делаем, 8.3.6 все арвно выйдет рано или поздно, а делать костыль ради текущей версии - смысла не имеет.
173. AlexBar (AlexBar) 52 20.04.15 13:40 Сейчас в теме
(172) Возможно вы и правы. Придется отложить все работы до выхода рабочей версии 8.3.6 :(
225. AlexBar (AlexBar) 52 09.09.15 09:50 Сейчас в теме
(169)
День добрый.
Android 4.2.2, 1С 8.3.6.201. Версия утилит - последняя. Сканер Cipherlab 1660, подключен по блютуз SPP Slave. Утилиты установлены и запущены. В демо конфигурации, в обработке тестирования блютуз сканеров он в списке так и не появляется. Что не так, куда смотреть?
226. Дмитрий Шерстобитов (DitriX) 2736 09.09.15 15:11 Сейчас в теме
(225) Все очень просто, откройте обработку ТестированиеСканеров, откройте форму, найдите элемент формы Сканеры и установите свойство ЗапросОбновления - Потянуть сверху.
Обновите конфу на мобильном устройстве и зайдите в форму, потяните список вниз, для обновления и все будет ок.
Это ли я не поставил запрос на обновление, или не верно конвертнулась конфа.
Ну или просто вынесите код функции ПолучитьСписокСканеров на отдельную кнопку.
227. AlexBar (AlexBar) 52 09.09.15 16:59 Сейчас в теме
(226) После простоя сканера, при повторном подключении получаем ошибку утилиты 7. Приходится перезапускать утилиты.
228. Дмитрий Шерстобитов (DitriX) 2736 09.09.15 22:09 Сейчас в теме
(227) AlexBar, ну тут да. Ставьте время отключения больше.
Тут все сложно с блютузом. Что бы обрабатывать переподключения - надо слишком много кожа писать и отлавливать это все. Тем более многое зависит от прошивки и сканера. Тоже самое с расстояниями. Т.е. Вместо простого поручения данных, надо ещё и постоянно мониторинг делать доступности, что усложняет задачу и садит батарею. Так что проще вывести кнопку, которая будет переподключать сканер. Так что как то так.
229. AlexBar (AlexBar) 52 09.09.15 22:43 Сейчас в теме
(228)
Тут стоит вопрос не только переподключения сканера, но и перезапуска утилит.
230. Дмитрий Шерстобитов (DitriX) 2736 10.09.15 11:37 Сейчас в теме
(229) не перезапустить утилиты можно, для этого их достаточно остановить специаальной коммандой.
Т.е. вас по факту интересует только стоп, а когда вы вызовите переподключение - утилиты сами стартанут.
231. AlexBar (AlexBar) 52 10.09.15 13:21 Сейчас в теме
(228)
DitriX, проблема появляется и без простоя сканера. Подключаем сканер. получаем сигнал от сканера об успешном подключении. Далее нажимаем на отключение сканера. Внешне ничего не происходит. Снова нажимаем Подключить, вываливается ошибка утилиты 7.
Мы решили обойтись без кнопки и сделать так, как делается во всех конфах при работе с ТО: при открытии нужной формы подключаем ТО, при закрытии формы отключаем ТО.
Вот только возникла проблема с повторным подключением сканера.
Создается впечатление что сканер не отключается, поэтому и возникает ошибка при повторном подключении.
Чего еще не хватает: если сканер находится в спящем режиме, то при подключении выпадает ошибка утилиты 6. Хотелось бы чтобы в 1С пришло извещение об этой ошибке, чтобы выдать предупреждение пользователю о том, что необходимо активировать сканер. Так же если бы ошибка 7 приходила бы в 1С, то при попытке повторного подключения, получив эту ошибку, мы бы понимали что сканер уже подключен.

После команды на отключение сканера он отключается только после первого же сканирования. После этой операции сканер повторно подключается без проблем. Т.е. без сканирования он не отключается. Считаю это ошибкой.
232. Дмитрий Шерстобитов (DitriX) 2736 10.09.15 17:47 Сейчас в теме
(231) увы, боюсь что тут ничем помочь не можем, мы эту функцию вообще реализовали, что называется - на коленке, для того, что бы люди которые считают что модель сканер + телефон - живая модель.
Конкретно с этим функционалом, мы не претендуем на 100% работоспособность, в силу причин описанных выше, плюс, те проблемы, которые вы описали, это только не значительная часть проблем, которые вас могут поджидать на данном пути.

Если бы мы делали простое приложение, нативное, то все было бы проще и стабильнее (из-за того, что утилиты могут перезагружаться, если андроид решит, что ему мало памяти и убъет их, а это проблема всех слабых устройств). А так как это все должно быть в связке с 1С - то проблем немерянно. Если нативное решение - оно открыто, андроид его не убъет, так как оно активно и вы с ним работаете, а сервис (чем и являются утилиты) - это андроид может запросто грохнуть, и тогда утилиты перезагрузятся. Для всего функционала, кроме блютуз сканера - это не проблема, так как там нигде не надо держать открытое соединение, и даже если утилиты перезагрузятся, то ничего страшного не будет, но не с блютузом. Был бы у всех блютуз 4.1, то может и проблем было бы меньше, там не надо вечно открытый канал, то такой блютуз не используется в сканерах, и его практически нет, пока, на телефонах.

Так что боюсь - наше решение (конкретно модуль сканирования в связке с блютуз), скорее просто демонстрационное.

И заниматься мы этим врядли будем, так как все силы брошены на терминалы сбора данных на Андроиде, в которых сканер уже встроен.

Так что у вас по сути два варианта - или использовать то, что есть, или же нанять андроид разработчика который сделает все "как надо" с учетом всех ваших особенностей.

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

Потому что редко кто доходил до вашей стадии, обычно все бросали всё это на этапе пересопряжения, и переходили на терминалы, так как в итоге - выходит дешевле (как финансово, так и трудозатрат).
233. AlexBar (AlexBar) 52 10.09.15 17:56 Сейчас в теме
(232)
Какой командой из 1С можно перезагрузить утилиты?
234. AlexBar (AlexBar) 52 11.09.15 10:27 Сейчас в теме
(232)
Нам удалось разобраться с перезапуском утилит.
В результате мы реализовали связку планшет+сканер. Еще раз большое спасибо авторам разработки.
Конечно можно спорить на тему того что лучше использовать: терминал сбора данных или планшет+сканер. К примеру кладовщик получает задание на отгрузку ряда товаров, идет с ТСД по складу, собирает товар и сканирует его. На определенном этапе ему необходимо проверить все ли он собрал из списка. В тех ТСД. что у нас имеются, нужно просматривать каждую запись из списка чтобы увидеть "отметилась" она или нет, потом искать по складу то, что не отмечено. Возможен другой вариант: кладовщику дали бумажную накладную, он собирает товар, сканирует его и параллельно отмечает в накладной что собрал? Ну это несколько через... Если смотреть образцы новых терминалов, то даже если у терминала 5-ти дюймовый монитор просматривать на нем список, когда номенклатура ведется и по характеристикам и по сериям, достаточно неудобно, мелковато. Я не претендую на истину, так как не имел дело с андроидными терминалами. У нас же сбором продукции занимается кладовщик-карщик. Планшет закреплен на самой каре, там же и запитан. От логистов кладовщик получает на планшет разнарядку на отгрузку, в которой указан список всех товаров, номер машины для погрузки, номер стоянки, где находится машина. отгрузка началась, кладовщик сканирует погруженный в машину товар сканером, в планшете все это отмечается. В процессе погрузки кладовщик без дополнительных манипуляций видит на экране что погружено. что осталось погрузить и где это находится. После завершения погрузки он отмечает разнарядку как выполненную и она по wi-fi тут же попадает в центральную базу. Логист получает извещение о том. что такая-то машина загружена. Накладная уже готова, так как получена от кладовщика. Логист отправляет смс водителю о том, чтобы отъехал от рампы и подошел за товаросопроводительными документами. Я понимаю что все разнарядки, документы, списки товаров можно сделать на ТСД, но размеры экранов и цены на более менее качественные ТСД отпугивают.
К тому же мы используем не бытовые планшеты, а специализированные, защищенные (TOREX PAD2) + сканер cipherlab 1661.
Возможно я просто не верно понимаю как правильно организовывать работу с ТДС.
Еще раз спасибо автору за разработку.
235. Дмитрий Шерстобитов (DitriX) 2736 11.09.15 11:31 Сейчас в теме
(234) AlexBar, ну да, в вашей специфике - действительно, это самое оно будет, и не поспоришь.
Ну раз все таки удалось запустить утилиты и они работаю - тогда отлично :)
Расскажите потом через месяц - как успехи, если не сложно.
236. AlexBar (AlexBar) 52 11.09.15 11:40 Сейчас в теме
(235) Если не забуду. :) После реализации спарки планшета со сканером решена самая больная тема. Далее будем только расширять возможности.
Вот мы в теме сетовали на то, что данные механизмы не реализованы в самой мобильной платформе, при этом все забывают о том, что и "стационарная" 1С не работает ни с портами, ни с торговым оборудованием напрямую. Для всего этого создаются внешние обработки для работы с торговым оборудованием и драйвера, для взаимодействия оборудования с обработкой. Ваша утилита по сути и есть и драйвер и внешняя обработка для работы со сканером (один из функционалов утилиты). Большое вам спасибо за нее. Надеюсь что у вашей команды все же дойдут руки и до исправления ошибок и до расширения функциональности (usb сканер). Тогда в некоторых случаях можно удешевлять стоимость оборудования. Планшет на ремне + usb сканер в руках, чем не ТСД? :)
293. Виталий (VitaliySm) 273 12.08.16 11:42 Сейчас в теме
У кого то, кроме AlexBar (234) получилось научиться перезапускать утилиты программно? Поделитесь опытом пожалуйста.
174. Сергей Кочнев (s.kochnev) 23.04.15 09:32 Сейчас в теме
Добрый день
Вопрос, возможно, глупый, но будет ли ACODE Tools работать на девайсе с процессором Intel?
175. Николай Моисеев (Azathtot) 23.04.15 11:22 Сейчас в теме
(174) s.kochnev, А почему нет? Там нет процессоро-зависимого кода.
176. Сергей Кочнев (s.kochnev) 23.04.15 12:42 Сейчас в теме
(175) Azathtot, ясно, спасибо. Я в apk заглядывал, бинарников не увидел, но поскольку с андроидом знаком мало, решил уточнить для верности :) Остаётся надеяться, что 1С под x86 будет работать нормально (есть подозрение, что эта сборка существует преимущественно для виртуалок с Android x86 %) ).
177. Дмитрий Шерстобитов (DitriX) 2736 23.04.15 14:58 Сейчас в теме
(174) без понятия, надо тестировать. Но по идее - должен
178. Сергей Кочнев (s.kochnev) 28.04.15 09:21 Сейчас в теме
Ещё вопрос. При использовании утилит версии 2.05 возможно как-то сделать так, чтобы фэйковые SMS не сохранялись, а в идеале даже не вызывали стандартного уведомления?
179. Дмитрий Шерстобитов (DitriX) 2736 28.04.15 11:34 Сейчас в теме
(178) А они и не вызывают :) Во всяком случае - не должны. И уж тем более не должны сохранятся.
Это просто обманка для 1С, и все. Если у вас по другому, то опишите. Но в любом случае - исправлять мы уже не будем, так как в 8.3.6 механизм уже другой, более верный. А отправку по смс - оставили только для совместимости.
180. Сергей Кочнев (s.kochnev) 28.04.15 14:00 Сейчас в теме
(179) А что тут описывать? Приходят и сохраняются %) Отправитель и содержание обычные, то есть тип события и полезная нагрузка. Возможно, я зря воду мучу, потому что это наблюдается только в одном телефоне HTC (старый One S, Android 4.1), а у них messaging app какой-то оригинальный. Настолько оригинальный, что даже поставленные в качестве костыля приложения-фильтры ничего не фильтруют.

Нежелание чинить старые костыли понятно. Жаль, что 8.3.6 пока далека от готовности к продакшену.
181. Дмитрий Шерстобитов (DitriX) 2736 28.04.15 20:38 Сейчас в теме
(180)А, ну да. Это видать то приложение слушает все типы сообщений, посему - у вас так и получается.
У всех кто тестировал на других устройствах - замечаний не было. :)
182. Николай Моисеев (Azathtot) 01.05.15 14:06 Сейчас в теме
(178) s.kochnev, А никак. Сообщение оно либо есть, и проходит полный цикл своего существования, либо его нет.
Единственный вариант - отправлять сообщения "адресно", т.е. определенному пользователю, под которым запущена 1С. Но вот в чем беда, 1С не имеет ни малейшего понятия о пользователе, под которым она запущена, и сообщить его не в состоянии.
183. Николай Моисеев (Azathtot) 04.05.15 10:44 Сейчас в теме
Пришел к выводу, что "мобильная 1С" - тупиковый путь развития. И соответственно необходимости развивать утилиты для нее не вижу.
И вот почему.
- лозунг "Мобильная 1С == Настольная 1С". Ничего подобного. Для мобильного решения не нужны отчеты,в 99% случаев нужен справочник номенклатуры и фиксация операций из серии "пришло-отправили". Для этого достаточно простейшего, нативного (в смысле написанного для конкретной платформы) приложения, которое умеет общаться с настольной 1С. Стоимость разработки такого приложения гораздо ниже, чем стоимость разработки мобильного решения 1С. Вполне возможно, что в дальнейшем переориентируюсь на разработку "конструктора" для создания такого приложения малой кровью.
- необходимость наличия мобильного решения. Сам этот факт опровергает предыдущий лозунг. Вся идея write once - run evrywhere идет за угол покурить. Ага, давайте напишем мобильное решение, возьмем настольный ПК, подключим к нему сканер и будем ждать что это все заработает сразу...
- стоимость разработки? См. пункты выше. Т.е. стоимость владения приложения на 1С и стоимость владения "нативного" приложения будут равные.
184. Дмитрий Шерстобитов (DitriX) 2736 04.05.15 12:11 Сейчас в теме
(183) это не верный вывод, и объяснить это просто - Андроид на рынке уже не мало времени, но до сих нет обильного желания у людей создавать решения такого рода, так как тут есть ряд существенных проблем.

Мобильная 1С != Настольная 1С, об этом все и везде твердят, и теперь, наконец, разработчики начинают это понимать, так как теперь уже появились "мобильные" возможности у платформы.

в 99% случаев нужен справочник номенклатуры и фиксация операций из серии "пришло-отправили".

Это вы где такое видели? Я нигде не видел, обычно нужно минимум 5 справочников (товары, единицы, склады, упаковки, виды товаров и т.д.), минимум несколько регистров, и несколько документов. Вы не решите ни одну задачу только при помощи справочника товаров и штрихкода, разве что, то только теоретическую.

Стоимость разработки такого приложения гораздо ниже, чем стоимость разработки мобильного решения 1С.

Опять мимо, сколько будет стоить только дизайн такого решения? Я скажу - в среднем около 100$ за одну форму. И это только дизайн.
Сколько будет доработка хотелок стоить? Вот я хочу уметь делать сортировку в списке и отбор по товару?
Сколько времени надо искать адекватного андроид программиста, которому не надо будет рассказывать все с нуля, и не надо объяснять как работает адресный склад? А ну да, найти можно, а сколько стоить он будет?
Если короче, то вы сейчас говорите о своем уровне. Для вас, возможно, решать такие задачи не сложно, но тогда вы просто станете одним из поставщиков программного обеспечения, типо клевернса, агент+ и т.д., а как показала практика - это не на столько гибкие, и уж точно не дешевые системы.

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

Видели конструктор у клеверенса? Посмотрите, вот там пытались малой кровью, вышел бред.И вы сами прекрасно понимаете - малой кровью не дается ничего. И то. где 1С применила малую кровь, вы уже говорите что это не работает. А тут все действительно малой кровью обошлось. Я могу писать конигурацию для настольной 1С, а потом, при надобности, немного ее изменитьи она будет работать на мобильной. А как сайты щас пишут?

Вобщем можно долго и нудно говорить о всяком, но 1с еще завоюет свой рынок :)
185. Вадим Латышев (pro1c@inbox.ru) 167 04.05.15 23:20 Сейчас в теме
(183) Azathtot,

я к этому уже давно пришел.
все верно!
Оставьте свое сообщение