Имя: Пароль:
1C
1С v8
Проблемы с разработкой мобильного приложения
, ,
0 TreeDogNight
 
05.08.16
14:33
Всем привет! Написал мобильное приложение, Интернет-магазин текстильной одежды.
Возникло несколько проблем и пожеланий заказчика, которые к сожаление пока что не удалось решить, может быть кто-нибудь на этом форуме сталкивался с такими же проблемами:

1) Периодически приложений вылетает, на некоторых смартфонах с ошибкой, на некоторых без:
[url=http://itmages.ru/image/view/4689852/4d2a4dd1][img]http://storage3.static.itmages.ru/i/16/0805/s_1470395841_5187443_4d2a4dd18c.jpg[/img][/url]
Чаще всего вылетает в момент переключения категории товаров или смены ориентации экрана.

2) Заказчик попросил убрать верхнюю панель с надписью "Рабочий стол":
[url=http://itmages.ru/image/view/4689906/154f5e2e][img]http://storage3.static.itmages.ru/i/16/0805/s_1470396328_5079472_154f5e2ea4.jpg[/img][/url]
Искал в интернете, как же можно убрать эту панель, кто-то писал что надо подкорявить манифест приложения, но то имено подкорявить, так и не написали...

3) Из командной панели заказчик так же попросил убрать стандартную команду "Список приложений":
[url=http://itmages.ru/image/view/4689908/29bbc871][img]http://storage5.static.itmages.ru/i/16/0805/s_1470396379_5299564_29bbc871bf.jpg[/img][/url]
Как это сделать, я тоже к сожалению не нашёл

Загрузить приложение можно по адресу: [url]http://91.234.219.212/kamalak/ws/ExchangeOfDataBaby.1cws?wsdl[/url]
1 TreeDogNight
 
05.08.16
15:47
Забыл написать, релиз платформы - [B]8.3.8.58[/B]
2 Генератор
 
05.08.16
16:02
это лучше в поддержку 1с, тут только посочувствовать
3 Garykom
 
гуру
05.08.16
16:06
(0) Сталкивались, вопрос то какой?
4 TreeDogNight
 
05.08.16
16:12
(3) Как можно решить эти проблемы?
5 programmer1c
 
05.08.16
16:22
сам начал заниматься мобильным приложением.спецов очень мало,поэтому мало,кто тебе подскажет.В связи с этим зайди на сайт курсы-по-1с.запишись на бесплатный курс по мобильной платформе и там на вобщении с мастер тренером Дмитрий Шерстобитов   Источник: ©Курсы-по-1С.рф можешь задавать любые интересующие вопросы.
6 Garykom
 
гуру
05.08.16
16:24
(4) Вот так http://startandroid.ru/ru/uroki/vse-uroki-spiskom.html самое лучшее решение для всех 3-х проблем.
7 programmer1c
 
05.08.16
16:25
на счет первого вопроса врятли тебе че-то дельное кто-либо посоветует, а на счет 2- и 3-го,если это можно сделать,
ответят как это сделать
8 Генератор
 
05.08.16
16:25
скажи заказчику если хочешь дешево как сейчас пользуйся и не гунди, если хочешь дорого переписываем на java
9 programmer1c
 
05.08.16
16:29
(6) подождите.о каком приложении идет речь? Об 1-ком наверное, которое написано на платформе 1С предприятие 8.2 при чем здесь
http://startandroid.ru/ru/uroki/vse-uroki-spiskom.html
10 Garykom
 
гуру
05.08.16
16:39
(9) Потому что это решение всех проблем в (0) согласно (8)
11 programmer1c
 
05.08.16
16:42
(10) а ну тогда ясно,что ты имел ввиду.
12 programmer1c
 
05.08.16
16:43
жду ответа от Вас автор.что вам подскажут Гуру 1С в мобильном приложении с сайта курсы-по-1С
13 TreeDogNight
 
05.08.16
16:44
(6) (8) Пока я разрабатывал это приложения, пытаясь выполнить все хочушки заказчика, я понял, насколько 1С негибка...
Честно говоря, это моё первое приложение и начиная его разрабатывать, я даже не подозревал, что мобильное приложение 1С совсем не подходит, для разработки приложений для внешнего пользователя...
14 Генератор
 
05.08.16
16:45
я сам так делал приложение для мобильного приема заявок, 2 дня и в продакшн, зато бесплатно и пользователям пофиг как все это выглядит главное что работает
15 Генератор
 
05.08.16
16:46
но делал и другое приложение тоже для торговли, и как только потребовалось вводить подпись на тачскрине и обмен по нестандартому протоколу через ssl, понял что 1с сразу в топку
16 TreeDogNight
 
05.08.16
16:46
(5) Я уже прошёл этот бесплатный курс, он дал мне неплохую базу для начала разработки мобильных приложений, но я понял, что ответы на мои вопросы я смогу получить только в полном, платном курсе
17 Garykom
 
гуру
05.08.16
16:48
(13) Мобильная 1С прекрасно подходит для чего задумывалась: средство для влезания 1С на мобильный рынок.

Все остальное пока в процессе ))
18 TreeDogNight
 
05.08.16
16:53
Кроме вышесказанных проблем, заказчик просил убрать везде в приложении изображения и надписи "1С" =) После этого, я ещё сильнее стал думать в сторону Javы =)
19 Генератор
 
05.08.16
16:59
платные курсы может и имеют смысл если планируешь и дальше заниматься мобильной разработкой, а для разового пустая трата денег, все гуглится и ищется на форумах
20 Garykom
 
гуру
05.08.16
17:16
(18) Можно и в сторону JavaScript подумать сча это проще Android Java и универсальнее.
Причем даже писать сразу на android без большого компа можно https://habrahabr.ru/post/301442/ ))

Но есть/будут и свои недостатки https://habrahabr.ru/company/ifree/blog/214531/ у такого подхода. Зато для кто веб-разработку (html/css/js) уже знает оно в разы быстрее и удобнее. На java только "эмулятор браузера" свой или готовый юзается для fullscreen.
21 TreeDogNight
 
05.08.16
18:52
Решение 2й и 3й проблемы не так важно, как решение 1й. Заказчик отказывается подписывать счет-фактуру, если вылеты в приложении не будут исправлены...
22 Garykom
 
гуру
05.08.16
19:11
(21) Даже приложения нативные на c++ под андроид бывает вылетают тем более на java
Вопрос только в железках и их хар-ках с кол-вом памяти к примеру.
Взять одно устройство и отладить под него.
23 Garykom
 
гуру
05.08.16
19:13
(22) т.е минимизировать потери данных/работы при вылетах
Возможно запретить разворот экрана к меня с ним глюки были на 1С
24 TreeDogNight
 
05.08.16
19:39
(23) Я подозреваю, что приложение вылетает из-за большой загрузки оперативной памяти, которая может быть вызвана большим количеством картинок в приложении... Такое ощущение, что 1С не очищает оперативную память, при выводе изображений на форму, и в итоге память кончается и приложение вылетает... Было-бы в 1С что-нибудь наподобии Garbage collector в Java, возможно проблема бы решилась...
25 DitriX
 
05.08.16
22:22
1. Непонятные вылеты были практически сведены к нулю  с выходом 8.3.9.
Сюда - вопрос про картинки, какой их вес, и как выводите? Совет - лучше выводить через html поле. В противном случае - из-за утечек памяти приложение будет падать очень часто. Ну и следите за размером картинок.
2. Это вообще фигня какая то :) Создайте новую обработку, зафигарьте ее туда, и уберите у нее заголовок, и все.
3. Ага, а может еще логотип 1С хочет убрать? И "О приложении"? Вот тут уже все только через саму 1С. Это сделать самому нельзя, но можно договориться с 1С.
26 TreeDogNight
 
06.08.16
05:06
(25) Картинки я вывожу, программно создавая элементы формы и прописывая путь к данным строк табличной части. Вот код:

&НаКлиенте
Процедура ПредыдущаяСтраница(Команда)
    
    ТекущаяСтраница = ТекущаяСтраница - 1;
    ОбновитьЭлементыФормы(ТекущаяОриентацияЭкрана());
    ЭтаФорма.ОбновитьОтображениеДанных();
    
КонецПроцедуры

&НаКлиенте
Процедура СледующаяСтраница(Команда)
    
    ТекущаяСтраница = ТекущаяСтраница + 1;
    ОбновитьЭлементыФормы(ТекущаяОриентацияЭкрана());
    ЭтаФорма.ОбновитьОтображениеДанных();
    
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыФормы(Ориентация)
    
    //Удалим старые Элементы формы
    Для каждого Стр из ТЧ_ДобавляемыеЭлементы Цикл  
        Группа = Элементы.Найти(Стр.ИмяГруппы);
        Если Не Группа = Неопределено Тогда
            Элементы.Удалить(Группа);    
        КонецЕсли;
        
        Элемент = Элементы.Найти(Стр.ИмяЭлемента);
        Если Не Элемент = Неопределено Тогда
            Элементы.Удалить(Элемент);    
        КонецЕсли;
    КонецЦикла;
    ТЧ_ДобавляемыеЭлементы.Очистить();
        
    РПТовары = ТЧ_Товары.НайтиСтроки(Новый Структура("ПолоВозрастнаяГруппа, НомерСтраницы", ПолоВозрастнаяГруппа, ТекущаяСтраница));    
    Для каждого Стр из РПТовары Цикл  
        пп  = Стр.НомерСтроки;
        
        ИмяГруппы     = "Группа"+пп;
        Стр.Цена    = ?(ТипЗнч(Стр.Цена) = Тип("Число"), СокрЛП(Стр.Цена) + " сум.", Стр.Цена);
        
        Группа                         = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), ЭтаФорма);
        Группа.Вид                    = ВидГруппыФормы.ОбычнаяГруппа;
        Группа.ОтображатьЗаголовок     = Ложь;
        Группа.Отображение             = ОтображениеОбычнойГруппы.Нет;
        Группа.Группировка             = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        
        ДвоичныеДанные = Стр.Фото.ДанныеФайлаМиниатюры.Получить();
        Если ДвоичныеДанные = Неопределено Тогда
            Стр.НавигационнаяСсылка = ПутьКПустойКартинке;
        Иначе
            Стр.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Стр.Фото, "ДанныеФайлаМиниатюры");
        КонецЕсли;
        
        Элемент                          = Элементы.Добавить("ПолеФото"+пп, Тип("ПолеФормы"), Элементы[ИмяГруппы]);
        Элемент.ПутьКДанным              = "ТЧ_Товары["+(пп-1)+"].НавигационнаяСсылка";
        Элемент.Вид                         = ВидПоляФормы.ПолеКартинки;
        Элемент.Подсказка                 = пп-1;
        Элемент.ПоложениеЗаголовка          = ПоложениеЗаголовкаЭлементаФормы.Нет;
        Элемент.РазмерКартинки             = РазмерКартинки.Пропорционально;
        Элемент.ГоризонтальноеПоложение  = ГоризонтальноеПоложениеЭлемента.Лево;
        Элемент.РастягиватьПоГоризонтали = Ложь;
        Элемент.Гиперссылка                 = Истина;
        Элемент.УстановитьДействие("Нажатие", "ОбработкаНажатия");
        
        НоваяСтрока                 = ТЧ_ДобавляемыеЭлементы.Добавить();
        НоваяСтрока.ИмяГруппы         = ИмяГруппы;
        НоваяСтрока.ИмяЭлемента     = Элемент.Имя;
        
        ПодГруппа_1                     = Элементы.Добавить("ПодГруппа"+пп, Тип("ГруппаФормы"), Группа);
        ПодГруппа_1.Вид                    = ВидГруппыФормы.ОбычнаяГруппа;
        ПодГруппа_1.ОтображатьЗаголовок    = Ложь;
        ПодГруппа_1.Отображение         = ОтображениеОбычнойГруппы.Нет;
        ПодГруппа_1.Группировка         = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
        
        Элемент                     = Элементы.Добавить("ПолеТовар"+пп, Тип("ДекорацияФормы"), Элементы["ПодГруппа"+пп]);
        Элемент.Заголовок             = ТЧ_Товары[(пп-1)].Товар;
        Элемент.Подсказка            = пп-1;
        Элемент.Гиперссылка            = Истина;
        Если Ориентация = ОриентацияСтраницы.Портрет Тогда
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,7,Истина);    
        Иначе
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,8,Истина);    
        КонецЕсли;
        Элемент.УстановитьДействие("Нажатие", "ОбработкаНажатия");
        
        НоваяСтрока             = ТЧ_ДобавляемыеЭлементы.Добавить();
        НоваяСтрока.ИмяГруппы     = ИмяГруппы;
        НоваяСтрока.ИмяЭлемента = Элемент.Имя;
        
        Элемент                     = Элементы.Добавить("ПолеЦена"+пп, Тип("ПолеФормы"), Элементы["ПодГруппа"+пп]);
        Элемент.ПутьКДанным         = "ТЧ_Товары["+(пп-1)+"].Цена";
        Элемент.Вид                    = ВидПоляФормы.ПолеНадписи;
        Элемент.Подсказка            = пп-1;
        Элемент.ПоложениеЗаголовка  = ПоложениеЗаголовкаЭлементаФормы.Нет;
        Элемент.Гиперссылка            = Истина;
        Если Ориентация = ОриентацияСтраницы.Портрет Тогда
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,8,Истина);    
        Иначе
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,9,Истина);    
        КонецЕсли;
        Элемент.УстановитьДействие("Нажатие", "ОбработкаНажатия");
        
        НоваяСтрока             = ТЧ_ДобавляемыеЭлементы.Добавить();
        НоваяСтрока.ИмяГруппы     = ИмяГруппы;
        НоваяСтрока.ИмяЭлемента = Элемент.Имя;
        
        
        ПодГруппа_2                          = Элементы.Добавить("ПодПодГруппа"+пп, Тип("ГруппаФормы"), Элементы["ПодГруппа"+пп]);
        ПодГруппа_2.Вид                         = ВидГруппыФормы.ОбычнаяГруппа;
        ПодГруппа_2.ОтображатьЗаголовок         = Ложь;
        ПодГруппа_2.Отображение              = ОтображениеОбычнойГруппы.Нет;
        ПодГруппа_2.Группировка              = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
        ПодГруппа_2.РастягиватьПоГоризонтали = Ложь;
        
        Элемент                     = Элементы.Добавить("ПолеКоличество"+пп, Тип("ПолеФормы"), Элементы["ПодПодГруппа"+пп]);
        Элемент.ПутьКДанным         = "ТЧ_Товары["+(пп-1)+"].Количество";
        Элемент.Вид                    = ВидПоляФормы.ПолеВвода;
        Элемент.Подсказка            = пп-1;
        Элемент.ПоложениеЗаголовка  = ПоложениеЗаголовкаЭлементаФормы.Нет;
        Элемент.КнопкаРегулирования    = Истина;
        Элемент.МинимальноеЗначение = 0;
        Если Ориентация = ОриентацияСтраницы.Портрет Тогда
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,8,Истина);    
        Иначе
            Элемент.Шрифт            = Новый Шрифт(Элемент.Шрифт,,9,Истина);    
        КонецЕсли;
        
        НоваяСтрока             = ТЧ_ДобавляемыеЭлементы.Добавить();
        НоваяСтрока.ИмяГруппы     = ИмяГруппы;
        НоваяСтрока.ИмяЭлемента = Элемент.Имя;
        
        Команда             = Команды.Найти("Купить"+пп);
        Если Команда = Неопределено Тогда
            Команда             = Команды.Добавить("Купить"+пп);
        КонецЕсли;
        Команда.Заголовок     = "Купить";
        Команда.Подсказка    = пп-1;
        Команда.Картинка     = БиблиотекаКартинок.Корзина;
        Команда.Действие    = "Купить";
        
        Элемент             = Элементы.Добавить("ФормаКупить"+пп, Тип("КнопкаФормы"), Элементы["ПодПодГруппа"+пп]);
        Элемент.Вид            = ВидКнопкиФормы.ОбычнаяКнопка;
        Элемент.ИмяКоманды    = Команда.Имя;
        //Элемент.Ширина        = 7;
        Элемент.Высота        = 1;
        Если Ориентация = ОриентацияСтраницы.Портрет Тогда
            Элемент.Шрифт        = Новый Шрифт(Элемент.Шрифт,,6,Истина);    
            Элемент.Отображение = ОтображениеКнопки.Картинка;
        Иначе
            Элемент.Шрифт        = Новый Шрифт(Элемент.Шрифт,,7,Истина);    
            Элемент.Отображение = ОтображениеКнопки.КартинкаИТекст;
        КонецЕсли;
        
        НоваяСтрока             = ТЧ_ДобавляемыеЭлементы.Добавить();
        НоваяСтрока.ИмяГруппы     = ИмяГруппы;
        НоваяСтрока.ИмяЭлемента = Элемент.Имя;
    КонецЦикла;
    
    Элементы.Переместить(Элементы.ГруппаПереключениеСтраниц, ЭтаФорма);
    
    РПТовары_2 = ТЧ_Товары.НайтиСтроки(Новый Структура("ПолоВозрастнаяГруппа", ПолоВозрастнаяГруппа));
    Если РПТовары.Количество() = РПТовары_2.Количество() Тогда
        Элементы.ГруппаПереключениеСтраниц.Видимость = Ложь;    
    Иначе
        Элементы.ГруппаПереключениеСтраниц.Видимость = Истина;    
        
        Если ТекущаяСтраница = 1 Тогда
            Элементы.ПредыдущаяСтраница.Доступность = Ложь;
            Элементы.СледующаяСтраница.Доступность  = Истина;
        ИначеЕсли ТекущаяСтраница = РПТовары_2[РПТовары_2.ВГраница()].НомерСтраницы Тогда
            Элементы.ПредыдущаяСтраница.Доступность = Истина;
            Элементы.СледующаяСтраница.Доступность  = Ложь;
        Иначе
            Элементы.ПредыдущаяСтраница.Доступность = Истина;
            Элементы.СледующаяСтраница.Доступность  = Истина;
        КонецЕсли;
    КонецЕсли;
    
    Если РПТовары.Количество() > 0 Тогда
        ЭтаФорма.ТекущийЭлемент = Элементы["ПолеФото"+РПТовары[0].НомерСтроки];
    КонецЕсли;
    
КонецПроцедуры
27 TreeDogNight
 
06.08.16
05:11
(25) Размер картинок где-то 100 кб, +/- 50
28 Agent ООЗ
 
06.08.16
10:04
прикольные ребята, мутят вывод картинок в конструкторе, и еще удивляются, почему вываливается:)
29 TreeDogNight
 
06.08.16
11:35
(28) Что имеется ввиду под конструктором?
30 DitriX
 
06.08.16
12:25
(29)понимаешь, это очень много, если бы картинки вечили 1 - 3кб, то тогда еще норм, а 100кб - это дохрена.
В этом случае надо хранить две картинки - привью (очень маленькую картинку) и норм картинку. И выводить именно привью.
31 TreeDogNight
 
06.08.16
13:11
(30) У меня как раз в справочнике с файлами 2 реквизита: ДанныеФайла и ДанныеФайлаМиниатюры. Картинка, хранящаяся в реквизите ДанныеФайла где-то в 5-6 раз больше по размеру, чем картинка в реквизите ДанныеФайлаМиниатюры.
Попробую сжимать картинку ещё сильнее при передаче в М.П.
32 DitriX
 
06.08.16
14:19
для работы с картинками есть два правила:
1. Не более 500кб картинок в одной форме.
2. Картинки более 10кб - выводить только в html поле
3. Перезакрывать периодически форму (для очистки памяти)
Вот как то так.
33 TreeDogNight
 
06.08.16
19:58
(32) Спасибо большое за советы! Обязательно попробую их применить.
А можно переоткрыть форму рабочего стола?
34 Vaflya
 
06.08.16
20:45
(33) в чем прелесть этого форума - посоветуют менять концепцию, т к конкретно приведенные проблемы решить мало кто может, потому что это узкая специализация. Будут правы.
35 TreeDogNight
 
30.08.16
17:42
Всем большое спасибо за советы! Решить проблему вылетов помог переход на платформу 8.3.9.64!
Основная теорема систематики: Новые системы плодят новые проблемы.