Имя: Пароль:
1C
1С v8
Материалы по мобильному приложению
0 alex-79
 
24.10.19
13:33
Добрый день!

Выдалось свободное время. Решил подтянуть свои знания по созданию мобильных приложений на платформе 1С.

Если материалы в свободном доступе по нюансам программирования мобильных приложений на 1С?

К примеру вот одна из ситуаций.
Есть мобильное приложение, которое подключается через web-сервис к базе торговли и обмениваться данными.
Я грешу именно на обмен между мобильным приложением и торговлей, потому что в ситуации когда из мобильного приложения выгружаются данные по заказам фоновым задание по расписанию
и в этот момент происходит ещё одно обращение к примеру получить количество бонусных баллов из торговли, то мобильное приложение просто закрывается и на экране сообщение, что приложение было приостановлено. Получается просто оно вылетает и всё.
Причём такая ситуация возникает не всегда, а рандомным образом. Отследить отладчиком невозможно и соответственно предоставить смоделированную ситуацию в техподдержку 1С.  


Поэтому хотелось бы почитать материалы по мобильным приложениям уже для тех, кто пишет мобильные приложения, а не новичков.
1 lucbak
 
24.10.19
14:20
>>Причём такая ситуация возникает не всегда, а рандомным образом

И чем тебе поможет "не новичок" ? Сама разработка на моб.приложении не сильно отличается от обычной разработки  основное отличии это дизайн форм.
2 Cyberhawk
 
24.10.19
14:23
С таким подходом к описанию тебе и 1С не поможет
3 ejikbeznojek
 
24.10.19
14:38
(0) Понять на какой строчке кода вылетает по идее можно (если это одна и та же строчка).
Сделай запись в лог до и после подозрительных строчек кода.
И проанализируй где есть запись "до" и нет записи "после"
4 alex-79
 
24.10.19
17:58
(1) Мне не сама разработка нужна. С ней всё просто. Меня в голове закралось такое предположение, что сам андроид накладывает какие-то ограничения. Если на Windows запускаешь такое же решение, то никаких вылетов нет.

(3) Согласен. Я ставил точки останова, но до них не доходит отладка. Вся сложность в том, что такая ошибка может вылезти в течении дня несколько раз, а может через день. Поэтому говорю, что глюк гуляющий. Я отправлял в 1С копии баз, но они запускают и всё у них работает.

Ещё такая проблема. Создал для клиента мобильное приложение. Клиент проверил. Всё понравилось. Задачку закрыли. Через месяц звонит и говорит, что мобильное приложение не работает. Спрашиваю почему такое произошло. Мобильное приложение было на тестировании не один месяц и проблем не было никаких. Клиент показывает, что при попытке запуска мобильного приложения появляется ошибка, что база разрушена. Я запустил на мобильном устройстве тестирование/исправление базы. Всё заработало. Через месяц опять такая петрушка.
5 alex-79
 
24.10.19
17:59
Вот таких мелочей набирается и в итоге не получается отдать конечный продукт клиенту.
6 Мимохожий Однако
 
24.10.19
18:01
(0) Е. Ю. Хрусталева.Знакомство с разработкой мобильных приложений на платформе "1С:Предприятие 8". Издание 2
читал? Есть в электронном виде и на ИТС
7 alex-79
 
24.10.19
18:01
Существуют ли какие-то ограничения, которые накладывает Андроид на разработку мобильного приложения?
8 alex-79
 
24.10.19
18:09
(6) Да, но сам механизм обмена я не брал один в один как в этой книге. Надо попробовать сделать также как в книге Хрусталевой расписано.
9 alex-79
 
24.10.19
19:15
(6) У Хрусталевой в книге подход к обмену между мобильным приложением и базовой на сервере (к примеру торговлей) другой. Упор делается на выгрузку данных в XML файл и потом перекидання его на сервер. Я же пошёл другим путём. Подключаюсь к веб-сервису торговли из мобильного приложения. Получаю список функций и XDTO пакетов. Заполняю данными и отправляю в торговлю, но не формирую XML файл как у Хрусталевой (посчитал это излишним). Может какое-то ограничение на объем передаваемых данных или какой-то таймаут передачи данных есть.
10 Garykom
 
гуру
24.10.19
19:20
(9) Не надо XML это сложнее, намного проще JSON через HTTPСоединение.
11 alex-79
 
24.10.19
21:18
(10) JSON проще и легче XML. Но суть не в этом.

Я напрямую передаю данные без JSON и XML.

Вот кусок кода отправки данных в базу торговли из мобильного приложения.

определение = Новый WSОпределения(адрес, пользователь, пароль);
cоединение = Новый WSПрокси(определение, определение.Сервисы[0].URIПространстваИмен, определение.Сервисы[0].Имя, определение.Сервисы[0].ТочкиПодключения[0].Имя);

cоединение.Пользователь = пользователь;
cоединение.Пароль = пароль;
        
входныеДанные = cоединение.ФабрикаXDTO.Создать(cоединение.ФабрикаXDTO.Тип(URLПространстваИмен(), "inData"));        
входныеДанные.partners = cоединение.ФабрикаXDTO.Создать(cоединение.ФабрикаXDTO.Тип(URLПространстваИмен(), "partnersArray"));
тип_partnersItem = cоединение.ФабрикаXDTO.Тип(URLПространстваИмен(), "partnersItem");
Для каждого строкаРегистрации Из таблицаРегистраций Цикл
    партнер = cоединение.ФабрикаXDTO.Создать(тип_partnersItem);
    партнер.id = строкаРегистрации.Объект.Идентификатор;
    партнер.name = строкаРегистрации.Объект.Наименование;
    партнер.phone = строкаРегистрации.Объект.Телефон;
    партнер.email = строкаРегистрации.Объект.ЭлектроннаяПочта;
    входныеДанные.partners.items.Добавить(партнер);
КонецЦикла;            
        
результат = cоединение.postChanges(id, входныеДанные);
12 alex-79
 
24.10.19
21:19
Этот способ координально отличается от Хрусталевского
13 alex-79
 
24.10.19
21:24
Но когда задалбливает описывать XDTO пакеты можно в мобильном приложении сформировать таблицу значений с данным. Потом сериализовать эту таблицу и отправить через веб-сервис в торговлю, а там уже десериализовать.
14 Cyberhawk
 
25.10.19
08:20
(12) Ошибаешься. То что ты фабрику создаешь из прокси и эту же прокси используешь для вызова операции не означает что ты там что-то "напрямую" создаешь в той базе. Наивняк еще тот.
15 alex-79
 
25.10.19
10:19
(14) Так понятно, что это не прямой доступ к базе. Обращаясь к базе-приёмнику я получаю набор функций и XDTO. Со стороны базы-источника я только заполняю XDTO и отправляю всё это хозяйство через функцию, которую предоставила база-приёмник. Со стороны базы-приёмника функция читает полученные данные и выполняет код. По сути это не COM-соединение где мы получаем доступ к метаданным базы-приёмника и делаем, что хотим, а работаем с описанной структурой данных и функциями, которые предоставляет база-приёмник.

Дело не в этом.

Я хотел сказать, что в книге Хрусталевой описан пример, когда выгружаются дынные из базы-источника в файл (без разницы формат JSON или XML) и потом этот файл пуляется в базу-приёмник.

А у меня по другой способ. Я не выгружаю файл, а работаю с фабрикой.
16 Сияющий в темноте
 
25.10.19
18:38
есть два совершенно разных пути:
первый - получить данные в мобильное приложение,поработать с ними и вернуть результат.
второй - передать данные из мобильного в основную базу,чтобы ввполнить действие там.
17 rozer76
 
26.10.19
00:14
(11) я тоже хрусталевские примеры переделал, сначала думал также просто xdto в соединенме кидать но потом решил что лучше dxto в строку xml потом в хранилище значений с макс. сжатием... вроде работает давно на планшетах торговых и объемы гоняют немалые, например начальный обмен данными где только спр. номенклатуры 20 тыс. элементов.