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

07.10.14

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

В рамках разработки мобильного приложения кладовщика столкнулись с необходимостью печати этикеток для обклейки заказа. В данном посте я поделюсь подходами, которые удалось реализовать для решения поставленной задачи. Так как задача решалась постепенно с разным набором оборудования получилось в результате два метода: Отправка на печать через запущенную сессию 1с на компьютере. Отправка на печать с мобильного приложения.

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

  • Этикетка на заказ должна печататься всегда одинаковая;
  • Кладовщик не всегда следит за необходимостью обновить конфигурацию в мобильном приложении;
  • Процесс приема заказов подразумевает наличие соединения мобильного приложения с центральной базой.

Отправка на печать через сессию на компьютере.

Исходные данные: Кладовщик перемещается по складу с мобильным устройством и портативным wi-fi принтером этикеток. Имеется постоянно запущенная сессия 1с на персональном компьютере.

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

Функция PrintOrderSticker(IDOrder)
    ЗаказСсылка = Документы.ЗаказПокупателя.ПолучитьСсылку(Новый УникальныйИдентификатор(Idorder));
    ТабДок = РаботаСЗаказами.СформироватьЭтикету(ЗаказСсылка);
    МенеджерЗаписи  = РегистрыСведений.ДанныеДляПечати.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.ТабличныйДокумент = Новый ХранилищеЗначения(ТабДок);
    МенеджерЗаписи.Код = Строка(Новый УникальныйИдентификатор);
    МенеджерЗаписи.Создал = ПараметрыСеанса.ТекущийПользователь;
    МенеджерЗаписи.Записать();
КонецФункции

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

Процедура ПроверитьДанныеНаПечать() 
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ДанныеДляПечати.Код,
                   |    ДанныеДляПечати.ТабличныйДокумент,
                   |    ДанныеДляПечати.Создал
                   |ИЗ
                   |    РегистрСведений.ДанныеДляПечати КАК ДанныеДляПечати
                   |ГДЕ
                   |    НЕ ДанныеДляПечати.ФайлРаспечатан";
    Выборка = Запрос.Выполнить().Выбрать(); 
    
    Пока Выборка.Следующий() Цикл 
        ПринтерПечатиДокумента = "Принтер кладовщика"; //Выбираем принтер из таблицы сопоставления
        
        ТабДок = Выборка.ТабличныйДокумент.Получить();
        ТабДок.ИмяПринтера = ПринтерПечатиДокумента;
        УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, 1, Истина);

        НаборЗаписей = РегистрыСведений.ДанныеДляПечати.СоздатьНаборЗаписей();            
        НаборЗаписей.Отбор.Код.Установить(Выборка.Код);
        НаборЗаписей.Прочитать();
        Запись = НаборЗаписей[0];
        Запись.ФайлРаспечатан = Истина; 
        Запись.Распечатал = ПараметрыСеанса.ТекущийПользователь;
        НаборЗаписей.Записать();
    КонецЦикла;
КонецПроцедуры
 

 

Отправка на печать с мобильного приложения

Исходные данные: Кладовщик перемещается по складу с мобильным устройством и портативным bluetooth принтером этикеток.

На основании параметров веб-сервис возвращает pdf-файл этикетки, которая отправляется на печать с мобильного устройства.
Формирование и передача файла на стороне центральной базы:

Функция ReceiveGetOrderSticker(IDOrder)
    ЗаказСсылка = Документы.ЗаказПокупателя.ПолучитьСсылку(Новый УникальныйИдентификатор(Idorder));
    ТабДок = РаботаСЗаказами.СформироватьЭтикетку(ЗаказСсылка);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
    ТабДок.Записать(ИмяВременногоФайла,ТипФайлаТабличногоДокумента.PDF);
    ФайлДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    ДанныеФайла = Новый ХранилищеЗначения(ФайлДвоичныеДанные, Новый СжатиеДанных(9));
    Возврат = Base64Строка(ДанныеФайла.Получить());
КонецФункции

Прием файла на стороне мобильного приложения:

&НаСервере
Функция ПечатьСтикераЗаказаНаПринтерСервер(УИДЗаказа,АдресФайлаСтикера)
    Прокси = ОбменМобильныеПереопределяемый.ПолучитьПрокси();
    СтрокаОтвет = Прокси.ReceiveGetOrderSticker(УИДЗаказа);
    ЗначениеФайла = Base64Значение(СтрокаОтвет);
    ЗначениеФайла.Записать(АдресФайлаСтикера);
КонецФункции

После выполнения вышеописанных операций у нас есть pdf-файл в мобильном приложении, который надо отправить на печать. Для этого на мобильном устройстве надо установить приложение PrinterShare. Данное приложение может отправлять файлы на выбранный принтер. Но пользователь не будет каждый раз искать полученный pdf-файл, поэтому мы в мобильном приложении запускаем  просмотр данного файла используя ЗапускПриложенияМобильногоУстройства().

