|   |   | 
| 
 | Мобильное приложение на 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";
 Только вот такой урл, а то что то сайт не так распарсил | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |