Печать на мобильных принтерах TSC и Zebra по сети

Публикация № 1207163

Разработка - Печать - Пакетная печать

массовая печать мобильные принтеры интеграция приложений.

Описан метод печати на мобильных принтерах марок TSC и Zebra, подключенных к корпоративной сети по Wi-Fi, без необходимости устанавливать драйверы на сервере и/или клиенте.

Поставлена задача - организовать печать по сети на мобильных принтерах производства компаний TSC и Zebra без необходимости установки на серверах драйверов принтеров, регистрации и СМС. В эксплуатации находятся несколько десятков принтеров. Подключение к общей сети выполнено по Wi-Fi. Печать необходимо производить из трех видов приложений: "1С-Управление торговлей", приложения для ТСД, мобильного приложения для обычных смартфонов/планшетов (при этом мобильное приложение непосредственного доступа в корпоративную сеть не имеет). Печатные формы генерируются обработкой в 1С в виде скриптов на языках разметки TSPL/ZPL.

Решение: поскольку в сети уже есть Web-сервер под IIS, где подняты Web-сервисы и HTTP-сервисы для мобильных приложений, то на сервере дополнительно запускаем скрипт на PHP, на вход принимающий пакет данных, где содержится IP принтера и скрипт на TSPL/ZPL, и отправляющий данные по IP-адресу принтера.

Пакет формируется в JSON, выглядит следующим образом:
Шаблон кодируется в base64, поскольку в командах TSPL/ZPL могут быть символы, невалидные для JSON.

{
 "printer_ip":"192.168.X.XXX",
 "template":"Здесь должен быть шаблон этикетки, закодированный в base64"
}

 

Схема работы для печати ценника, например, следующая - в мобильном приложении сканируется ШК товара, на сервер уходит пакет данных с этим ШК, кодом пользователя/магазина/отдела, в 1С по ним формируется вышеприведенный пакет, и из 1С же методом POST передается по URL на Web-сервере в скрипт на PHP. Результат выполнения скрипта анализируется, и передается мобильному приложению.

Собственно, базовый функционал скрипта выглядит следующим образом:
 

<?php

class M_Response {
    public $success;
    public $reason;
}
error_reporting(E_ALL);
ob_implicit_flush(1);

$mresponse = new M_Response();
$entityBody = file_get_contents('php://input');
// получили на входе пакет в JSON
if ($entityBody === false || $entityBody === null || $entityBody === "") {
// Что-то пошло не так, вернем статус и причину ошибки
    $mresponse->success = false;
    $mresponse->reason = "Ошибка при получении исходных данных";
    http_response_code(400);
    $respJSON = json_encode($mresponse , JSON_UNESCAPED_UNICODE);
    echo $respJSON;
    exit();
}
$obj = json_decode($entityBody);
if ($obj === false || $obj === null) {
    $mresponse->success = false;
    $mresponse->reason = "Ошибка декодирования входных данных";
    http_response_code(400);
    $respJSON = json_encode($mresponse , JSON_UNESCAPED_UNICODE);
    echo $respJSON ;
    exit();
}

$template = $obj->template;

$decoded_template = base64_decode($template);
if ($decoded_template === false || $decoded_template === null) {
    $mresponse->success = false;
    $mresponse->reason = "Ошибка декодирования шаблона печати";
    http_response_code(400);
    $respJSON = json_encode($mresponse , JSON_UNESCAPED_UNICODE);
    echo $respJSON ;
    exit();
}

$service_port = 9100;
$address = $obj->printer_ip;

// Данные передаем через TCP-socket (описание этого метода есть на сайтах производителей принтеров)
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    $reason = socket_strerror(socket_last_error());
// IIS на сервере отдает сообщения в Win-1251, потому перекодируем
// для других серверов, возможно, это и не понадобится
    $reason2 = iconv("Windows-1251", "UTF-8", $reason);
    $mresponse->success = false;
    $mresponse->reason = $reason2;
    http_response_code(400);
} else {
    $result = socket_connect($socket, $address, $service_port);
    if ($result === false) {
        $reason = socket_strerror(socket_last_error());
        $reason2 = iconv("Windows-1251", "UTF-8", $reason);
        $mresponse->success = false;
        $mresponse->reason = $reason2;
        http_response_code(400);
    } else {
        $result = socket_write($socket, $decoded_template, strlen($decoded_template));
        if ($result === false) {
            $reason = socket_strerror(socket_last_error());
            $reason2 = iconv("Windows-1251", "UTF-8", $reason);
            $mresponse->success = false;
            $mresponse->reason = $reason2;
            http_response_code(400);
        }
        else {
            $mresponse->success = true;
            $mresponse->reason = "";
            http_response_code(200);
        }
        socket_close($socket);
    }
}
$respJSON = json_encode($mresponse, JSON_UNESCAPED_UNICODE);
echo $respJSON ;

