|
Мобильное приложение на 8.3 | ☑ | ||
---|---|---|---|---|
0
mzelensky
22.10.14
✎
10:59
|
Доброго всем.
Честно говоря запарился уже с этим вопросом, но все же. Мобильное приложение на 8.3.5. Получаю геокоординаты и привязываю к объектам. У Платформы есть метод "Показать координаты на карте". Чтобы он работал нужно получить АПИ ключ Гугла и указать его при сборке. Косяк в том, что Гугл в очереднйо раз все поменял и получить этот присловутый ключ я не могу. Соответственно координаты на карте не отображаются. Сейчас народ активно юзает мобильную платформу, может кто знает еще вариант отображать координаты на карте на мобильном устройстве? |
|||
1
mzelensky
22.10.14
✎
11:02
|
(0) И еще одна попутная трабла. В Мобильном приложении нет "Диалога выбора файла". Хочу нарисовать совой. Проверяю на своем компе - все работает. Делаю сборку на МП - каталог временных файлов открывается (темповский), файлы в нем отображаются, но если попытаться получить данные других каталогов, то метод "НайтиФайлы" ничего не дает.
Понимаю, что описание крайне скудное и не понятно, но может кто-то уже заморачивался? |
|||
2
Широкий
22.10.14
✎
11:18
|
(0) Да не делай ты сборку, обновляй конфу через веб-сервер
(1) Код покажи |
|||
3
mzelensky
22.10.14
✎
11:28
|
(2) Не хочу я через веб-сервер.
Сейчас дословно не покажу - нет с собой исходников. Но принчип прост СписокФайлов = Найти файлы(ТекущийКаталог, *.*) Дальше обхожу список файлов и загоняю в ТЗ. На локальной машине все ок работает. НА мобильной как-то странно. При получении файлов каталога "КаталогДокументов" все отображает, а кроме этого ничего. |
|||
4
mzelensky
22.10.14
✎
11:29
|
Разницу нашел только одну. На локальном компе разделитель "\", а в мобильном приложении "/"...но уже обыграл этот момент
|
|||
5
Широкий
22.10.14
✎
11:32
|
(4) У каталогов тоже есть расширение. Ты это учел?
|
|||
6
mzelensky
22.10.14
✎
11:38
|
(5) Я определяю катало\файл через
ФайлПроверки = новый файл(Путь) Если ФайлПроверки.Существует() Тогда Если ФайлПроверки.ЭтоКаталог() Тогда //Это каталог Иначе //Это файл Конец КонецЕсли; |
|||
7
Широкий
22.10.14
✎
11:40
|
(6) Ты так и не ответил на вопрос
|
|||
8
mzelensky
22.10.14
✎
11:51
|
(7) Так я не знаю как на него ответить. Я не учитываю расширение и не использую его в каких-либо условиях.
А вариант "Найти файлы(ТекущийКаталог, *.*)" подразумевает "найти ВСЕ"...на сколько я понимаю. Так как и где я должен учесть расширение каталога? |
|||
9
Широкий
22.10.14
✎
11:54
|
(8) Думаю без засвета кода, диалог будет неконструктивным.
|
|||
10
mzelensky
22.10.14
✎
12:00
|
(9) Согласен. Выложу завтра.
а по первому вопросу с координатами? |
|||
11
Широкий
22.10.14
✎
12:02
|
"Сейчас народ активно юзает мобильную платформу, может кто знает еще вариант отображать координаты на карте на мобильном устройстве?"
Сделай html страницу. На ней с помощью яндекс-апи (гугл мне не нравится) показывай координаты. |
|||
12
Широкий
22.10.14
✎
12:03
|
+11 Подобное у меня сделано на веб клиенте (не мобильное приложение). Но думаю и на мобильном взлетит
|
|||
13
Широкий
22.10.14
✎
12:06
|
Самому рисовать гео-метки удобнее - можно привязывать балуны, кластеры организовывать и т.д.
Т.е. функционал шире, чем предлагает 1с на гугл-картах |
|||
14
mzelensky
22.10.14
✎
12:23
|
(11) А есть пример реализации?
|
|||
15
Широкий
22.10.14
✎
12:25
|
||||
16
Широкий
22.10.14
✎
12:33
|
Проверил - яндекс апи на мобильной платформе работает.
|
|||
17
mzelensky
22.10.14
✎
12:42
|
Спасибо!
Заходи завтра :) |
|||
18
Garykom
гуру
22.10.14
✎
12:58
|
(8) Вариант "Найти файлы(ТекущийКаталог, *.*)" подразумевает найти по шаблону "что угодно"+"."+"что угодно", а не просто "что угодно"="*"
|
|||
19
mzelensky
22.10.14
✎
13:29
|
(18) Попробую вообще второй параметр убрать.
|
|||
20
mzelensky
22.10.14
✎
13:31
|
И кстати еще один сопутствующий вопрос. Как на мобильном устройстве получить список доступных дисков (ну или если быть точнее, то флешек)?
Самое простое, что приходит на ум - перебрать все латинские буквы и проверить через ФайлПроверки = новый файл(Путь) Если ФайлПроверки.Существует() Тогда КонецЕсли; Может как-то более красиво можно (уточняю именно на МОБИЛЬНОМ ПРИЛОЖЕНИИ)? |
|||
21
mzelensky
22.10.14
✎
13:35
|
(18) В МС Виндоус
найтиФАйлы("Z:\~Зеленский\", "*"); и найтиФАйлы("Z:\~Зеленский\", "*.*"); Дает одинаковые результаты - все файлы и каталоги |
|||
22
Широкий
22.10.14
✎
13:59
|
(20) Скорее никак, бывают что флэхи вообще не выделяются как отдельный диск
|
|||
23
Широкий
22.10.14
✎
14:01
|
Я в качестве значения по-умолчанию задавал каталог "\".
|
|||
24
mzelensky
22.10.14
✎
14:05
|
(23) А что он в этом случае открывал?
|
|||
25
Адинэснег
22.10.14
✎
14:07
|
пути указываешь в линукс формате?
"/" вместо "\" |
|||
26
mzelensky
22.10.14
✎
14:14
|
(25) НУ я поставил условие, что если Мобильное приложение, то использую "/", в противном случае "\"
|
|||
27
Широкий
22.10.14
✎
14:27
|
(26) МобильноеПриложениеКлиент?
|
|||
28
mzelensky
22.10.14
✎
15:03
|
и МобильноеПриложениеКлиент и МобильноеПриложениеСервер.
|
|||
29
mzelensky
23.10.14
✎
10:43
|
Продолжаем тему с формой Выбора. Вчера немного посидел, поэкспериментировал. Вот кусок кода:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Параметры.Свойство("РежимВыбораКаталога", РежимВыбораКаталога); #Если МобильноеПриложениеСервер Тогда Разделитель = "/"; #Иначе Разделитель = "\"; #КонецЕсли КонецПроцедуры &НаКлиенте Функция ПолучитьКаталогПоУмолчанию() Возврат КаталогВременныхФайлов(); КонецФункции &НаКлиенте Функция ПолучитьФайлыТекущегоУровня(знач Каталог) Если НЕ ЗначениеЗаполнено(Каталог) Тогда Каталог = ПолучитьКаталогПоУмолчанию(); КонецЕсли; ТаблицаФайлов.Очистить(); Каталог = ?(Прав(Каталог,1)<>Разделитель, Каталог+Разделитель, Каталог); Если ЗначениеЗаполнено(Каталог) Тогда НайденныеФайлы = НайтиФайлы(Каталог, "*"); Для Каждого НайденныйФайл из НайденныеФайлы Цикл Если НайденныйФайл.Существует() Тогда Если (РежимВыбораКаталога = Ложь) ИЛИ (РежимВыбораКаталога = Истина И НайденныйФайл.ЭтоКаталог()) Тогда НстрокаТЗ = ТаблицаФайлов.Добавить(); НстрокаТЗ.ИмяФайла = НайденныйФайл.Имя; НстрокаТЗ.ПолноеИмяФайла = НайденныйФайл.ПолноеИмя; Если НайденныйФайл.ЭтоКаталог() Тогда НстрокаТЗ.Картинка = 0; Иначе НстрокаТЗ.Картинка = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Иначе Сообщить("Ошибка получения каталога!"); КонецЕсли; ТекущийКаталог = Каталог; ТаблицаФайлов.Сортировать("Картинка, ИмяФайла"); КонецФункции |
|||
30
mzelensky
23.10.14
✎
10:47
|
В результате получилось следующее:
1) "НайтиФайлы(Каталог, "*")" вместо "НайтиФайлы(Каталог, "*.*")" реально помогло! 2) Странный нюанс с разделителями в пути на мобильном устройстве. Если делаю "КаталогВременныхФайлов()" то получаю путь с разделителями "/". Все выводится, отрабатывает вроде нормально. А когда делаю вот это (вход в указанный каталог) &НаКлиенте Процедура ТаблицаФайловВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ТД = Элементы.ТаблицаФайлов.ТекущиеДанные; Если ТД <> Неопределено Тогда Если ЗначениеЗаполнено(ТД.ПолноеИмяФайла) Тогда ФайлПроверки = Новый Файл(ТД.ПолноеИмяФайла); Если ФайлПроверки.Существует() Тогда Если ФайлПроверки.ЭтоКаталог() Тогда ПолучитьФайлыТекущегоУровня(ФайлПроверки.ПолноеИмя); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры То получаю путь с разделителями "\" И в чем тут фишка??? |
|||
31
mzelensky
23.10.14
✎
11:58
|
Все выше и выше и вышееее....
|
|||
32
Широкий
23.10.14
✎
12:35
|
(31) Так тебе выбор каталога надо?
|
|||
33
mzelensky
23.10.14
✎
13:44
|
(32) В данном случае мне выбор файла надо. + У меня есть параметр, который позволяет форму применять для выбора файла.
А в (30) процедурка, которая "ныряет" в каталог, который ты выбрал...т.е. переходит в него и отображает содержимое. |
|||
34
mzelensky
23.10.14
✎
13:44
|
+ У меня есть параметр, который позволяет форму применять для выбора файла.
Нужно заменить на + У меня есть параметр, который позволяет форму применять для выбора каталога. |
|||
35
Широкий
23.10.14
✎
14:38
|
||||
36
Широкий
23.10.14
✎
14:38
|
||||
37
Широкий
23.10.14
✎
14:39
|
||||
38
mzelensky
23.10.14
✎
14:58
|
(35)-(37) Спасибо тебе добрый человек! Хвала тебе и уважуха! + 100500 к карме!!!
Пойду смотреть. |
|||
39
mzelensky
23.10.14
✎
15:06
|
(37) Ну вот ты все пути через ""/"" отрабатываешь.
Почему метод "КаталогВременныхФайлов()" возврщает путь с "\" ? |
|||
40
Широкий
23.10.14
✎
15:09
|
(39) Предположу что ошибка платформы. Т.к. КаталогДокументов норм выдает.
Используй СтрЗаменить, раз уж тебе каталог временных файлов нужен |
|||
41
mzelensky
23.10.14
✎
15:12
|
(40) Да я уже думал о "замене", прост о хочется понять в чем же тут фишка то.
Ведь каталоги получается считать и с "\" и с "/" (т.е. если в пути все разделители "\", то нормально работает. Если в пути все разделители "/", то тоже нормально работает). Ему что, нет разницы что использовать??? |
|||
42
mzelensky
30.10.14
✎
08:34
|
Не буду плодить новые ветки - продолжу разговор здесь.
ПРИЗЫВАЮ всемогущего "Широкий" - ПРИДИ!!!!!!!!!!!!!!! А теперь по сути проблемы - с диалогом выбора файла разобрался. Проблема решилась простой заменой всех "\" на "/". Все заработало, хотя сама проблема достаточно загадочная. Сейчас бьюс со следующим траблом. Делаю выгрузку данных в ЦБ. Если выгружаю только документы, то все проходит замечательно. Если пытаюсь выгрузить документы + присоединенные файлы, то возникает ошибка аля "Ошибка Интернет "/data/adata/.../temp/1c19394_v1" Такой файл или директория не обнаружены" При этом я ничего во внешние темповские файлы НЕ сохраняю. Все данны еу меня хранятся в базе в хранилище. Я получаю это хранилице (проверяю ,что там двоичные данные) и засовываю это ХРАНИЛИЩЕ в массив (пробовал и полученные двоичные данные передавать, ошибка таже). А потом отправляю этот массив в ЦБ. Еще одна забавность - если все это делать на стационарном компе, то все проходит замечательно. А С мобильного приложения - ошибка! |
|||
43
mzelensky
30.10.14
✎
09:47
|
все выше и выше и вышееееее
|
|||
44
Широкий
30.10.14
✎
09:51
|
(42) Присоединенные файлы выгражешь? А нафига??
|
|||
45
mzelensky
30.10.14
✎
10:00
|
(44) Я их не выгружаю ,а перебрасываю с мобильного приложения в центральную базу. При этом сохранения на "диск" на стороне мобильного приложения я НЕ делаю.
|
|||
46
mzelensky
30.10.14
✎
10:01
|
(44) Или вопрос зачем я в ЦБ файлы перекидываю?
Я перекидываю фотоотчет, который должен попасть в ЦБ. |
|||
47
Широкий
30.10.14
✎
10:05
|
(46) Файлы через вебсервис, я бы наверно смотрел в сторону ftp.
Ну покажи код - как делаешь |
|||
48
mzelensky
30.10.14
✎
10:09
|
(47) Не хочу рвать обмен на несколько этапов\подходов.
+ Меня очень "бесит" ,что на стационарном компе все проходит на ура, а с МП опять какие-то запарки. |
|||
49
mzelensky
30.10.14
✎
10:14
|
(47)
МассивФАйлов = новый массив; Запрос=новый запрос; Запрос.Текст="..."; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ДвоичныеДанные = Выборка.Данные.Получить(); //Выборка.Данные - это хранилище из регистра сведений Если ДвоичныеДанные <> Неопределено Тогда //Проверка, что хранилище не пустое МассивФАйлов.Добавить(Выборка.Данные); //Добавляю само хранилище //Еще пробовал вот так. Опять таки, на компе работает, а на МП нет //МассивФАйлов.Добавить(ДвоичныеДанные); //Добавляю двоичные данные из хранилища КонецЕсли; КонецЦикла; СтруктураПередаваемыхДанных("ПрисоединенныеФайлы", МассивФАйлов); |
|||
50
mzelensky
30.10.14
✎
10:15
|
(49) Потом, после формирования и заполнения всех ключей "СтруктураПередаваемыхДанных" помещаю структуру в хранилище и передаю через веб-сервис. Как ты и советовал.
|
|||
51
Широкий
30.10.14
✎
10:24
|
(49) Ошибка на каком моменте возникает?
|
|||
52
Escander
30.10.14
✎
10:26
|
(50) в курсе что на весь обмен у тебя максимум 5 мин? Упаковываешь методом №9 данные?
|
|||
53
mzelensky
30.10.14
✎
10:31
|
(51) А хрен его знает...отладку МП я сделать не могу (а на стационарнике работает все нормально). Как вариант понатыкать меток-сообщений, чтобы понять на каком этапе валится.
|
|||
54
mzelensky
30.10.14
✎
10:32
|
(53) Но явно дело именно в присоединенных файлах ,т.к. если я отключаю их выгрузку (через настройки), то все отрабатывает нормально
|
|||
55
Широкий
30.10.14
✎
10:34
|
(53) Ну ессно.
Сообщить("Запрос выполнился "+ТекущаяДата()); ... Сообщить("Хранилище получено "+ТекущаяДата()); и т.д. |
|||
56
mzelensky
30.10.14
✎
10:34
|
(52) Откуда инфа про "максимум 5 мин" ? Пожно подробней?
"Упаковываешь методом №9 данные" - на сколько я понял на стороне мобильного приложения НЕТ "Сжатия". Вообще размер пакета довольно маленький. Без фоток вообще за пару секунд все отрабатывает. Тестю я сейчас с 1 изображением. Оно не большое (несколько десятков килобайт). Так что косяк тут явно не в канале |
|||
57
mzelensky
30.10.14
✎
10:35
|
(55) Ну я это и имел ввиду. Прочто вчера в 12 ночи уже лень было этим заниматься - пошел спать. Сегодня попробую все это сделать.
Просто думал может сталкивались уже с подобной проблемой. |
|||
58
Широкий
30.10.14
✎
10:38
|
(56) Обязательно надо сжатие делать
Новый ХранилищеЗначения(СтруктураДанных,Новый СжатиеДанных(9)) |
|||
59
mzelensky
30.10.14
✎
10:44
|
(58) Помню ,что пробовал делать но он ругался на "Новый СжатиеДанных" - типа тип данных не определен. И в СП я что-то не увидел описалова. Может конечно я тупанул. Посмотрю сегодня еще раз.
|
|||
60
Широкий
30.10.14
✎
11:05
|
Мне вот этот момент не нравится
"ДвоичныеДанные = Выборка.Данные.Получить();" Попробуй с перестраховкой: Ссылка=Выборка.Ссылка; Данные=Ссылка.Данные; ДвоичныеДанные=Данные.Получить(); |
|||
61
Escander
30.10.14
✎
11:09
|
(56) "оттуда"...
5 мин - это ограничение стандарта |
|||
62
mzelensky
30.10.14
✎
11:14
|
(60) "Выборка" - это выборка их регистра сведений. Где "Объект" - измерение (ссылка на документ), а "Данные" - ресурс (хранилище значения).
Поэтому вот этого Ссылка=Выборка.Ссылка; Данные=Ссылка.Данные; быть не может. |
|||
63
mzelensky
30.10.14
✎
11:15
|
(61) "ограничение стандарта" - какого стандарта? Ограничение Веб-сервера, ограничение платформы или чего-то еще?
|
|||
64
Широкий
30.10.14
✎
11:17
|
(62) Может у тебя как раз из-за этого и падает? Запросом получать разом столько информации.
Переделай на справочник и по (60) |
|||
65
Широкий
30.10.14
✎
11:20
|
Либо читать запросом только измерения а потом через "РегистрСведенийЗапись" доставать данные построчно. (как вариант без переделки структуры)
|
|||
66
mzelensky
30.10.14
✎
11:23
|
(65) я читаю не весь регистр, а конкретно по нужному мне объекту (документу). + тестю на 1 доументе (т.е. в регистре фактически всего одна запись). ТАк что врятли. Но попробую проверить
|
|||
67
mzelensky
06.11.14
✎
09:26
|
В общем крутил-вертел и так и эдак, но ошибка с передачей фото не уходила. Вылазила она именно при вызове удаленного веб-сервиса.
После всех тщетных попыток разобраться, просто решил обновить платформу до последнего релиза (и платформу конфигуратора и мобильную платформу). Обновил, пересобрал - ЗАРАБОТАЛО!!! И кстати еще кое-какие косячки интерфейсные ушли (ну или стали менее заметны). |
|||
68
mzelensky
06.11.14
✎
09:27
|
Короче по всем момим веткам с мобильны приложением уже можно бложик заводить "Я и Мобильное приложение 1С"
|
|||
69
DitriX
06.11.14
✎
22:00
|
Вот так люди придумывают костыли :)
НовВз = Новый ЗапускПриложенияМобильногоУстройства(); НовВз.Действие = "android.intent.action.GET_CONTENT"; //Указываем тип искомых файлов, нас интересует только фото НовВз.Тип = "image/*"; //"file/*"; //"*/*" //Говорим что интересуют только локальные данные, а не облачные НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина); РезультатРаботы = НовВз.Запустить(Истина); Если НЕ РезультатРаботы Тогда Сообщить("Файл не выбран!"); Возврат КонецЕсли; ПутьКФайлу = НовВз.Данные; На счет апи карт - делай через ЗапуститьПриложение(), куда передавай урл с коордиатами, тогда откроется карта гугла и выведет все что надо. |
|||
70
DitriX
06.11.14
✎
22:01
|
Взято отсюда http://infostart.ru/public/301851/
И там много еще такого всякого, мобильного :) |
|||
71
mzelensky
10.11.14
✎
09:25
|
(70) Я видел эту статью. Вот только ты забыл сказать, что для работы всего этого нужно устанавливать на телефон дополнительную фоновую утилиту, а это не всегда есть ГУД
|
|||
72
DitriX
10.11.14
✎
13:50
|
(71) никакую утилиту ставить не надо, это встроенный функционал в андроид.
А вот если вы хотите больше (пуши, логи, вибро и т.д.), то тогда надо ставить, но это отдельная статья http://infostart.ru/public/310565 |
|||
73
mzelensky
11.11.14
✎
08:46
|
(72) Ок, спасибо. Возьму на заметку.
По поводу: "На счет апи карт - делай через ЗапуститьПриложение(), куда передавай урл с коордиатами, тогда откроется карта гугла и выведет все что надо." А есть пример этого самого "урл" ? |
|||
74
DitriX
11.11.14
✎
13:30
|
(73) Я думаю пояснять тут ничего не надо, но если что - спрашивайте
УРЛ = "http://www.google.com.ua/maps/dir"; МассивАдресов = СформироватьМаршрутНаСервере(); Для Каждого Адрес Из МассивАдресов Цикл Координаты = ПолучитьМестоположениеПоАдресу(Адрес); Если Координаты = Неопределено Тогда Сообщить("Не удалось получить координаты " + Адрес.Представление); Продолжить; КонецЕсли; УРЛ = УРЛ + "/" + Формат(Координаты.Широта,"ЧРД=.; ЧГ=0") + "," + Формат(Координаты.Долгота,"ЧРД=.; ЧГ=0"); КонецЦикла; ЗапуститьПриложение(УРЛ); |
|||
75
DitriX
11.11.14
✎
13:31
|
УРЛ = "http://www.google.com.ua/maps/dir";
Только вот такой урл, а то что то сайт не так распарсил |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |