Но если честно, настоящая цель статьи – это:
- Поговорить о тех возможностях, которые есть в мобильной платформе 1С.
- Убедить вас, что мобильная платформа 1С не сильно «отвязана» от мобильной экосистемы в целом. Потому что многие считают, что 1С на мобильном устройстве – это своего рода контейнер в закрытом «черном ящике», который вообще никуда доступа не имеет. И хотя я про это уже не первый раз говорю, большинство людей меня почему-то все равно не слышит.
- Предложить вам пару вариантов того, как можно анализировать информацию в мобильном приложении – что, к сожалению, этот вопрос большинство людей ставит в тупик.
- Рассказать немного про монетизацию – там очень много нюансов и говорить об этом можно долго и нудно.
- Ну и естественно, ответить на один постоянный вопрос, который возникает у всех, кто так или иначе интересовался мобильной платформой: «Что лучше, учить Java (C++ , ObjectC и др. языки для мобильной разработки) или разбираться в тонкостях разработки на мобильной платформе 1С? Что выбрать – 1С или все-таки, какие-то нативные решения?»
Проблемы в мобильной 1С
Вначале я хочу немного затронуть те проблемы мобильной платформы 1С, которые приводят в итоге к вопросу «Может быть, все-таки лучше писать какие-то нативные приложения, а не на 1С?»
- Первая проблема – это пользователи, которые вообще не знают, что такое 1С. Мы уже привыкли, что экосистема 1С такова, что ее приложения используются везде: в браузерах, в тонких клиентах, на мобильных устройствах и т.д. – и выглядят однотипно, узнаваемо и повторяемо. Но, к сожалению, мобильный рынок не такой. На мобильном рынке очень многие люди вообще не понимают, что такое 1С, большинство из них с брендом 1С никогда не встречались.
- Вторая проблема – это программисты, которые знают, что такое 1С. Дело в том, что когда программист начинает свой стационарный опыт переносить на мобильное приложение, это превращается в проблему.
- Третья проблема связана уже с самой платформой 1С. До выхода 8.3.9 мобильная платформа вообще ничего не знала о том, на каком устройстве она находится и какие у него параметры. В принципе, она до сих пор не может получать об устройстве ту информацию, которая необходима для массово распространяемых мобильных приложений, для того, чтобы собирать аналитические маркетинговые данные и т.д. У мобильной платформы до сих пор нет взаимодействия с SDK-компонентами, а если и есть, то на текущий момент это реализовано в виде внешних компонент, с которыми тоже есть определенный ряд проблем.
- Ну и естественно, четвертая проблема – это руководители, которые ничего об этих ограничениях в мобильной платформе 1С не знают. Допустим, это какой-то человек, которые ранее вел стационарные проекты 1С – у него компания, куча программистов. И он думает – ну раз стационарный рынок мы кое-как отвоевали, давайте теперь пойдем и на мобильный. И, не разбираясь, идет в омут, а потом сам себе удивляется: «а зачем я вообще выбрал 1С?»
Первая проблема – пользователи
Итак, первая проблема – это пользователи.
- Мобильный рынок – это не место, где нужны франчи (не в целом, как люди, компании и т.д., а именно как система франчайзинга 1С). Мобильный рынок – это то место, где человек скачал приложение, установил, посмотрел, не понравилось – удалил. Вы не сможете к человеку приходить, что-то ему рассказывать и т.д. Конечно, гипотетически вы можете проводить по своему приложению какие-то курсы или что-то еще в этом духе, но вряд ли их кто-то будет посещать, потому что все привыкли, что для мобильного телефона достаточно что-то скачать, и уже все интуитивно понятно. И это, конечно, проблема.
- Следующая проблема – это пользователи, которые скачивают все подряд, просто из-за того, что им нужно найти какое-то приложение: допустим, для инвентаризации, для личных финансов или для гимнастики. Они вбивают, например, «личные финансы» – и из того, что им вывелось, 10 приложений скачивают – что попало. Но остается-то на телефоне только одно. В результате не до конца понятно, что вообще люди хотят. Иногда человек скачал, открыл и ему просто не понравится внешний вид – он закрыл и удалил. А со стационарными программами мы привыкли, что там все немного по-другому.
- Ну и, естественно, когда человек скачивает мобильное приложение и не знает, что такое 1С в принципе – это тоже проблема. Потому что тогда он не понимает логику проводок документов, логику отчетов, расшифровок отчетов и т.д. Все это осложняется тем, что в 1С нет такого понятия, как highlight – мы не можем как-то подсветить пользователю порядок действий, чтобы он последовал каким-то конкретным путем, вышел к какому-то результату и что-то получил в итоге. Поэтому при разработке мы представляем себе пользователей вот так:
Упрощаем все настолько, чтобы пользователи в любом состоянии смогли бы в нашем приложении сделать нужные им функции. Если смогут – значит, все работает корректно. Если нет – значит, надо что-то менять.
Вторая проблема – программисты
Следующая проблема – это программисты.
- В первую очередь, это те, которые переносят опыт работы со стационарной 1С на работу с мобильной 1С.
- Они, естественно, уверены, что пользователь, который скачал это приложение, вообще в принципе понимает, что он делает. И если он открывает документ реализации, значит, он собирается сделать продажу. Увы, это не так. Пользователь, может быть, открывает документ реализации, чтобы попытаться сделать перемещение, а потом удивиться, почему это не работает. Такие моменты надо учитывать.
- Кроме этого, программисты не хотят использовать тестирование. Почему я на слайде упомянул Лустина? Потому что его команда сейчас реализовала поведенческое тестирование для воспроизведения каких-то сценариев действия пользователя на виртуальных машинах, которые эмулируют Android. Это значит, что тестирование уже есть – не только стационарное, но еще и мобильное. Так что если вы занимаетесь разработкой и т.д., то рекомендую обратиться, чтобы хотя бы узнать, что это такое и как это делается. Потому что тестировать мобильное приложение – это не то же самое, что тестировать стационарное.
- У программистов есть такая поговорка, что если чего-то нет, то это фича. И в итоге картина работы программиста получается почти такая, как на слайде. Причем это не шутка, потому что ты можешь две-три недели биться над какой-то одной проблемой и не найти для нее никакого нормального решения. И в итоге все сделаешь кое-как.
Третья проблема – мобильная платформа 1С
- Мобильная платформа не знает, на каком устройстве она запущена и не может понять многое об устройстве как таковом. Она не может работать со сканерами отпечатков пальцев – этого многие хотели. Она не может работать с какими-то другими интересными возможностями. Она не может работать с бродкастами, что очень печально, потому что тогда бы мы могли отлавливать какие-то внутренние системные оповещения. Допустим, было бы здорово отловить момент, когда у батареи заряд 5%, записать 1С и запретить ее после этого открывать вообще, чтобы не было ситуации, когда человек работает до последнего, нажимает «Записать документ» в 100 тысяч строк и у него отключается телефон. В этот момент база рушится, и человек «рвет на себе волосы». Так бы можно было бы избежать этой проблемы.
- Естественно, местами 1С «вылетает», и из-за этого, конечно же, бывают рухнувшие базы. В 8.3.9 эту проблему частично решили тем, что в платформу внесли такое понятие, как «Тестирование и исправление». Причем, оно выглядит точно так же, как и на стационарной 1С и выполняет, по сути, те же самые функции. И это очень актуально для мобильной платформы, потому что свободного места в мобильных устройствах все-таки не терабайты и если вы скачали в базу какие-то данные, произвели какие-то перерасчеты, у вас база может вырасти очень сильно. А с помощью «Тестирования и исправления» ее можно существенно ужать.
- И в целом, все в мобильной платформе выглядит так, как на картинке. Особенно, когда разрабатываешь какие-то новые превнесенные возможности, никогда не знаешь, ее поведение сейчас – это баг какой-то или это нормальное поведение системы в целом. К сожалению, такая проблема на текущий момент до сих пор существует. И только с опытом ты уже начинаешь понимать, в какую сторону 1С движется, и где у нее баг, а где фича.
Четвертая проблема – руководители проектов
Кроме этого, существует проблема с руководителями проекта.
- Во-первых, они считают, что им достаточно одного программиста 1С, и они «всех порвут», все сделают и вообще будет «бомба». Но, оказывается, найти людей, которые разбираются или хотя бы хотят разбираться в мобильной платформе, очень тяжело. И к тому же кроме самого 1С-ника надо еще целый плацдарм людей сверху накинуть. Помните картинку, где Вася яму копает, и рядом куча народу стоит: менеджер проекта, менеджер по продажам, начальник отдела и т.д. Приблизительно так это сейчас и выглядит. И, к сожалению, в мобильном мире это в принципе нормально. Но в любом случае нужен не один программист 1С – с одним не получится.
- Кроме этого, обычно руководители считают, что продав в приложении внутреннюю подписку за один доллар, они получат с этого один доллар. Нет, это не так. И когда они говорят, что раз проект стоит 10 тысяч долларов, то для его окупаемости нужно, чтобы его купило 10 тысяч человек по одному доллару – это тоже не так. Потому что 30% комиссии забирают одни, 10% другие, 10% третьи, и в итоге получается, что остается в лучшем случае половина, и то без учета банковских переводов и т.д. Поэтому не допускайте таких ошибок. И если вы все-таки собираетесь разрабатывать, тиражировать, продавать и зарабатывать, не забывайте про эти нюансы.
- Ну и естественно, люди, которые не принимают участия в мобильной разработке, по умолчанию, так же, как и некоторые программисты, считают, что стационарная 1С имеет тот же самый функционал, что и мобильная. Например, когда в мобильной платформе 8.3.9 появилась СКД, меня засыпали вопросами: «а как там можно вставить группировки, иерархию, покажите мне конструктор СКД». Нет конструктора СКД, есть просто объект СКД, и вы можете программно его назначать, и как угодно описывать. А СКД в виде отчета, когда вы сами можете менять положение полей, группировок и т.д., в мобильном приложении нет – все изменение поведения вам придется описывать программно.
- Ну и естественно, большинство людей почему-то думают, что продвижение – это для «лузеров». Меня очень сильно насторожил доклад фирмы 1С, где они сказали, что не раскручивают свои разработки по мобильной платформе – у них и без этого хорошо все скачивают. Здесь я бы очень сильно поспорил, потому что фирма 1С сама по себе очень известна у нас в СНГ. А если вы, как разработчик-одиночка, либо как какая-то не столь значительная команда или компания, попробуете сделать то же самое без продвижения, я могу с 99% уверенностью сказать, что у вас вряд ли что-то получится, если только вы не выпустите какую-то «ну просто бомбу». Поэтому все-таки продвижение нужно, и если вы планируете что-то зарабатывать (либо деньги с продажи своего мобильного приложения, либо какие-то внутренние покупки, либо еще что-нибудь) без него не обойтись. Продать свое приложение просто так вы вряд ли вы сможете.
И в итоге руководитель, не зная всех этих тонкостей и нюансов, говорит программисту: «сделай вот так». И программист начинает «прыгать между кольцами», потому что реально многое в мобильной платформе 1С с ходу сделать не получится. И донести это до людей тоже сложно, потому что они говорят: «а в стационарной же было!» Это как при переходе с УТ10 на УТ11: «в УТ10 было, сделайте нам и тут так же».
Что мы получаем в итоге?
- Пользователей, которые боятся 1С. У 1С есть свой определенный почерк, поэтому чуть более продвинутые пользователи способны отличить приложение на 1С и не на 1С. И если кто-то публикует платное приложение, нарабатывает себе аудиторию и после этого теряется – это очень печально и грустно. Поэтому если вы не хотите доводить дело до конца – не начинайте. Это очень сильно влияет на рынок. Особенно, на текущий момент.
- Естественно, появляются злые программисты, которые уже устали от тех ошибок, которые возникают, от багов устройств, от приколов с прошивками, от неработы мобильной платформы в некоторых нюансах, от рухнувших баз и т.д.
- Ну и естественно, мобильная платформа 1С, которая не дает развить полет фантазии. А ведь так хочется, чтобы у нас тоже было, как в приложениях от facebook, google и т.д. все так красиво, плавно, highlight –ом все подсвечивалось, лишнее убиралось. И когда начинаешь пытаться сделать что-то подобное на мобильной платформе 1С, то сразу понимаешь, что с точки зрения разработки в конфигураторе это невозможно. Но все равно какое-то чувство досады остается: «Вот я хочу командную панель для табличной части добавить не сверху, а где-то справа снизу, чтобы там была кнопочка «добавить» и еще какие-то кнопочки для расшифровки строки по какой-то аналитике. Это бы и место сэкономило, и было бы красиво». Но нельзя. Пока во всяком случае. Что будет дальше – не знаю.
- Ну и естественно, это руководители, которые «погорели» на мобильной 1С и после этого ходят и всем рассказывают, какая 1С плохая. Они говорят: «Мы вложились, разработали вот это и вот это, и из-за того, что оно неправильно отработало, все сгорело, ничего не получилось, поэтому никто никогда не беритесь за мобильное 1С, это вообще ерунда». И поскольку я занимаюсь мобильной разработкой с момента ее появления (уже более 2-х лет), я из раза в раз такое наблюдаю, когда за всю эту кухню берутся люди, не имеющие заинтересованных программистов, которые хотят развиваться. Например, был случай, когда руководитель захотел сделать проект на мобильном приложении с программистами, которые до сих пор работали только на 7.7 и на обычных формах, а управляемые формы еще в глаза не видели. И вот он им поставил задачу перейти сразу на мобильную платформу. Это конечно похвально, только программисты не очень сильно горели желанием. И в итоге, конечно же, ничего не вышло. Когда я с ним общался, он мне говорил: «мобильная платформа не может то, не может это, она вообще ничего не может». Я ему показываю телефон: «ну вот, так может, и так может». – «А что они мне тогда сказали, что не может?» А им просто было неинтересно разбираться.
Именно такие нюансы и стопорят прогресс мобильной платформы.
Ну и отдельно все-таки хочется сказать, чтобы вы, видя какие-то проблемы, обращались к разработчикам 1С и просто «стучали им молотком по головам» для того чтобы они вас услышали. С одной стороны, они хотят нас услышать, чтобы понять, что действительно нам надо, но, к сожалению, большинство людей до сих пор считают, что в фирме 1С работают только бюрократы, которые ничего не понимают, не сделают и т.д. В итоге получается, что в фирму 1С по вопросам разработки мобильной платформы пишут один-два-три-пять человек, передают туда какой-то свой наработанный опыт, чтобы они в мобильной платформе что-то меняли, исправляли и т.д. А остальные все сидят и что-то ждут. И это все приводит к вот таким итогам.
Соответственно, вопрос: «Может, не стоит все-таки в 1С?»
Действительно, когда ты первый раз вникаешь в тонкости разработки тиражных решений на мобильном приложении 1С, ты начинаешь реально страдать, потому что первое, что тебе говорят маркетологи, аналитики и т.д. – это: «Подключи нам Google Analytics, подключи нам печать, подключи нам то, подключи нам это». А ты им в ответ: «В мобильном приложении 1С этого не сделать».
Как можно подключить Google Analytics? Берем SDK и встраиваем. А в 1С SDK встроить нельзя.
Разбирались с подключением приложения по печати с мобильных устройств PrintHand, вышли на разработчиков, они нам говорят: «Мы вам SDK вышлем». Я отвечаю: «Нет, ребята, нам ваша SDK не подойдет, потому что мы ее не сможем встроить в наш фреймворк». Они удивляются: «А что это у вас за фреймворк такой?» Причем, ребята русскоговорящие, просто в Кремниевой долине находятся. В итоге, они специально для нас реализовали такую возможность интеграции, когда люди скачивают бесплатную версию PrintHand и регистрируются в ней через наше приложение. По-другому PrintHand к 1С нормально не подключить. Но главное, что эта проблема была решена, потому что при стандартной печати из мобильного приложения табличный документ просто переводится в картинку с потерей качества – вы на бумаге никогда четкого изображения не получите (конечно, если у вас не сверхдорогой принтер, который может это как-то нивелировать). Тем более, при помощи встроенной печати нет возможности использовать стационарные и сетевые принтеры, принтеры через Google cloud и т.д. К сожалению, пока что мобильное приложение 1С работает только так. Но теперь все эти возможности можно реализовать при помощи PrintHand.
Новые возможности мобильной платформы 8.3.9
И в целом получается, что каждый раз при обновлении 1С у нас появляются новые интересные нюансы. Вообще когда с 1С работаешь, чувствуешь, что она, как какой-то монстр, последовательно идет за желаниями разработчиков, но немного опаздывает.
- Например, сейчас появилось бэкапы и тестирование и исправление баз в мобильной платформе. Раньше этого не было, и все страдали – начиная от программистов, разработчиков и заканчивая пользователями. Раньше когда пользователь гневно писал, что у него в приложении «ошибка sdbl», что-либо сделать было вообще невозможно. Зато сейчас если 1С при входе видит какую-то ошибку базы данных, она сразу автоматически без участия пользователя запускает «тестирование и исправление». У нас несколько проблемных баз таким образом «вылечились». Мы проводили на них специальные тесты – они действительно восстановились, все стало корректно, нормально.
- Также добавили форму выбора файлов. Потому что если в windows у нас есть Explorer и 1С подразумевает, что этот компонент в системе есть всегда, то в Android-системах такого, к сожалению, нет. Там надо писать что-то свое. И вот в 8.3.9 появился выбор файлов. Теперь можно открыть окошко, перейти к нужной папке и выбрать там файл.
- Кроме того, появились функции работы с клавиатурой. Теперь мы можем назначить тип для поля ввода: это может быть число, или обычная строка, или e-mail, или адрес. И в зависимости от выбранного типа у вас будет меняться раскладка клавиатуры. А для поля с типом e-mail будет добавляться @ и т.д. Кроме этого, вы можете переназначить действие для самой крайней правой кнопки, где обычно в 1С было «Готово». Вы можете там сделать «ОК», «Готово», «Далее», «Отменить» и т.д. Получается, что теперь вы уже более тесно интегрируетесь в экосистему в целом.
- Добавилась возможность сделать выбранный элемент активным, и даже вызывать его на редактирование. Этого ждали очень многие – особенно те, кто работает со сканерами или терминалами сбора данных, подключаемыми по HID-интерфейсу. Теперь это, в принципе, возможно, но когда вы активируете любое другое поле, сканер у вас перестанет посылать данные. Другими словами, пока этот элемент у вас является «текущим», вы можете постоянно его переактивировать, но как только вы из этого поля вышли, со сканера вы его обратно уже не вернете. Конечно, вы можете сделать его текущим принудительно, но тогда наоборот получится, что человек не сможет нажать ни на что другое.
- Чтобы решить эти проблемы с оборудованием, 1С сделало внешние компоненты, которые действительно дают много разных интересных возможностей. В частности, можно подключить те же самые принтеры, сканеры, дополнительное оборудование и т.д. Если вы помните, я на прошлой конференции рассказывал про утилиты Acode, которыми многие пользовались для подключения Bluetooth-сканеров. Так вот, теперь можно этого не делать, потому что 1С выпустило внешнюю компоненту, которая позволяет нам подключать Bluetooth сканеры.
Монетизация
Еще в версии 8.3.8 у нас появилась монетизация.
В связи с этим, главное, на что я хочу обратить ваше внимание – никогда не выпускайте мобильные приложения, нацеленные на бизнес, без подписок. Не продавайте свои приложения за деньги, не встраивайте в них внутренние покупки, делайте только подписки. Почему? Потому что если у вас купят 10000 приложений по одному доллару, потом люди еще 10 лет будут этим пользоваться. А другие люди их уже скачивать не будут. Получается, что у вас заработок будет минимален и растянут по времени, и вы забросите это дело. Подписка – это самое удобное именно в контексте для 1С. Поэтому всегда перед разработкой ориентируйтесь на подписку. И когда вы уже вникните во все тонкости и нюансы, принимайте какое-то конкретное решение.
Как можно интегрировать 1С и нативные решения
Если у нас подключен PrintHand, мы можем, сохранив в pdf какой-то табличный документ, отправить его в PrintHand и напечатать на любых принтерах. Там список этих принтеров просто колоссальный – это и сетевые, и мобильные и т.д.
Кроме этого, мы можем спокойно подсматривать за пользователем. В этом нам поможет приложение Amplitude + HTTP request.
Это приложение позволяет нам посмотреть карту поведения пользователя: как он зашел в приложение, куда он первым делом перешел и т.д. – видно, как вообще в среднем пользователи передвигаются по приложению. Это очень полезно для разработки.
Кроме этого, оказывается, можно подключить к своему приложению Google Analytics. До недавних пор все, кто пытались подключить Google Analytics, мне отписывались, что его подключение возможно только через SDK, а 1С не поддерживает SDK. В конце концов, когда я стал разбираться в этом вопросе сам, я выяснил, что и не надо, чтобы поддерживала, поскольку есть возможность подключения через HTTP-протокол. Но если для других сервисов (того же Amplitude), в описании было явно указано, что используется HTTP request, то Google Analytics назвал его Marshmallow-протокол. Вот и догадайтесь, что это HTTP-протокол
Возникает интересная идея:
Почему бы нам те возможности, которые используются в мобильных платформах, не применить стационарно (идем от обратного)? Почему бы нам эту карту поведения пользователя и Google Analytics не подключить в свои разработки на стационарной 1С? Почему бы нам там не отслеживать, как пользователь двигается, где он застревает, какие ошибки у него бывают и т.д.
Подумайте над этим вопросом.
Ну и, естественно, как я уже говорил, это – Bluetooth-сканер плюс внешняя компонента от 1С – и любой смартфон превращается в терминал сбора данных. Эту компоненту вы сможете найти в библиотеке оборудования мобильных приложений.
Ну и естественно, имея 1С, технологию разработки внешних компонент и немного мозгов (хотя – вру, много-много-много мозгов и бессонных ночей), вы сможете подключить любое специализированное оборудование к 1С через внешние компоненты.
В мобильном приложении 1С сейчас появляется очень много разных интересных возможностей и если ваша фирма ранее не занималась мобильными направлениями, займитесь. Хотя бы один человек – пусть займется. Вместе с этим он сможет что-то привнести к вам из мобильного мира в стационарный мир.
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2016 DEVELOPER.