Мобильный клиент 1С

Публикация № 1092847

Программирование - Мобильные приложения

42
Мобильный клиент 1С только начинает развиваться, поэтому в этой сфере больше вопросов, чем ответов. Но некоторые разработчики уже познакомились с его возможностями и преимуществами. Среди них - руководитель отдела разработок Bilist Дмитрий Шерстобитов, который дал коллегам несколько полезных советов, как работать с мобильным клиентом.

Мы поговорим сегодня про мобильного клиента.

Что такое мобильный клиент?

Мобильный клиент – это достаточно сложно. Потому что это приблизительно «тонкий клиент», однако его функционал доступен из мобильной платформы. Вроде бы на нем мы можем запустить типовые конфигурации уровня ERP, УТ, УНФ и так далее. У нас нет проблем с обменами данных, так как это плюшки «тонкого клиента». Мы можем менять функционал мобильного приложения «на лету», но тут поправочка: менять незначительно. Но об этом отдельно потом поговорим.

Обновление: Уже, в принципе, все последние конфигурации в том или ином виде поддерживают мобильный клиент.

 

 

О чем тогда говорить? О том, что такое мобильный клиент, где он работает, как завести на нем ERP, как делать публикации, какие новые роли там надо добавлять, какие там метаданные появились, как делается отладка и так далее.

 

 

 

Изначально у меня был запланирован именно такой доклад. Но 1С на  wonderland выпустила шикарнейшую статью, где все это описала. Причем  в концепции именно 1C: со всеми советами и рекомендациями, где, что, как, почему. Поэтому об этом мы с вами сегодня говорить не будем.

О чем тогда будем говорить? Мы поговорим про реальность использования мобильного клиента. Какие основные тезисы я хочу сказать?

Первый – это реально хороший симбиоз онлайна и непривязанности к стационарному месту. Пока это многих пугает. Потому что, представьте, мобильный интернет плохой, я зашел в подвал, в подъезд, в лифт, у меня пропадет интернет, и ничего не будет работать.

Есть информация от 1С, что в будущем появится мобильный автономный клиент, который как раз предназначен для таких ситуаций, и он сам будет восстанавливать соединение, и вы можете создавать даже документы. Задумайтесь! Автономно создавать документы, а потом синхронизировать их! И это все делает платформа, не вы! Никаких планов обменов, ничего нет.

Обновление: Надо отметить, что уже анонсирована возможность оффлайн работы в режиме мобильного клиента. https://wonderland.v8.1c.ru/blog/mobilnyy-klient-s-avtonomnym-rezhimom/

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

 

 

Это следствие того, что мобильный клиент взял недостатки работы в онлайне. Где это может быть чревато? Это может быть чревато, например, при вызове клиент-серверных передач. Ведь на самом деле для работы мобильного клиента не нужна высокая скорость интернета, нужна стабильность соединения, без обрывов. А будут обрывы, будут проблемы. 

Но кроме этого, мобильный клиент «благополучно» перенял все проблемы мобильной платформы. Это очевидно. Интерфейс - не от стационарной 1С. И пока не совсем понятно, как мобильный клиент работает с расширениями. Об этом мы чуть поговорим дальше.

 

Про онлайн

 

Как я говорил, серьезную проблему представляют обрывы. Что такое обрыв? Если вы думаете что это просто потеря интернет соединения, то вы не правы. Это заблокированный объект – первое. Второе – съеденная лицензия: объект заблокирован, сессия висит, сеанс висит и лицензию съели. Соответственно, крики пользователей, особенно кладовщиков, которые любят сначала набрать 500 позиций товара. Они их отсканировали, набили вручную 50 позиций, а теперь у них пропал интернет.

Кроме того, это подгрузка лишней информации в плане трафика. Если вы будете делать картинки, например, в стационарной базе 20 мегабайт, это нормально, стационарная потянет. Но мобильная это все будет тянуть из интернета. Поэтому учитывайте эти моменты.

 

И есть проблемы работы с файловой базой. Мобильный клиент настоятельно рекомендую использовать только в клиент-серверном варианте. Даже не пытайтесь запустить его на файловых базах. Ничего из этого хорошего не получится. Опять-таки по причине обрывов. Потому что когда будет обрыв, вы с файловой базы никого не сможете нормально выкинуть. И даже перезагрузка сервера не всегда помогает.

Как видите, имеется ряд определенных неудобств. И как я ранее говорил, все плюсы, которые есть у мобильной платформы, это, по сути, минусы мобильного клиента.

 

 

 

Представьте себе, мы берем типовую конфигурацию какую-то, ту же самую ERP, открываем документ заказа. Сколько там полей? Сколько там колонок? Попробуем открыть одну какую-то строку. Нам придется долго листать, просто чтобы заполнить эти поля. Поэтому это тоже надо учитывать.

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

 

 

 

Но там ничего не понятно. Справа - менее непонятно, но это то, как мы делаем мобильные формы в режимах мобильного приложения и мобильного клиента.

Это строка. Когда вы хотите добавить новую строку, изменить новую строку, вы нажимаете, у вас открывается первая формочка. Это выглядит так:

 

 

Режима непосредственного редактирования нет. Для мобильных платформ, для мобильных решений это было бы непонятное решение. Поэтому у вас все колонки преобразуются в элементы, вы начинаете листать и все нужное указывать. Справа пример того, как мы реализуем это у себя в работе.

Обратите внимание: принципиально разный подход. Но ориентир – на  нажатие элементов.

Например, на слайде у нас идут вверху отборы, а внизу (1,2, 3, 4, 5 и так далее) – количество. Вы нажимаете на нужное вам количество, например, на 5, а потом нажимаете просто на строку с товаром, и там прибавляется 5. Если надо отнять, нажимаете минус и начинаете отнимать.

К чему я это все говорю? К тому, что если вы думаете, что вы можете взять и запустить ERP с полпинка в мобильном клиенте, так не получится. Не, ну вы можете запустить, но работать с ним будет нереально.

Вот пример формы мобильного клиента. А рядом та же форма, но в мобильном приложении.

 

 

 

Парадокс, да? Я-то понимаю, что здесь надо сделать. Я сейчас не говорю про косяки, плюсики, минусики и так далее, это мелочи на самом деле. Главное: видите внизу - сколько съедает легенда? Она не нужна в мобильном. Вверху тоже куча всего, оно тоже съедает, и оно тоже не нужно в мобильном.  А рядом та же самая форма, просто скопированная в мобильную форму, где просто лишнее убрали.

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

 

Про расширения

 

Как я говорил, не совсем понятна работа расширения.

 

 

 

Обратите внимание: процедура ПриНачалеРаботыСистемы() вверху, основная конфигурация, Сообщить(“Основная конфа”);

Внизу я перехватил расширением и говорю Сообщить(“Расширение”); мобильный клиент не отвечает на “Основная конфа”. При этом стационарный клиент говорит “Расширение”. Не до конца понятно.

Однако если мы говорим про элементы формы, вверху основная конфигурация, внизу – расширение. Пожалуйста, на мобильном клиенте расширение.

 

 

 

То есть имеются какие-то нюансы, пока мне непонятные. И я не смог понять, почему так происходит. Я даже подготовил список вопросов ребятам, поспрашиваю, может быть, подскажут, может, я где-то что-то не дочитал, не нашел. Но такие моменты бывают. И они иногда приводят в ступор. И моя первая мысль, что расширения вообще не работают. Потом я понял, что они все-таки работают. Но пока работают странно.

Кстати, на слайде представлена версия 8.3.13. Специально проверял, брал последнюю версию.

Что можно сделать с помощью расширений? Естественно, можно менять главный пункт «приоритеты полей». Что такое «приоритеты полей»? 1С добавила новое свойство специально для мобильного клиента. И когда у вас идет табличная часть, например, список заказов, список товаров и так далее, вы говорите: «я хочу, чтобы у меня первая строка была обязательно вот эта, потом эта, потом количество, цена. И если влезет, то можно и НДС. А если и это влезет, то можно то-то и то-то». Грубо говоря, мы выставляем приоритеты. И теперь это можно делать в расширении. В расширении можно реально расставлять приоритеты и не менять при этом основную конфигурацию.

Как я говорил, можно скрывать всякие поля, править элементы формы и все, что с этим связано. Можно расширять мобильный функционал: мы можем сделать фотографию, просканировать штрих-код, сделать еще что-то в этом духе.

 

 

 

Но иногда отличается поведение в мобильном клиенте и в стационарном. Это может привести к тому, что надо будет писать какие-то предпроцессы, думать, как обойти какие-то вещи по-другому. К этому тоже будьте готовы.

Перед заключением я хочу сказать: обязательно используйте HTTPS. Обязательно. Даже не пытайтесь использовать мобильный клиент в режиме просто HTTP-соединения. Еще раз напоминаю: 1С использует basic-авторизацию.

Украсть логин/пароль при этом - это дело даже не пяти минут.

 

 

 

 

Мне любят сидеть и рассказывать, что мы никому не нужны, мы никому не интересны, мы маленькая фирма... Ребята, это поток. Вы подключились к компрометированной wi-fi-точке, ваши логин и пароль улетели в этот поток. Там никто не сидит и не наблюдает за вами. Никаких глазастых хакеров, которые сидят и мечтают украсть ваш пароль, там нет. Это поток. Вы попадете в этот поток, логины уплывают, а потом начинаются чудеса. Потом может оказаться, что конкурент имеет доступ к вашей базе, например. Поэтому используйте HTTPS.

Напоминаю также, что есть Let’s Encrypt. Он  бесплатный. Сертификат выдается ими, ничего никому платить не надо.

 

Про иконки

 

Отдельно я хотел поговорить про иконки. Мне иногда страшно, когда начинают кидать разные иконки, начинают пихать их под разные расширения, и получается, что только загрузка иконок занимает, наверное, 50 мегабайт.

У меня вопрос к зрителям: как вы думаете, что это?

 

 

Это картинки? Этот объект метаданных,  который выведен на форму, это картинка, как вы думаете?

Вопрос с подвохом, я спалился, но не важно. Я отвечу: нет, это не картинка.

 

 

Теперь вы видите те же картинки, точнее, то, как это выглядит в браузере и в тонком клиенте. Что это за волшебство? Это не волшебство. Это юникод символы. Их очень много. И когда вам надо добавить крестики, галочки, часы, луну, погоду, все что угодно, пользуйтесь этими юникодами.

 

 

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

Это тоже важно, когда вы нашли, как добавляются галочки, как добавляются часы, как добавляются какие-то эмодзи и так далее. Ведь люди не  задумываются о том, что на Android это выглядит иначе, чем на другой платформе или в браузере. Нашли какую-то красивую иконку или нарисовали, заказали дизайнеру, он и поставил. Хотя есть принятые стандарты, и эти стандарты поддерживаются сообществом, и придумывать, выдумывать здесь ничего не надо. Обязательно пользуйтесь этой фишкой, в том числе и в стационарных конфигурациях тоже.

 

Заключение

 

У меня доклад получился короткий. И в заключение я хочу сказать одно: мобильный клиент реально работает. У нас есть проекты с мобильным клиентом, но мы реально с ним работаем. Его используют в тестовом режиме, по-моему, уже 50 торговых агентов.

Но я хочу предупредить, что это нелегко. И если у вас появится проект с мобильным клиентом, прежде чем называть какие-то цены или что-то еще,  попробуйте вначале сами все запустить, все те требования, которые хочет заказчик, даже формы. Это очень важно. Если клиент приходит и говорит: «я хочу, чтобы у меня в УНФ, в мобильном клиенте вбивали заказы», вам придется перерисовывать формы. Или клиент будет страдать, или вам придётся перерисовывать формы. Обращайте на это внимание. Это очень важный пункт.

 

Кроме этого, не думайте что мобильный клиент – это тонкий клиент или это мобильная платформа. Не пытайтесь их сравнивать. На самом деле это уже четвертая сущность, как web-браузер. Ведь когда говорим о толстом клиенте, о тонком клиенте, мы не пытаемся как-то сравнить их с браузером. Хотя, по сути, технология подключения что у браузера, что у тонкого клиента приблизительно совпадает. Но мы говорим отдельно про браузер, потому что это вообще отдельно. То же самое и здесь. Мобильный клиент – это отдельная технология, она требует отдельных навыков, отдельных функций. Даже внешние компоненты из тех, которые работают в мобильной платформе, не все работают на текущий момент в мобильном клиенте. Конечно это мелкие баги, они активно исправляются, потому что технология, действительно, сложная.

 

 

 

Еще раз напоминаю про  HTTPS. Это я не устану напоминать никогда.

И опять напомню про картинки. Не тяните большие объемы данных. Будете  тянуть большие объемы данных, у вас будет глючить клиент. Это касается не только графики. Это касается, в том числе, клиент-серверных вызовов.

Активно используйте функции «без контекста».

Пытайтесь архивировать данные. При передаче данных с клиента на сервер иногда даже помогает своя сериализация данных в JSON, помещение в хранилище значений, а потом передача всего этого на сервер и восстановление на сервере.

Парадоксально в принципе, потому что 1С должна делать это самостоятельно. Но почему-то обратили внимание, что если идет большой объем данных, так работает быстрее. Не знаю почему. Я думаю, что мы просто нарвались на какие-то чудеса, и так не должно быть. Хотя всякое может быть, надо проверять, надо смотреть.

Насчет лицензии, обрывов и всего остального. Не пытайтесь запустить в режиме файловой версии, потому что это будет проблемой. Даже при  стабильном подключении, если вы что-то изменили в конфигурации, какой-то объект либо обновили конфигурацию, расширение и так далее, может пропасть соединение у мобильного клиента, и он попадет в статус зависших сеансов. С файловыми версиями вы, естественно, ничего не сделаете. И, грубо говоря, эксперименты над файловыми версиями не принесут вам никакого удовольствия. Лучше сразу разворачивайте клиент-серверный вариант и экспериментируйте именно на нем. И если вдруг что-то убьете, сели, перезапустили, попробовали, проверили, поигрались...

Последнее, что хочу сказать. Я поигрался уже и с 8.3.13, и с мобильным клиентом, и с мобильной платформой тоже. Если вы знаете, в 8.3.13 появился сейчас новый механизм, которым вы можете вешать стили, и благодаря этим стилям вы можете преобразовывать внешний вид внутреннего приложения. Это касается и стационарной версии, и веб-клиента. Это работает и в мобильном клиенте. Я проверял. Зелененькая 1С - это, конечно, было очень интересно, непривычно, скажем так. Но это действительно работает.

А если вспомнить статьи, которые говорят, что на темных темах можно сэкономить до 50% заряда батареи устройства, то теперь - мы и это можем.

Переходите на темную сторону - у нас печеньки :)

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2018 EDUCATION. Больше статей можно прочитать здесь.

Приглашаем вас на новую конференцию INFOSTART EVENT 2019!

42

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. serg_gres 139 13.07.19 17:58 Сейчас в теме
Можно подробнее как Вы картинки Unicode выводили?
Izumov; VIA_1C; qwed557; +3 Ответить
11. slax 15.07.19 13:37 Сейчас в теме
(1) скорее всего так: выводить результат выражения

Символ( КодСимволаВЮникодеВДесятеричнойСистеме )


в поле на форме или область табличного документа,

а для вывода в поле html уже дополнительно подключать различные теги meta и использовать css.

код команды формы на скриншоте

&НаКлиенте
Процедура ПоказатьСимвол(Команда)
	Объект.ОтображаемыйСимвол = Символ( AnyToDec( Объект.КодСимволаВЮникоде, 16 ) );
	ПолеДокумента = СтрШаблон( "<html><meta charset=utf-8><body><p>&#x%1;</p></body></html>", Объект.КодСимволаВЮникоде ); // x1f680
	
	Область1 = табДокумент.Область( "R1C1" );
	Область1.Текст = Объект.ОтображаемыйСимвол;
	
	Область2 = табДокумент.Область( "R2C1" );
	Область2.Текст = Объект.КодСимволаВЮникоде;
КонецПроцедуры
Показать
Прикрепленные файлы:
serg_gres; +1 Ответить
12. DitriX 1698 15.07.19 15:35 Сейчас в теме
(1) Та просто - нажимаете "Win+.", на вин 10 и выбираете символы, либо копируете и вставляете.
Конфигуратор правда не все их выводит, бывает частенько просто квадраты, но EDT выводит все без проблем.
Если надо просто по коду - то вот так
Сообщить("Бла" + Char(10024));
serg_gres; +1 Ответить
2. SeiOkami 1033 13.07.19 22:31 Сейчас в теме
По поводу группы картинок Юникод - это классный лайфхак. Часто пользуюсь, когда хотят картинки в списках или отчётах делать. Про это можно отдельную статью запилить - тема подходит для всех версий "клиентов" платформы.
4. qwed557 30 14.07.19 13:57 Сейчас в теме
(2)Расскажите подробней, как это использовать в 1с?
Izumov; fredly_nightly; +2 Ответить
13. DitriX 1698 15.07.19 15:36 Сейчас в теме
(4) Читайте (12)
Каждый юникод - это как обычный символ, вот так и выводите :) Например, через условное оформление в СКД
3. acanta 60 13.07.19 22:42 Сейчас в теме
Вы знаете, мне с таким трудом далось запоминание привычных всем сокращений (ЗУП, БП, БСХП, УПП) что я после прочтения этой статьи подумала что будет весьма последовательным сократить клиентов у 1С - WC - web client, MC - мобильный клиент например. Их так много стало. А вы как думаете?
5. DoctorRoza 15.07.19 08:44 Сейчас в теме
WC, как -то не кулюторно, как сокращение.
birusik; Xershi; +2 Ответить
6. Xershi 683 15.07.19 08:47 Сейчас в теме
Напоминаю также, что есть Let’s Encrypt. Он бесплатный. Сертификат выдается ими, ничего никому платить не надо.

Спасибо, передам админам!
7. Leits 1 15.07.19 09:18 Сейчас в теме
адекватного способа решать проблему с нехваткой лицензий, возникающую из-за зависших сеансов до сих пор нет?
14. DitriX 1698 15.07.19 15:38 Сейчас в теме
(7) Так как и везде, при http соединение - ставите параметры отключения и завершения, в настройке при публикации, или как во фреше - выкидываете не активных.
9. Izumov 6 15.07.19 10:12 Сейчас в теме
"Вы можете просто написать «сообщить галочку» и скопировать как текст"
Попробовал Сообщить("Вот U+1F600"); ничего не получилось.
Мобильная платформа.
15. DitriX 1698 15.07.19 15:38 Сейчас в теме
(9) Не совсем верно, смотри в (12)
10. yarsort 120 15.07.19 10:49 Сейчас в теме
Вот читаю, я это все и просто ахреневаю: кучу всего сделали, а появление подсказки без нажатия Ctrl+Пробел до сих пор нет...
16. DitriX 1698 15.07.19 15:38 Сейчас в теме
(10)Я в EDT работаю уже больше года. Полет отличный :)
17. yarsort 120 15.07.19 16:27 Сейчас в теме
А обычные формы можно в EDT создавать? Куда бы сделать багрепорт об этой функции? Как умолить разработчиков добавить такую простую опцию? Может знаете?
18. Кадош 15.07.19 18:27 Сейчас в теме
Чет не сказали самого главного - нельзя взять кастомизированную конфигурацию и запустить ее на ios.
28. DitriX 1698 17.07.19 11:36 Сейчас в теме
(18) В режиме разработки или инхаус приложений (но не точно) - можно.
А в другом случае и на гугле нельзя. Узнают - забанят
30. Кадош 17.07.19 23:32 Сейчас в теме
(28) при этом в яблочников есть ограничение на количество публикаций от одного разработчика, а нормальной функции конфигураций в клиенте так и нет. У Apple кстати были претензии по этому поводу к 1С.
19. VladC# 63 16.07.19 07:57 Сейчас в теме
Мобильный клиент 1С только начинает развиваться...

Вы серьезно? Какой год он уже начинает развиваться? Прошёл всем известные курсы по мобильной разработке, клиент несколько лет назад был в состоянии клинической смерти и жизнь в нём поддерживалась лишь благодаря финансовым ресурсам 1С, так и сегодня лучше не стало, он по прежнему не никому особо не нужен - жуткие тормоза, проблемы с лицензиями, ограниченные возможности, подходит только для рисования демо-проектов типа "смотрите как тут можно", одним словом полный отстой.
20. o4karek 16.07.19 09:14 Сейчас в теме
(19) мобильный клиент вышел в версии 8.3.12 (https://dl03.1c.ru/content/Platform/8_3_15_1489/1cv8upd_8_3_15_1489.htm#324ee4d7-9df9-11e7-a3f7-0050569f678a)
8.3.12 вышла в свет в апреле 2018 года, а мобильная 8.3.12 - в июне 18 года
Где вы взяли несколько лет назад мобильный клиент в состоянии клинической смерти - загадка...
21. VladC# 63 16.07.19 09:31 Сейчас в теме
(20)Прощу прощения, спутал с мобильной платформой.
22. capitan 1226 16.07.19 11:07 Сейчас в теме
Я может что то пропустил.
Как устанавливать мобильный клиент из Google Play или AppStore ?
Без лайфхаков )
23. o4karek 16.07.19 11:47 Сейчас в теме
(22) Как и обычное мобильное приложение. Собирается сборщиком, публикуется в магазин - профит.
Пустой мобильный клиент (как в большой платформе) в магазин положить нельзя.
24. capitan 1226 16.07.19 13:44 Сейчас в теме
(23)Т.е. он будет под 1 базу заточен ?
25. o4karek 16.07.19 15:20 Сейчас в теме
(24) Он будет заточен под те базы, которые используют конфигурации, указанные при сборки приложения.
27. pro-rok 237 17.07.19 07:46 Сейчас в теме
(22) Никак, качай с сайта обновлений 1С, там есть apk файл.
(24) Нет это просто клиент, прописываешь путь к опубликованной базе и вперед! Ничего собирать и публиковать в магазине не надо, если мы говорим про клиента.
26. capitan 1226 16.07.19 15:31 Сейчас в теме
Т.е. теоретически можно в гугл плее найти опубликованного клиента для любых бухгалтерий например ?
29. anvolkov1cbit 24 17.07.19 14:37 Сейчас в теме
Дмитрий, правильно ли я понимаю, что использовать юникод эмодзи получится только в табдоках или поле html? Как картинку для кнопки использовать не получится?
31. DitriX 1698 18.07.19 13:34 Сейчас в теме
(29) Получится, но не как картинку, а как текст
32. anvolkov1cbit 24 18.07.19 14:17 Сейчас в теме
(31) А какой текст должен быть, не подскажете? Я Пытаюсь сделать:
Элемент.ТестоваяКнопка.Заголовок = Символ(10024);

На выходе получаю черный квадрат, и так для всех символов, кроме самых примитивных, типа: ☺ (черно-белый). Платформа 8.3.14.1630, конфа без режима, запуск в Тонком клиенте
Оставьте свое сообщение