?>

 

Специальные предложения

Оставьте свое сообщение

См. также

Пакетная печать в строго заданном порядке

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Пакетная печать

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

19.09.2018    7506    crazycat    20       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

Пакетная печать документов "Реализация товаров и услуг"

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 БП2.0 УТ10 Россия БУ УУ Windows Оптовая торговля Розничная торговля НДС Бесплатно (free) Пакетная печать

Обработка позволяет распечатать пакет отгрузочных документов для конфигураций УТ и БП, должна выдерживать обновления конфигураций. Что она позволяет распечатать 2 торг12, 2 счет фактуры , 2 ттн за два нажатия кнопки. + Встроен универсальный отбор по документам реализации товаров и услуг (н-р можно распечатать все документы за опред период по опред. контрагенту) + Возможность отсылки сразу на принтер и распределения по копиям + все общие модули вынесены в модуль обработки) + Печатает пакетно также и внешние печатные формы для документов реализация товаров и услуг и счетов фактур + при печати использует типовые модули печати документов в конфигурации (как будто вы сами отправляете на печать из формы документов) проверялась УТ 10.3.3.3 и БП 1.6.10.6

02.09.2009    23569    846    y22-k    33       

Универсальная настраиваемая печать документов

Отчеты и формы no Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Пакетная печать

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

05.07.2009    15817    981    Magister    39       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Групповая печать карточек 1-НДФЛ

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 ЗУП2.5 Россия БУ Зарплата НДФЛ Бесплатно (free) Пакетная печать

В 2009 не нашла в типовой печати 1-НДФЛ по всем сотрудникам. Сделала групповую печать карточек 1-НДФЛ по документу "Сведения о доходах физлиц", подготовленному для передачи в ИФНС. Может быть кому-нибудь пригодится. В 2010 году обработку посчитала уже неактуальной, так как в типовой появилась возможность групповой печати в стандартном отчете. Но расчетчица попросила и на последнем релизе (2.5.20) сделать печать по документу "Сведения о доходах физлиц". Поэтому выкладываю обновленную обработку, так как предыдущая версия не работает на более ранних релизах.

06.02.2009    13776    210    Ирка    12       

Обработка для печати регистра налоговых накладных

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 1cv8.cf Украина НУ Оптовая торговля Бесплатно (free) Пакетная печать

Обработка сама выводит на печать налоговые накладные (за укр. законодательством - неплательщик НДС (два экземпляра) и плательщик НДС(вариант организации)...

04.06.2008    7517    17    mut_mut    1       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Помощник печати

Отчеты и формы no Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Пакетная печать

Помощник печати с выбором печатных форм, подключенных к документу.

21.12.2007    12002    28    Legavaz    1       

Универсальный редактор реквизитов документов и справочников из УПП 8.0

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 УПП1 Бесплатно (free) Обработка документов Пакетная печать Обработка справочников

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

13.08.2007    11600    110    ge_ni    3       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Групповая печать документов

Отчеты и формы no Внешняя обработка (ert,epf) v8 1cv8.cf Бесплатно (free) Пакетная печать

"Множественная" печать документов из любой типовой конфигурации. "Сканирует" виды документов конфигурации, общие макеты и макеты документов. Выбираете вид документов и макет на основании которого будет формироваться печатная форма. К примеру: документы - "Перемещение товаров", макет - "ТОРГ13". Можно настроить непосредственную печать на принтер без предварительного просмотра, количество копий и др. Если для выбранных документа и макета не существует печатных форм, то выдаётся сообщение при попытки печати. Обработка писалась "на скорую руку", поэтому не судите строго. Рабочая, быстронастраиваемая программулина.

11.05.2007    9201    380    yalex9    14       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей