Прямая печать из мобильного приложения

21.10.14

Разработка - Мобильная разработка

Сегодня (на момент написания статьи) печать из мобильного приложения 1С кажется чем-то далеким идущим "на костылях" и имеющим больше демонстрационный характер нежели применимый в реальной работе. Но это не так! Как говорят: "из любой безвыходной ситуации есть как минимум два выхода". Описанный в этой статье вариант готов работать стабильно и не требует сверхъестественных усилий или значимо больших временных затрат относительно написания печатной формы для ПК.

Скачать файлы

Наименование Файл Версия Размер
Пример печати МУ (создание html)
.epf 10,10Kb
21
.epf 10,10Kb 21 Скачать

Оборудование.

Принтер.  

Не маловажным вопросом есть выбор принтера. В моем понимании мобильности, принтер должен быть беспроводным (незачем играться со шнурками), а еще лучше если принтер сможет быть точкой доступа (таким образом можно исключить из списка необходимого оборудования wi-fi роутер). Облачная печать не рассматривается, так как обязательным условием будет наличие интернета, который может отсутствовать по многим причинам. Путем общения с несколькими представителями производителей принтеров для тестов был выбран принтер HP 1102w (около 100$) – дешево и сердито.

HP 1102w имеет минимум аппаратного функционала – три кнопки (учитывая кнопку включения). Чтобы принтер заработал как точка доступа нужно в веб интерфейсе перейти на вкладку сеть и установить флажок "Точка доступа". Заставить работать точкой доступа этот аппарат без изменения настроек через веб интерфейс мне не удалось. Это минус, учитывая, что настройки могут слететь "в поле". Для доступа к веб интерфейсу принтер должен получить IP-адрес от DHCP сервера, которым может быть наделен офисный wi-fi маршрутизатор или точка доступа.

При подключении принтера к ПК посредством кабеля определятся внешний накопитель на котором есть утилита для настройки - SmartInstall. Так и было до установки драйверов. На ПК где были установлены драйвера принтера внешний накопитель не определялся. То есть до начала установки желательно скопировать содержимое накопителя либо потом для перенастройки (если принтер не подключен к беспроводной сети) придется удалять драйвера, чтобы произвести повторную установку/настройку.

С точки зрения пользователя, мне непонятно как можно наделить принтер такой полезной функцией как прямая печать и не дать возможность ее быстрого включения/отключения аппаратными клавишами. Аппаратные кнопки могут только найти сеть и вкл./откл. беспроводную сеть вообще. Непосредственно само подключение мобильного устройства к принтеру не составило труда. Точка доступа (ТД) имела название типа "hp_1102_w_878sfgdfg" ошибиться невозможно. По умолчанию ТД без защиты и не требует ввода пароля при подключении.

 

Мобильные устройства (МУ).

Тестирование проходило на трех устройствах с разными размерами экранов и прошивками от разных поставщиков.

1)  Планшет Prestigio MultiPad 4 Diamond 7.85 3G. Версия андроид 4.2, прошивка заводская;

2)  Телефон Motorola XT910 RAZR 4.3" с андроид 4.4.4 от Liquidsmooth;

3)  Телефон LG Optimus Sol E730 3.8" андроид 4.0.4 CyanogenMod.

 

Дополнительное оборудование.

Если предполагается использование в автомобиле, то принтер нужно включать в розетку, которой автомобиль не наделен. Выбираем автомобильный инвертор подходящей мощности (для данного случая 370В – около 50$). Хорошо если инвертор будет иметь порт USB для зарядки мобильного устройства, т.к. авто может иметь только один "прикуриватель" и тогда для подключения к сети МУ нужно будет отключить принтер или пользоваться переходниками – "тройниками", что не очень удобно. При печати HP 1102w потребляет порядка 370В – подключать строго через наклемники напрямую к АКБ автомобиля иначе не избежать плавленых предохранителей или еще хуже сгоревшей проводки или пожара. Вообще то все лазерные принтеры будут иметь похожее потребление так как в их устройстве есть "печь" которая запекает тонер (краску) на бумаге. Если есть желание, можно использовать струйные принтеры, потребление намного меньше, соответственно можно подключать через штатную розетку в авто. Но в "струйниках" есть свои нюансы. Коротко о сравнении лазерных и струйных принтеров можно глянуть здесь.

 

Макет и печатная форма.

С помощью объекта ЗаписьТекста() можно создавать файлы имеющие в себе текст определенного формата, например xml, html, cfg, config, ini и так далее. Было рассмотрено много форматов, но если сопоставить, что может напечатать Android устройство и какие форматы можно сделать из текста, то самым оптимальным и на мой взгляд единственным доступным, стал html. Не без труда конечно, но обычным текстом можно сформировать html структуру документа, наполняем его параметрами в виде переменных и в итоге получаем макет для формирования печатных форм.

Непосредственно сама разработка печатной формы казалась понятной, но как всегда, имела несколько путей решения. Можно было сделать универсальные процедуры формирующие нужные части документа – это самый "грамотный" и трудоемкий вариант, так как каждый документ имеет собственную структуру строк и колонок и с универсальностью пришлось бы повозиться. Можно также сделать отдельные формы для каждого документа, с делением html документа на понятные блоки (для знающих html). Но исходя из задачи, мною был выбран третий вариант, он же, на мой взгляд, самый простой – это банальное сохранение сформированного документа в 1С на ПК в html формате и подстановка переменных, как говорится: "где надо". Единственное изменение – это вынесение формирования табличной части в цикл, как бы копирование одного блока html текста с подстановкой нужных переменных. Уж очень подробно, но у меня без знания языка разметки html это заняло немного больше ожидаемого времени.

Ну и последнее. Процедура печати выполняется через открытие сформированного файла (например order.html) используя функцию ЗапуститьПриложение(). Далее Android предлагает открыть файл через доступные приложения, выбираем PrintHand (о нем далее). Если подтвердим использование по умолчанию для формата html программы PrintHand, то при нажатии на кнопку печать в 1С будем сразу получать открытую в программе форму документа. Так же есть вариант использования объекта ЗапускПриложенияМобильногоУстройства. Оба варианта рассматриваются ниже.

Для сохранения сформированных документов использован стандартный каталог документов.

В итоге код самой печати выглядит так (вариант 1):

ФайлИмя = КаталогДокументов()+"order.html";
Файл = ПечатьДокументов.СформироватьДокументHTML(Объект.Ссылка);
Текст = Новый ЗаписьТекста(файлИмя);
Текст.Записать(Файл);
Текст.Закрыть();
ЗапуститьПриложение(ФайлИмя);

Если использовать метод ЗапускПриложенияМобильногоУстройства (вариант 2). В коде, в таком случае, изменится только последняя строка:

// ЗапуститьПриложение(ФайлИмя);
Запуск = Новый ЗапускПриложенияМобильногоУстройства;
Запуск.Действие = "android.intent.action.VIEW";
Запуск.Данные = "file://"+ФайлИмя;
Запуск.Приложение = "com.dynamixsoftware.printhand";
Запуск.Тип = "text/html";
Запуск.Запустить(Истина);

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

В функции СформироватьДокументHTML() все как обычно для процедур печати на всех платформах. Формируются таблицы заполнения и на их основе заполняется html документ разделенный на части (шапка, строки, подвал) для удобства.

 

Подводные камни.

Была проблема, которая проявилась только в ходе тестирования приложения на мобильном устройстве, на ПК все отрабатывало как надо. Это использование функции ЧислоПрописью(). Как оказалось функция не умеет работать с украинским языком на Android платформе (протестировано на 3 разных устройствах известных производителей, на разных прошивках и на разных версиях платформы 1С). Пришлось делать функцию перевода русских чисел прописью в украинские. Функция получилась весьма скромной, всего 45 строк кода.

Так же в моем методе формирования печатных форм был еще один существенный недостаток. Если нужно будет выводить по надобности дополнительную колонку (например код или артикул), придется создавать еще одну дополнительную форму, а это приличный кусок времени.

Естественно, для большинства форм нужны дополнительные данные, такие как: платежные и налоговые реквизиты организации, ответственное лицо за выписку документов, коды, штрих коды, артикулы, коды УКТВЭД и пр. Если организаций несколько и они имеют разную учетную политику, в том числе и по налогам, то естественно нужны будут и все эти данные для каждой из организаций. В общем все как обычно, данные которые выводятся в печатной форме и которые нельзя жестко привязать нужно переносить на мобильное устройство. Но, например, если организация плательщик НДС и таковой будет еще долго, то незачем таскать на мобильное устройство все ставки НДС и засорять базу лишними данными.

 

Приложение Android.

Нужен был софт который сможет печатать тип документов сформированный через ЗаписьТекста() (html). Перебрав огромную кучу софта в Play Маркете было обнаружено две схожие по функционалу программы от одного разработчика: PrintHand (около 10$) и PrinterShare (около 15$). Бесплатные приложения либо не умели работать с беспроводными принтерами (подключатся напрямую к wi-fi принтеру), либо с html документами.

 

Настройка PrintHand.

Решено было пойти логическим путем. Сначала подключено МУ к ТД принтера. При открытии документа (картинки) появилось окно с предварительным просмотром.


Жмем Настройка -> Принтер -> wi-fi Принтеры, выбираем ТД принтера, после чего приложение предложило скачать драйвера для моей модели принтера, что возможно только с присутствием интернета. Другими словами - если включен GPRS или планшет с принтером подключены к одному маршрутизатору с наличием интернета. А я уже подключился к сети принтера, вот такой казус. 

Итак последовательность подключения должна выглядеть следующим образом (подразумевается, что принтер уже работает как точка доступа): утилитой smartInstall подключаем принтер к офисной/домашней сети с наличием интернета через wi-fi или используем/включаем GPRS на МУ. После, заходим в PrintHand, Установка принтера -> wi-fi Принтеры, находим и выбираем наш принтер, на предложение скачать драйвера соглашаемся. Когда установка драйверов будет завершена можно подключаться непосредственно к ТД принтера и начинать печать или сразу начинать печать если Вы использовали GPRS и МУ уже было подключено к принтеру. МУ запомнит сеть и не нужно перед печатью каждый раз подключатся. Если нет, при подключении не забываем ставить флажок "подключатся автоматически".

При самой печати с МУ все печатные формы сделаны так, чтоб не нужно было ничего больше настраивать, то есть пользователь нажал "Печать" в 1С, открылась PrintHand, нажал "Печать" в ней и страница распечатана.

 

Итоги.

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

Главное отличие описанного мной подхода это то, что нет необходимости подключатся к центральной базе. То есть печать можно осуществлять имея только принтер и мобильное устройство. И не важно есть интернет или устройство вовсе не имеет доступа к всемирной паутине. Печать идет сразу на принтер. Такой подход более интересен когда мобильное устройство не находиться в одной сети с сервером. А также когда нужно исключить ЦБ из процесса печати. Ведь это как минимум дополнительная нагрузка на сервер, а как максимум – лишнее звено в процедуре печати, что в свою очередь менее просто и отказоустойчиво.

Печать Мобильное приложение

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн. Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    54620    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33281    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    91947    511    186    

293

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

Логистика, склад и ТМЦ Мобильная разработка Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

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

12950 руб.

30.05.2023    3388    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

Мобильная разработка WEB-интеграция Мобильная платформа Абонемент ($m)

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1478    0    informa1555    1    

39

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    6876    ROk_dev    56    

37

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1629    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jobkostya1c_ERP 100 17.12.14 12:26 Сейчас в теме
Хотел уточнить по данной новой технологии. Новые возможности платформы 8.3.5?
2. kristart 95 17.12.14 23:47 Сейчас в теме
(1) kostyaomsk, если Вы о методе ЗапускПриложенияМобильногоУстройства - то это из 8.3.5. А все остальное будет работать и с 8.3.4.
Оставьте свое сообщение