&НаКлиенте
Процедура ПечатьСтикераЗаказаНаПринтер(УИДЗаказа)
    АдресФайлаСтикера = КаталогДокументов() + "sticker.pdf";
    ПечатьСтикераЗаказаНаПринтерСервер(УИДЗаказа,АдресФайлаСтикера)
    #Если МобильноеПриложениеКлиент Тогда  
        Запуск = Новый ЗапускПриложенияМобильногоУстройства();
        Запуск.Действие = "android.intent.action.VIEW";
        Запуск.Данные = "file:///"+ АдресФайлаСтикера;
        Запуск.Тип = "application/pdf";
        Запуск.Запустить(Истина);      
    #КонецЕсли
КонецПроцедуры

http://danila.org.ua/pechat-s-mobilnogo-prilozheniya-1s/

См. также

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

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

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

2880 руб.

03.12.2018    54423    135    102    

160

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33019    80    157    

173

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для 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    91739    507    186    

293

JavaScript в Simple

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

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

12.02.2024    1598    informa1555    0    

25

Создание экранов в произвольной разметке (xml) в SimpleUI

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

Я сделал альтернативный способ рисования экранов и списков в виде стандартной xml-разметки (стандартных xml-файлов для Android). Теперь можно рисовать в Android Studio или Figma в визуальном редакторе, прицеплять в симпле и работать дальше как обычно.

27.11.2023    1474    informa1555    1    

19

Релиз 11.75 Simple UI. Октябрь 2023

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

В новом релизе сразу много всего: интегрирована собственная документно-ориентированная СУБД SimpleBase, развит функционал работы, доработана OCR и ActiveCV, работа с диалогами (более удобная) и много всего другого полезного. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

02.10.2023    2404    informa1555    12    

24

Как начать зарабатывать на разработке мобильных приложений уже завтра!

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

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

17.08.2023    2235    natashik.angel    2    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. flyer 231 07.10.14 18:54 Сейчас в теме
плюс за статью! я в своих программах использовал механизм Google drive через него печатают. и тоже сторонние программы для андроида и айфона. тут на форуме уже обсуждали как непосредственно минуя сервер 1с отправлять на принтер чеков задание. даже получилось.
2. DanilaDru 262 07.10.14 19:55 Сейчас в теме
(1) flyer, спасибо. За опытами над чеком наблюдал. Может тоже придётся делать такое со временем.
3. CheBurator 3119 10.10.14 20:03 Сейчас в теме
учтем.
спсб.
но если необходимость печатать этикетки КЛАДОВЩИКОМ ПРИ ПЕРЕМЕЩЕНИИ ПО СКЛАДУ - регулярная процедура (а не эпизодическая типа заменить поврежденную) - имхо надо что-то менять в организации и обработке товаропотоков.
4. DanilaDru 262 10.10.14 20:26 Сейчас в теме
(3) CheBurator, спасибо за комментарий.
Наверное я не совсем ясно выразился в статье. Речь идёт не о перемещении заказа по складу, а про приём его кладовщиком на склад. Маркируется заказ один раз, когда попадает в руки принимающему кладовщику из машины, которая его привезла.
5. malikov_pro 1288 12.10.14 14:11 Сейчас в теме
Я в свое время решал подобную задачу с помощью программы BarTender от Seagul, из плюсов может обрабатывать произвольные файлы и печатает через набор команд принтера (в случае формирования макета 1С или PDF печатается картинкой), что позволяет с точностью до пикселя формировать этикетку (была задача сделать очень маленькую этикетку, с помощью макета из 1С это не получилось).
6. DanilaDru 262 13.10.14 11:30 Сейчас в теме
(5) malikov_pro, а как вы потом на стороне мобильного приложения 1с вызывали BarTender ?
9. KAV2 156 03.03.20 09:18 Сейчас в теме
(5)
BarTender
А не подскажите, как на Андроиде можно вызвать BarTender и передать ему файл для печати?
7. PiccaHut001 17.10.14 18:57 Сейчас в теме
очень остроумно, печать с мобилы на PC через регистр сведений
8. finebird 26.09.17 01:15 Сейчас в теме
На Android 7.0 такой вариант не работает. Принтер Canon MG3600. Мобильное приложение вылетает. На экране сообщение "Приложение принудительно остановлено" при выполнении этого кода:

имяФайла = КаталогДокументов()+"1c_print.pdf";
#Если МобильноеПриложениеКлиент Тогда  
	ТабличныйДокумент.Записать(имяФайла,ТипФайлаТабличногоДокумента.PDF);
        запуск = Новый ЗапускПриложенияМобильногоУстройства();
        запуск.Действие = "android.intent.action.VIEW";
        запуск.Данные = "file:///"+имяФайла;
        запуск.Тип = "application/pdf";
        запуск.Запустить(Истина);
#Иначе
	ЗапуститьПриложение(имяФайла);
#КонецЕсли
Показать

Как можно по другому обойти эту ситуацию
Оставьте свое сообщение