Настройка мобильного оборудования на складе часто сопровождается неочевидными техническими нюансами. Одной из самых распространенных проблем является ситуация, когда терминал сбора данных (ТСД) перестает отправлять этикетки на печать, хотя с обычных компьютеров принтер работает исправно. Давайте подробно рассмотрим архитектуру печати в решениях класса 1С:WMS, разберем причины возникновения «тихих» ошибок (когда система ничего не сообщает пользователю) и выясним, как правильно восстановить работоспособность после изменения сетевой инфраструктуры.
Для начала проанализируем, как вообще работает печать с мобильных устройств. В типовых складских решениях печать редко идет напрямую со сканера или терминала на принтер. ТСД выступает лишь «тонким клиентом», который дает команду, а всю основную работу выполняет сервер.
Обычно используется механизм очереди печати:
ПоложитьКонтейнер или выполняет замену ячеек хранения) на терминале.Именно из-за того, что процедуры формирования макета выполняются на сервере, изменение маршрутизации или IP-адресов в сети склада приводит к сбоям. Сервер 1С может просто «не видеть» принтер по новому адресу.
Часто пользователи сталкиваются с ситуацией: IP-адреса поменяли, с компьютера администратора тестовая страница выходит, а при работе с ТСД принтер молчит, причем на экране терминала не появляется никаких сообщений об ошибках.
Разберем причину такого поведения. Разработчики конфигураций часто оборачивают серверный код отправки на печать в конструкцию, подавляющую ошибки, чтобы не прерывать рабочий процесс кладовщика блокирующими окнами. Посмотрим на пример того, как это может выглядеть в коде 1С:
Попытка
// Попытка прямого TCP-соединения с принтером и отправка ZPL
ОтправитьПакетНаПринтер(МакетЭтикетки, IPАдресПринтера, Порт);
ОбновитьСтатусЗадания(ЗаданиеНаПечать, СтатусВыполнено);
Исключение
// Ошибка перехватывается, но пользователю на ТСД не выводится
ТекстОшибки = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("ВМС.ПечатьС_ТСД", УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки);
ОбновитьСтатусЗадания(ЗаданиеНаПечать, СтатусОшибка);
КонецПопытки;
В итоге, задание просто «повисает» в очереди, а кладовщик думает, что система сломалась. Чтобы выявить проблему, нам необходимо зайти в Журнал регистрации на сервере 1С и проверить записи на наличие сетевых таймаутов (timeout) при обращении к принтерам.
Если печать пропала, необходимо по шагам проверить настройки внутри самой базы 1С. Выясним причину, последовательно исключая возможные препятствия:
Принтеры (или Оборудование) в WMS. Убедитесь, что там указан актуальный IP-адрес. Часто системные администраторы меняют IP на самом физическом устройстве и на сервере печати Windows, но забывают обновить реквизит в базе 1С.Если настроить прямую серверную печать не удается, в практике применяются альтернативные методы. При необходимости можно воспользоваться инструментом для прямой печати на мобильные и сетевые принтеры из приложений 1С.
Способ 1: Печать из документа (обходное решение)
Временно, пока проблема с сетью не решена, вы можете выгружать данные с ТСД в документ (например, в документ поступления или перемещения) и уже с рабочего компьютера оператора отправлять этот документ на печать стандартными средствами платформы 1С. При большом объеме документов автоматизацию действий оператора по их формированию и печати выполняют через платформу для создания программных роботов.
Способ 2: Использование внешних веб-сервисов
Рассмотрим более продвинутый архитектурный подход. Вместо того чтобы перекладывать задачу маршрутизации печати на сервер 1С, вы можете развернуть легкий микросервис (например, на Python или Node.js), который будет принимать запросы от ТСД по HTTP и самостоятельно отправлять задания в спулер принтера.
В этом случае терминал (клиент) делает простой GET или POST запрос к веб-сервису, передавая параметры (штрихкод, наименование, количество):
// Пример вызова веб-сервиса печати из 1С
HTTPСоединение = Новый HTTPСоединение("192.168.1.50", 8080);
HTTPЗапрос = Новый HTTPЗапрос("/print_label?item=" + КодТовара + "&qty=" + Количество);
Ответ = HTTPСоединение.Получить(HTTPЗапрос);
Если Ответ.КодСостояния = 200 Тогда
Сообщить("Задание успешно отправлено на сервер печати");
КонецЕсли;
Преимущество этого метода заключается в том, что внешний сервис может управлять целым парком принтеров, автоматически перенаправлять печать на резервное устройство при недоступности основного и вести подробное логирование. При смене IP-адресов вам потребуется изменить настройки только в одном месте — в конфигурационном файле этого веб-сервиса.
Проанализируем наши шаги: печать с терминалов в 1С:WMS — это преимущественно серверная задача. Если после изменения сетевой инфраструктуры печать прекратилась без выдачи ошибок, в первую очередь ищите зависшие элементы в регистре очереди печати, проверяйте актуальность IP-адресов в справочниках 1С и убедитесь, что серверу 1С открыт доступ по сети до принтера. При необходимости используйте альтернативные методы взаимодействия оборудования через промежуточные HTTP-сервисы.