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

21.10.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример печати МУ (создание html)
.epf 10,10Kb
23
23 Скачать (1 SM) Купить за 1 850 руб.

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

Принтер.  

Не маловажным вопросом есть выбор принтера. В моем понимании мобильности, принтер должен быть беспроводным (незачем играться со шнурками), а еще лучше если принтер сможет быть точкой доступа (таким образом можно исключить из списка необходимого оборудования 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С v8.3 1С:Конвертация данных Платные (руб)

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

13200 руб.

27.12.2021    38198    108    161    

201

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

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

3000 руб.

03.12.2018    59291    192    103    

172

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

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

2000 руб.

22.04.2019    97226    586    189    

321

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

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

3450 руб.

28.04.2023    9471    15    0    

9

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4644    1    0    

6

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

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1217    6    informa1555    1    

13

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

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    2607    29    informa1555    0    

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