Разработка бизнес-приложений 1С + Android
В данной статье хочу познакомить вас с новым продуктом “FBA Toolkit”, который существенно облегчает процесс разработки корпоративного мобильного приложения на 1С + Android.
“FBA Toolkit” это:
— разработка «нативного» приложения Android в родной IDE на языке Java;
— 1С: Предприятие 8.1 (8.2) в роли источника данных, корпоративной информационной системы.
В первую очередь, фреймворк будет полезен программистам 1С, которые хотели бы заняться разработкой бизнес-приложений под Android, но испытывают трудности с освоением новой для них платформы. Чтобы начать разработку достаточно будет начальных знаний Java. Далее я покажу, как создать рабочий прототип клиент-серверного приложения буквально за пару часов.
Подготавливаем рабочее место
Прежде чем начать непосредственно процесс разработки, необходимо подготовить рабочее место разработчика. Потребуется:
1. Установить и настроить:
— Java SDK + Eclipse + Android SDK;
— Web-сервер (IIS или Apache);
— 1С: Предприятие 8.1 (8.2)
2. Для Eclipse произвести импорт двух библиотечный проектов: ActionBarSherlock и ru_profu1c_fba из хранилища SVN.
3. Установить дистрибутив конфигурации «FBA» и объединить ее с вашим прикладным решением на базе 1С.
Настройка не должна занять много времени, и скорее всего, часть необходимого ПО у вас уже установлена.
Описание приложения
Создание шаблона мобильного приложения в 1С
Разработка мобильного приложения начинается в 1С, как это не удивительно. Здесь вы определяетесь с составом метаданных, настраиваете схему обмена и регенерируете шаблон вашего будущего мобильного приложения.
Создайте новый элемент в справочнике «Мобильные приложения» с наименованием «Рапорт руководителю» и идентификатором SAMPLE_REPORT_HEAD.
Выделите в списке “Метаданные” группу “Внешние данные” и нажмите кнопку “Добавить” на панели инструментов. Заполните параметры новой таблицы как показано на рисунке:
«Показатель» — тестовое представление показателя отчета, строка (250)
«Значение» — числовое значение показателя, число (15.2)
Имена колонок и самой таблицы здесь, как правило, задаются на русском языке, по ним будет производиться заполнение таблицы данными средствами встроенного языка 1С. Нажмите ОК, таблица будет добавлена в дерево метаданных, для мобильного приложения имена автоматически переводятся в латиницу.
Таким образом, мы подготовили структуру таблицы значений (в терминах 1С) в которой будем передавать данные для отчета «Финансовые показатели». Для второго отчета «Товары на складах» данные будут передаваться как внешний файл.
На закладке «Схема обмена» проверьте, что отмечен флаг «Выгрузка». Флаг «Загрузка» не важен, т.к. мы не собираемся обрабатывать в 1С полученные изменения этой таблицы от мобильного приложения.
Сохраните изменения. Нажмите на кнопку “Шаблон мобильного приложения” на панели инструментов, установите параметры вашего мобильного приложения
«Каталог шаблонов» — путь к каталогу, в котором будут сохранены сгенерированные файлы шаблона мобильного приложения.
На закладке «Основные» укажите имя пакета, это должен быть уникальный идентификатор. Если у вас есть сайт, используйте его для генерации префикса. В этом примере я указал ru.profi1c.samples.report.head
На закладке «Web-сервис» указан IP-адрес 10.0.2.2, по умолчанию это адрес вашего компьютера при доступе с Android-эмулятора. В поля «Имя веб-сервиса» и «Подкаталог приложения» введите данные, которые были указаны при публикации веб-сервиса.
Обратите внимание, что для 1С 8.2, скорее всего, подкаталог приложения у вас будет с дополнительным подкаталогом /ws, т.е demoFba/ws, подробнее см. здесь.
Нажмите Создать, шаблон Android-проекта будет сгенерирован.
Подготовка исходных данных для отчетов в 1С
Откройте в конфигураторе 1С модуль fbaПодпискаНаСобытия и добавьте следующий код в процедуру ПередОтправкойВнешнейТаблицы:
В этом примере таблица заполняется фиктивными данными, в реальном приложении здесь можете передавать произвольное количество показателей отчета.
С данными для первого отчета разобрались, осталось подготовить для второго. В этом же модуле fbaПодпискаНаСобытия добавите в процедуру ПодготовитьДвоичныеДанныеДляОтправки следующий код:
Прокомментирую код. Когда мобильное приложение запрашивает произвольные данные (в виде файла) с идентификатором «REPORT_PRODUCTS_IN_STOK», в 1С выполняется отчет и результат его сохраняется во временный файл. Затем этот временный файл считывается как двоичные данные и передается мобильному приложению. Временный файл удаляется.
Как в данном случае генерируется html файл, нам не важно. Вы можете использовать штатный механизм 1С сохранения табличного документа в виде HTML или сформировать HTML вручную. Пример вывода можете посмотреть в конфигурации «FBA демо», отчет «Товары на складах».
С 1С всё, переходим к разработке мобильного приложения на Android.
Проектирование Android – приложения
Созданный в 1С шаблон Android-проекта импортируем в рабочее пространство Eclipse.
Запустите Eclipse и выполните импорт проекта: File > Import… В группе Android выберите элемент «Exists Android Code Into Workspace» нажмите Next, укажите путь к каталогу шаблона Android-проекта и нажмите Finish, новый проект будет добавлен в рабочее пространство. Если возникнут сложности см. здесь, процесс описан в картинках.
1. Создаем отчет «Финансовые показатели», источником данных для которого является таблица значений, полученная от 1С. Для этого добавьте новый класс ToChiefReport.java, вот полный исходный код:
4. Вывод списка отчетов на главной форме. Откройте файл res\ activity_main.xml и добавьте listView в котором будет отображать список отчетов:
В MainActtiviy.java добавляем:
а) локальную переменную для списка
б) метод инициализации
и вызов его в onCreate() после установки макета формы
в) метод инициализации списка отчетов
г) процедуру запуска обмена по вашим правилам
И изменяем вызов процедуры обмена startExchange(ExchangeVariant.FULL, true) в обработчике onOptionsItemSelected на startExchangeMyRules(ExchangeVariant.FULL, true).
Приложение готово, формы авторизации и настроек программы будут созданы автоматически, изменять их не будем.
Давайте проверим его на эмуляторе. Если вы нигде не ошиблись, приложение запустится. Однако, вместо окна авторизации будет отображено сразу окно настроек, так как не указаны данные авторизации (имя пользователя и пароль).
Укажите имя пользователя: ivanov
И пароль: 123456
Запустите базу 1С и откройте справочник «Мобильные сотрудники». В качестве мобильного устройства укажите предопределённый элемент «Эмулятор устройства», в табличную часть «Мобильные приложения» добавьте приложение «Рапорт руководителю» и установите идентичные имя и пароль пользователя.
Запустите на эмуляторе процедуру обмена (кнопка со стрелочкой «Вверх» на панели справа)
результат работы обмена выводится в уведомлении:
Нажмите на него для запуска вашего приложения (или для просмотра подробной информации об ошибке, если обмен завершился неудачно).
Проверим, что получилось. Кликните мышкой по отчету в списке:
Использование HTML для построения отчетов позволяет создавать весьма разнообразные отчеты, в т.ч. и с интерактивными элементами. Например, в одном нашем проекте используется вот такой отчет:
И конечно, вы ничем не ограничены, можете использовать сторонние библиотеки для вывода отчетов и диаграмм, например achartengine или самостоятельно создать свой график/диаграмму (примеров полно, в т.ч. есть и в Android SDK).
На этом все, с другими примерами вы можете ознакомиться на сайте http://profi1c.ru.
В ближайшее время планируется добавить уроки по интерактивным элементам и адаптерам библиотеки FBA, а так же показать как работать с офф-лайн картами mapsforge.
Ложка дегтя
В ближайшее время (не более месяца) будет коммерческая версия, информацию о стоимости и порядке лицензирования добавим на наш сайт.
Спасибо, что дочитали до конца. Готов ответить на ваши вопросы в комментариях как по 1С, так и по Android.
Практика разработки мобильного приложения 1С 8.3 (часть 1)
Практика разработки мобильного приложения 1С 8.3 (часть 1)
В данной статье речь пойдет о том, что довелось перепробовать и на какие грабли наступить, прежде чем удалось сделать более-менее нормальное приложение для планшетников. Приложение изначально затачивалось только под Андроид, за основу взята конфигурация 1С: Заказы, и мобильное приложение для разработки.
Изначально был выбран «неправильный» подход с компилированием приложения и закидыванием его на планшетник вручную. Напомню, что для сборки мобильных приложений используется «Помощник создания мобильного приложения» ( MobileAppWizzard ). Затем на одном из форумов было найдено красивое решение с использованием мобильного приложения для разработки. Это приложение входит в комплект установки мобильной платформы. На момент разработки использовалась платформа версии 8.3.3.24. В папке « Android » можно найти файл 1cem.apk. Это и есть мобильное приложение для разработки. Его огромнейший плюс, сэкономивший нам уйму времени — в том, что можно опубликовать мобильное приложение на веб-сервере, а на планшетнике указать путь вида http://[ Адрес веб-сервера ]/[ Имя мобильного приложения ].
На планшетном ПК, в настройках добавленного приложения можно отметить флажок «Обновлять из конфигуратора», и при каждом запуске приложение будет пытаться подключиться к веб-серверу и проверять обновления.
После того, как мобильное приложение было развернуто, начался процесс его доработки.
1. Настроить обмен между центральной базой и мобильным устройством.
2. Организовать асимметричную синхронизацию: из центральной базы выгружать данные о номенклатуре, контрагентах, остатках товаров на складе и взаиморасчетах, а из мобильного приложения загружать только заказы покупателей.
3. Реализовать простой интерфейс для менеджеров, где они смогут быстро просмотреть остатки, цены и взаиморасчеты.
На этапе тестирования использовалась промежуточная база «Управляемое приложение», ввиду того что демо-приложение 1С:Заказы изначально заточено на обмен именно с Управляемым приложением.
Первый блин вышел комом. В прямом смысле. Для обмена с центральной базой был использован v82.ComConnector. Не буду вдаваться в подробности его настройки, об этом есть куча отдельных материалов. Пройдусь только по тем трудностям, с которыми столкнулся.
1. Использование com- объектов на 64-битной серверной ОС. Для решения проблемы была использована обертка COM+ Applications, которая настраивается в Component Services.
2. Удаленный вызов Com с другого сервера. Вызываемый сервер должен иметь роль Application Server, и у него должно быть настроено COM+ Network Access. Кроме того, сервер Apache должен иметь соответствующие права (т. е. запускаться как сервис от имени авторизованного пользователя)
Намучившись с Ком-соединениями, решили переводить рабочую базу на web- сервисы.
О публикации веб-сервисов также написано очень много, но там написано о том, как работает. Как НЕ работает, поделюсь ниже.
Рабочая база развернута на платформе 8.2, мобильное приложение, соответственно, на 8.3.
При публикации вначале приложения 8.3, а затем 8.2. периодически выхватывали глюк «Ошибка формата потока» в веб-клиенте 8.3, либо сообщение об ошибке «различаются версии платформы клиента и сервера». Перепубликация не помогает, равно как и перезапуск Apache. А вот отключение публикации и подключение заново — помогает.
Далее, поймал забавную ошибку при авторизации пользователя (при создании ws Определения). При тестировании на компьютере, авторизация с длинным ФИО проходит легко. При попытке авторизации этого же пользователя с планшетника под управлением Android, авторизация заканчивалась, не начавшись. Экспериментальным путем удалось вычислить, что кириллицей длина логина ограничена 22 символами. При этом сочетание кириллических символов и цифр дало авторизоваться с логином длиной 27 символов. Есть подозрение, что это связано с преобразованием кириллических символов. Так, например, в браузере Firefox строка из Википедии « http://ru.wikipedia.org/wiki/П иво» преобразуется в « http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%B2%D0%BE ».
Технологически, мобильная платформа 8.3.3 на текущий момент имеет ряд ограничений. Самое ожидаемое, на мой взгляд, нововведение — это поддержка запросов. Но, поскольку произвольные запросы в динамических списках мобильная платформа пока не поддерживает, пришлось «пойти другим путем».
Для решения задачи отображения справочника номенклатуры с ценами и остатками был использован следующий подход:
1. В форме справочника номенклатуры созданы две таблицы. Первая — динамический список, собственно сам справочник. Фильтр динамического списка настроен так, чтобы выводились только группы. Вторая таблица — собственно остатки и цены. При активизации строки динамического списка, на сервере происходит заполнение таблицы значений, которая затем и выводится во вторую таблицу. При получении цен и остатков использовалась объектная модель. Все эти танцы с бубном были исполнены только потому, что привычного по толстому клиенту метода «при выводе строки» или «при получении данных» нет, и динамически нарисовать цифры в колонке нельзя.
Аналогичный подход использовался и в форме подбора
2. Для вывода строки с текущими ценами отлично подошла ФорматированнаяСтрока.
Чтобы этого избежать, было принято решение дробить полный обмен на порции с возвратом фокуса обратно в мобильное приложение. Т.е. вначале синхронизировать номенклатуру, затем контрагентов, затем остатки, и т. п.
4. Для получения отчетов оставлен тот же подход, что и в конфигурации 1С: Заказы. Вызывается веб-сервис с параметрами, на стороне сервера рабочей базы формируется табличный документ, и затем уже готовый табличный документ возвращается в мобильное приложение.
Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
html интерфейс в мобильном приложении, пример взаимодействия html с мобильным приложением
В мобильном приложении (На текущий момент) невозможно сохранить текстовый макет где можно сохранять текст Html поля, поэтому пришлось выкручиваться. Весь текст html я сохранил в табличном макете, разбив код по областям ячеек.
После открытия формы, полю html документа необходимо некоторое время для формирования, в связи с этим- некоторые функции JavaScript недоступны. Пришлось подключить обработчик ожидания для выполнение одной процедуры заполнения.
Следующая страница содержит пример работы с датой и временем.
Пример создания документа из html. Для примера был создан тестовый документ с несколькими реквизитами и ссылкой на справочник.
Добавлена кнопка для выбора справочника из html и кнопка очистки (Можно сделать намного проще и эффектнее, всё зависит от знаний html и воображения автора).
Форма авторизации из html поля, для наглядности «Логин» и «Пароль» выведены на форме. При формировании html документа, данные берутся из из полей «Логин» и «Пароль» и идет проверка на совпадение (Функции JS). При успешной авторизации выводится окно 1С, иначе выводится предупреждение с текстом предупреждения ( Не правильный пароль, логин и тд)
Для реализации некоторых задач помогли следующие ссылки
Тесты проводились на платформах 1С:Предприятие 8.3 (8.3.15.1778)
Мобильная платформа 8.3.15.62
Виртуальное и реальные устройства android 8.1 (Lenovo)
Используйте мобильное приложение «1С:Документооборота» для работы с почтой и задачами вне офиса
Мобильное приложение работает автономно и не требует постоянного подключения к центральной базе. Оно подходит для мобильных устройств под управлением iOS и Android.
После того как администратор выполнит эти настройки, вы можете подключаться к базе 1С:Документооборота с помощью мобильного приложения. Чтобы настроить мобильное приложение, следует выполнить 3 шага.
В 1С:Документообороте на вашем компьютере перейдите в раздел Настройки — Персональные настройки.
Далее выберите Мобильные клиенты.
В открывшемся окне вы сможете выбрать, какие функции нужны вам в мобильном, загрузить и настроить приложение.
Шаг 1. Выберите папки писем, которые хотите видеть в мобильном приложении.
Шаг 2. Установка приложения
Загрузите мобильное приложение в магазине приложений вашего устройства:
Шаг 3. Подключение к настольному клиенту
Если по какой-то причине устройству не удалось распознать QR-код настройки, вы можете выполнить настройку вручную. Для этого нужно указать адрес для подключения, переданный вам администратором, Ваше имя пользователя и пароль.
1С:Мобильная бухгалтерия 4+
ИП, ООО, УСН 6% 15%,НДС,Патент
1C-SOFT LLC
Снимки экрана
Описание
Мобильная Бухгалтерия от 1С для предпринимателей, организаций и самозанятых.
Мобильная бухгалтерия совершенно БЕСПЛАТНО:
— Рассчитает и напомнит о налогах: УСН, ЕНВД, страховых взносах и патенте, налоге самозанятых
— Подготовит и отправит платежи напрямую в банк
— Напомнит о сдаче и заполнит декларации УСН 2020, УСН 2021, ЕНВД
— Отправит клиенту Счет, Акт или Накладную
Мобильная бухгалтерия подходит:
• Предпринимателю на УСН «Доходы», УСН «Доходы минус расходы» с любой ставкой: 0%, 4%, 6% и 15% и налоговых каникулах, ЕНВД и Патенте
• Организации на УСН (6% и 15%), ЕНВД и общем режиме (Налог на прибыль и НДС)*
• Самозанятому (плательщику налога на профессиональный доход, зарегистрированному в сервисе «Мой налог»)
Для предпринимателей:
• Рассчитать суммы фиксированных страховых взносов за 2020, 2021;
• Рассчитать суммы налога и авансовых платежей, уплачиваемых в связи с применением упрощенной системы налогообложения (УСН) за 2020, 2021 ;
• Рассчитать суммы единого налога на вмененный доход за любой квартал 2020, 2021;
• Оплатить налоги и взносы за 2020, 2021 года;
• Подготовить Книгу учета доходов и расходов;
• Подготовить и сдать декларацию УСН 2020, 2021;
• Сдать нулевую декларацию УСН за 2020, 2021 года;
• Подготовить декларацию по единому налогу на вмененный доход ЕНВД за любой квартал 2020, 2021;
• Рассчитать суммы НДФЛ и страховых взносов, уплачиваемых за сотрудников**;
• Подготовить отчетность по сотрудникам: 6-НДФЛ, СЗВ-М, 4-ФСС, РСВ**;
• Напомнит о приближении срока уплаты налога, выплаты зарплаты или сдачи отчетов.
Для организаций*:
• Рассчитать суммы налога и авансовых платежей по НДС;
• Подготовить комплект бухгалтерской отчетности для субъектов малого предпринимательства;
• И много другое.
Для всех:
• Счета, с возможностью вставить свой логотип, подпись и печать;
• Акты, накладные ТОРГ-12 и товарные чеки
• Акт сверки расчетов с контрагентом
• Учет денег, входящие и исходящие платежи
• Учет расчетов с покупателями и поставщиками
• Учет остатков товаров
• Учет сотрудников**
Интеграция с 1С:
• Сдача отчетности через интернет (1С-Отчетность)**
• Доступ к приложению с компьютера через сервис 1С:БизнесСтарт*
Интеграция с банками:
• На данный момент поддерживается обмен с Сбербанк онлайн, Авангард, Точка, Бинбанк (система E-plat), Тинькофф
• Загрузка выписки банка через Яндекс.Диск позволяет загружать информацию о поступлениях на расчетный счет практически из любого банка: Альфа-банк, ВТБ, Модуль банк, Уралсиб и многие другие
Всегда актуальные сведения:
• Проверка изменений реквизитов налоговой
• Заполнение сведений о контрагентах по ИНН*
• Ввод адреса по классификатору ФИАС, тому же, что использует налоговая
• Актуальные классификаторы налоговых органов и банков
Резервное копирование:
• Данные мобильного приложения сохраняются в облачном хранилище, откуда их можно восстановить при смене телефона(доступно после регистрации)
* Необходима подписка на сервис 1С:БизнесСтарт
** Платная функция