Работа с промышленными сканерами штрихкодов Symbol из 1С по протоколу SNAPI через Zebra Scanner SDK

16.09.19

Интеграция - Сканер штрих-кода

Промышленные сканеры Symbol - штука недешевая. Зато имеют надежное исполнение, абсолютно всеядные и универсальные, беспроводные, а самое интересное - имеют расширенные возможности управления через собственный протокол SNAPI (ну, есть и попроще у них сканеры, но я про самые вкусные - беспроводные и со SNAPI). Эти возможности позволяют реализовать эффективные сценарии работы. Одна проблема - нигде не смог найти примеры для работы из 1С по этому протоколу. Все стандартные протоколы поддерживаются, но ведь смак именно в расширенных возможностях! Поэтому пришлось копаться самому...

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

Наименование Файл Версия Размер
ScannerTestSymbolSNAPIZebra.epf
.epf 9,36Kb
7
.epf 9,36Kb 7 Скачать

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

Начал гуглить более глубоко. И (внезапно!) оказалось, что у производителя есть такая штука, как Zebra Scanner SDK. Это готовый набор (внимание!) com-компонент и примеров кода, для работы с любыми их сканерами и по любым протоколам, в том числе и по протоколу SNAPI! Просто, судя по всему, на 1С это никто не натягивал. А примеры кода и готовые демо-приложения есть на C++, C# и даже Java. Вроде как для linux тоже есть, но я в ту сторону не копал. Скорее всего там обычные библиотеки.
 
Оставался больной вопрос - не уткнется ли 1С в какие-то ограничение использования, а главное - получится ли подписаться на внешнее событие при сканировании штрих-кода. Не без проблем в процессе, но в итоге все получилось!
Рабочую обработку прикладываю за 10sm (хоть она и простейшая, но мало кому надо) и сразу извиняюсь за неприятный сюрприз - код полностью в английской нотации. Не знаю, зачем я это сделал. Смешанный язык резал глаз и хотелось глянуть, как 1С выглядит для буржуев (вполне себе нативно выглядит).
В качестве компенсации и кому дорого, просто опишу два момента, над которыми пришлось попотеть - подключение и подписка на событие. Остальное все тривиально и по документации.
 
Подключение (да-да, это код 1С):
    try
        CoreScanner = new COMObject("CoreScanner.CoreScanner");
    except
        Message("Error driver search: " + ErrorDescription());
        failure = true;
        return;
    endtry;
    
    Status = -1;
    ScannerTypes = new COMSafeArray("VT_I2", 1);     // array of integer(x2 byte), size=1
    ScannerTypes.SetValue(0, 1);                     // 1 - all scanner types
    CoreScanner.Open(0, ScannerTypes, 1, Status);
    if Status <> 0 then
        Message("Error scanner connection: " + Status + " " + ErrorCodes[Status]);
    endif;

Подписка на событие сканирования (тоже код 1С):

    AddHandler CoreScanner.BarcodeEvent, BarCodeScanned;
    
    Status = -1; Response = "";
    
    CoreScanner.ExecCommand(ScannerCommands["REGISTER_FOR_EVENTS"],
        StrTemplate("<inArgs><cmdArgs><arg-int>%1</arg-int><arg-int>%2</arg-int></cmdArgs></inArgs>",
            1, // number of events
            ScannerEvents["SUBSCRIBE_BARCODE"]),
        Response, Status);
        
    if Status <> 0 then
        Message("Error subscribing to barcode scanning event: " + Status + " " + ErrorCodes[Status]);
    endif;

Где ErrorCodes, ScannerEvents, ScannerCommands - это просто соответствия 1С с кодами/названиями. Нужные значения можно взять из документации Zebra Scanner SDK (ну или готовые из обработки). BarCodeScanned - это как раз название процедуры 1С (принимающей два параметра), которая будет автоматически вызываться при сканировании штрихкода. Все остальные приемы работы с библиотекой - тривиальны.

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

 

UPD

 

SNAPI сканер сканирование штрихкод symbol zebra SDK

См. также

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

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

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

2880 руб.

03.12.2018    54637    137    102    

161

Подсистема штрихкодирования серий номенклатуры для 1С:УТ 11.4/11.5 КА, ERP 2.4/2.5

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

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

12000 руб.

19.04.2021    20712    57    35    

51

Проверка товаров сканером штрихкода/ТСД для УТ11, КА2, ERP2, УНФ, БП3, Розница 2/ 3

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

У вас возникал вопрос - Как быстро и правильно выполнить приемку товара в торговой точке? Как минимизировать ошибки при сборке заказа клиента? Текущая разработка способна помочь в решении данных проблем. Её назначение - проверка с помощью сканера штрих кода поступления и реализации товаров, заказов клиентов, заказов поставщикам, расходных и приходных ордеров, перемещений и возвратов.

2400 руб.

29.07.2020    34102    156    152    

128

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

293

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59243    8    21    

20

Прайс-чекер. Розница (Россия, Казахстан)

Сканер штрих-кода Платформа 1С v8.3 1С:Розница 2 Абонемент ($m)

Простой и удобный прайс-чекер, работающий в режиме рабочего стола.

1 стартмани

28.11.2023    414    0    x-ynegve    0    

2

Прайсчекер для 1С (УНФ, УТ, Розница)

Сканер штрих-кода Платформа 1С v8.3 Управляемые формы 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Абонемент ($m)

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

3 стартмани

15.11.2023    586    6    usinfostart1c    2    

4
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. pethouseua 22.02.19 12:32 Сейчас в теме
А сталкивались ли Вы с задачей работы со сканером по протоколу SNAPI в терминале? Как модно "пробросить" сканер в терминал?
2. herfis 498 22.02.19 12:45 Сейчас в теме
(1) Не сталкивался. Админы поделились сакральным знанием о том, что требуемой стабильности работы при работе через терминал им добиться не удалось (периодически были какие-то проблемы), поэтому этот вариант при мне уже не рассматривался.
Сейчас поглядываем в сторону перехода на андроидные терминалы с мобильным клиентом 1С на них (покрыв всю складскую зону вайфаем). Но сам пока еще ничего не щупал.
pethouseua; +1 Ответить
3. bcosta 16.09.19 14:05 Сейчас в теме
Здравствуйте!
Не передать команду воспроизведения сигнала на сканер. Делал сначала по примеру Вашего кода в статье. Заставил сканер сканировать штрихкод, с этим все просто. По аналогии и с использованием документации Zebra Scanner SDK добавил команду SET_ACTION. Но сканер молчит. В итоге скачал Вашу обработку, но Ваш код абсолютно идентичен и тоже не работает. Через приложение SDK - C++ Sample App сканер издает звук, а через 1С - нет. Сканер Zebra DS2278. Так же пытался передать прочие команды на сканер. Заработала только команда перезагрузки сканера REBOOT_SCANNER. Остальные, которые пытался, не работают. Нужен только сигнал, остальные команды не нужны. Можете что-нибудь подсказать?
4. herfis 498 16.09.19 15:00 Сейчас в теме
(3) В новых редакциях сканера сканер и база определяются как разные устройства (а может и раньше так было, не суть). Если берется просто первое устройство из списка (как в обработке), то это скорее всего база. Но если раньше можно было посылать сигнал на базу и это успешно работало (сканер пикал), то в новых редакциях сканера (той же модели) "пикнуть" сканером (а также выполнить некоторые другие команды) стало возможно только послав сигнал именно на устройство сканера (как правило, это второе устройство в списке устройств).
Сам не ожидал такого нарушения обратной совместимости для серьезного промышленного производителя. Хотя причины, в принципе, понятны. Но тем не менее. Просто теперь нужно сканер и базу получать через API как отдельные устройства и посылать им команды раздельно.
Возможно, позже допилю обработку под этот новый ньюанс.
ЗЫ. Пока что внес дополнение в статью. Спасибо за замечание.
6. bcosta 17.09.19 10:54 Сейчас в теме
(4) Спасибо. Так получилось. Получается сканирование штрихкода идет через базу, а сигнал через сканер?
7. herfis 498 17.09.19 11:54 Сейчас в теме
(6) У меня так. Через сканер получать сканирование даже не пробовал.
5. herfis 498 16.09.19 15:08 Сейчас в теме
Кстати, эксперимент с андроидными ТСД завершился успешно (тоже Zebra). Удалось организовать аналогичный по обратной связи сценарий через мобильный клиент 1С. С помощью ВК от IgorKissil, честь ему и хвала.
8. user1311287 09.12.20 17:40 Сейчас в теме
Здравствуйте!
Подключился к сканеру, удалось выполнить команду издания сигнала. Не удается подключить обработчик события, при вызове метода регистрации обработчика ошибок нет, успешно отрабатывает, возвращает 0. Но при попытке сканирования штрихкод не обрабатывается пробовал и на клиенте и на сервере, (во внешней обработке), в чем может быть проблема?
9. user1311287 09.12.20 18:19 Сейчас в теме
(8) т.е событие обработчика не вызывается
13. herfis 498 16.12.20 15:56 Сейчас в теме
(9) Прошу прощения. Ввел в заблуждение. Логический номер сканера/базы нужно указывать не в Open/Close, а при посылке команды на сканер в параметре ScannerID. Ниже в комментариях будет подробнее.
10. herfis 498 10.12.20 13:37 Сейчас в теме
(8) Проблема может быть в том, что при обновлении некоторых моделей (для тех же самых моделей!) производитель изменил логику работы. В них с базой и со сканером нужно работать как с разными логическими устройствами. В примере и в обработке идет работа с логическим устройством номер 0. У вас может оказаться так, что 0 - это база, а сканер имеет номер 1. Соответственно нужно в вызовах методов компоненты Open и Close изменить 0 на 1 в параметрах вызова. А при необходимости мигать и "бипать" именно базой - подключаться к ней отдельно как к логическому устройству с номером 0.
11. GrRusel 15.12.20 13:16 Сейчас в теме
День добрый.
Скачал обработку. Пытаюсь отправить на сканер Beep, но выдаёт ошибку:
Error beeping: 112 ERROR_DEVICE_UNAVAILABLE
Сканер Zebra DS2278
Нужно что бы пикал именно сканер, а не база.

Попробовал через SDK - C# Sample App и вот лог:
1. CLOSE - Command success.
2. OPEN - Command success.
3. REGISTER_FOR_EVENTS - Command success.
4. GET_SCANNERS - Command success.
5. GET_PAIRING_BARCODE - Command failed. Error:118
6. SET_ACTION - Command failed. Error:116

6 пункт это соотв посылаю Beep
12. GrRusel 15.12.20 13:54 Сейчас в теме
Продолжение

НО! Если сначала запускаю 123Scan, потом SDK - C# Sample App, то санер определяется не как HIDkeybord, а как два устройства SNAPI и при посылке Beep на 3 устройство всё бикает как надо

Подскажите как быть, а вернее заставить пиликать в 1С?

Всё разобрался. При переключении всего и вся в SNAPI - всё заработало. Кстати сам сканер имеет ID = 3. В наличии пять комплектов - у кого ID = 3 у кого ID = 2. Жесть.

P.S. Правда в таком режиме не работает NativeApi в 1С, со всеми вытекающими. Получается надо переписывать обработку события в 1С или может есть способ как малой кровью сделать так что бы и стандартный NativeApi работал и SNAPI?
14. herfis 498 16.12.20 16:12 Сейчас в теме
(12) Логический номер базы/сканера указывается в параметре scannerID при посылке команды (в xml с параметрами команды, который передается вторым параметром методу ExecCommand). В обработке логические номера захардкожены, так как в старых партиях DS2278 (желтого цвета) которые использовались у нас с этим никогда проблем не возникало. А вот с появлением новых партий (черных с зелеными вставками) тоже началась чехарда с логическими номерами. И если они не совпадают с захардкоженными в обработке, то она не будет работать так как надо. Нужно изменить их на те, что у вас в реальности.
В продакшене для автоматического определения номера сканера я использовал такую затычку:
// уточнение ID устройства
ПараметрыПодключения.Вставить("ИДУстройства", 1);
Статус = -1; КоличествоСканеров = 0; Ответ = ""; 
СписокID = new COMSafeArray("VT_I4", 255);
ОбъектДрайвера.GetScanners(КоличествоСканеров, СписокID, Ответ, Статус);
Если Статус = 0 Тогда
	НачалоПодстрокиID = Найти(Ответ, "<scannerID>");
	Пока НачалоПодстрокиID > 0 Цикл
		Ответ = Сред(Ответ, НачалоПодстрокиID + 11);
		НачалоПодстрокиМодели = Найти(Ответ, "<modelnumber>");
		Если НачалоПодстрокиМодели > 0 Тогда
			Если Сред(Ответ, НачалоПодстрокиМодели + 13, 2) = "DS" Тогда // нашли именно сканер, а не базу
				КонецПодстрокиID = Найти(Ответ, "</scannerID>");
				ПараметрыПодключения.Вставить("ИДУстройства", Число(Сред(Ответ, 1, КонецПодстрокиID - 1)));
				Прервать;
			КонецЕсли;
		КонецЕсли;
		НачалоПодстрокиID = Найти(Ответ, "<scannerID>");
	КонецЦикла;
КонецЕсли;
Показать

ЗЫ. Если у вас типовая с БПО, то обработку события переписывать не нужно. Просто реализовать в рамках идеологии БПО работу со сканером в режиме SNAPI как работу с отдельным устройством (реализовать соответствующие обертки команд). В итоге при подключении сканера к рабочему месту будет просто выбираться не стандартный драйвер сканера, а какой-нибудь "Сканер SNAPI".
15. GrRusel 16.12.20 18:05 Сейчас в теме
(14) Да уже всё сделал, но всё равно спасибо за ответ :) Ещё сделал проверку, что сканер должен быть в режиме SNAPI:

	CoreScanner.ExecCommand(ScannerCommands["GET_DEVICE_TOPOLOGY"],"<inArgs><scannerID>1</scannerID></inArgs>", Response, Status);
	ScannerTypeStart = StrFind(Response, "SNAPI");
	
	Если ScannerTypeStart = 0 Тогда
		Возврат;
	КонецЕсли;


Там же и номер сканера вытаскиваю.

Если у вас типовая с БПО, то обработку события переписывать не нужно.

Конфа типовая, но сииильно переписанная. В итоге подключается и стандартный драйвер и SNAPI одновременно. Если наш сканер в режиме SNAPI, то типовой драйвер не обрабатывает событие и соотв. наоборот.
16. herfis 498 16.12.20 18:18 Сейчас в теме
(15) О, спасибо. Может, кому пригодится. У нас только в SNAPI и работают, так как блокировка сканировки и обратная связь на сканер - обязательные требования.
Если наш сканер в режиме SNAPI, то типовой драйвер не обрабатывает событие и соотв. наоборот.

Логично. Типовой драйвер в SNAPI не умеет, а через дрова производителя меня интересовал только SNAPI. Но если раскопать, то по-идее можно и другие режимы подтянуть.
17. GrRusel 17.12.20 10:44 Сейчас в теме
(16) Остался один момент, который мне ооочень не нравится
При сканировании мы получаем значение ШК вытаскивая его из <datalabel> с помощью:
StrReplace(StrReplace(DataLabel, "0x3", ""), " ", "")

А если в ШК будут нечитаемые спец символы - таких не мало может быть в коде, а про 2D я вообще молчу особенно всякие ЕГАИСы маркировки шин лекарств и т.д. в которых идёт крипто-хвост в коде. Ну в общем как-то меня это напрягает. С простыми ШК всё ок, а вот со сложными могут быть нюансы.
18. herfis 498 17.12.20 12:32 Сейчас в теме
(17) Да, это простейший "костыль" для исключительно цифровых штрихкодов. Для более сложных штрихкодов потребуется более интеллектуальная обработка.
Но там относительно просто. <datalabel> содержит коды символов штрихкода через пробел с префиксом "0x". То есть если просто разбить эту строку по пробелам, убрать в каждом слове "0x" и преобразовать к числу - то получим честный массив кодов штрихкода, включая спец-символы и прочее.
ЗЫ. И еще ньюанс. Раз цифры начинаются с 0x30 - то выходит что коды символов там в шестнадцатеричке. Т.е. перед преобразованием к числу нужно будет еще в десятичку перевести.
19. GrRusel 17.12.20 13:17 Сейчас в теме
(18) Вот тут я не очень понял :(
Вот есть у нас простейший ШК: 00346200942800000019
Получили datalabel: <datalabel>0x30 0x30 0x33 0x34 0x36 0x32 0x30 0x30 0x39 0x34 0x32 0x38 0x30 0x30 0x30 0x30 0x30 0x30 0x31 0x39</datalabel>
содержит коды символов штрихкода через пробел с префиксом "0x"

30 30 33 34 36 32 30 30 39 34 32 38 30 30 30 30 30 30 31 39
И? а дальше что? Не пойму :( что к числу преобразовывать?
20. herfis 498 17.12.20 13:58 Сейчас в теме
(19) 30 30 33 34 36 32 30 30 39 34 32 38 30 30 30 30 30 30 31 39 - это шестнадцатиричные коды символов штрихкода со сканера.
В десятичке это 48 48 51 52 и т.д.
Просто в ASCII коды символов цифр 0,1,2,3 и т.д. начинаются с 48 (шестнадцатеричной 30). И поэтому достаточно вычесть 48 из кода символа, чтобы получить нужную цифру (ну или просто отбросить троечку в шестнадцатеричке, как сделано в обработке). Но универсальным способом для любых символов будет банальное одинэсное Символ(КодСимвола). А если тебе нужно работать с криптохвостом не на уровне символов, а на уровне их кодов - то вот они сразу и есть.
21. GrRusel 17.12.20 15:06 Сейчас в теме
(20) А ну вот теперь всё понятно :)
22. user1311287 18.12.20 12:12 Сейчас в теме
(10)
Спасибо, что откликнулись! Подписываюсь на события следующим образом
//1001 - REGISTER_FOR_EVENTS
CoreScanner.ExecCommand(1001,
	StrTemplate("<inArgs><scannerID>1</scannerID><cmdArgs><arg-int>%1</arg-int><arg-int>%2</arg-int></cmdArgs></inArgs>",
	6, // number of events
	"1,2,4,8,16,32"),
	Response, Status);

Пробовал и с id и без id, и id обеих устройств подряд. id брал из результата процедуры GetScanners.
Метод во всех случаях отрабатывает, возвращает Status 0, только при сканировании 1с ни холодно ни жарко.
Проблема, предполагаю, где-то в обратной связи 1с с com объектом, хотя, при добавлении обработчика (AddHandler) в 1с, ругается, если в процедуре-обработчике параметров меньше чем указано в документации, т.е "событие" он видит. Процедуру обработчик объявлял и на клиенте и на сервере и с клиента на сервере.
Смотрю исходники Sampleapp.cpp, идут в комплекте с SDK, примерно тоже самое написано, только у них все работает, в режиме snapi штрихкод успешно выводится на экран.
пробовал и на другом пк с такой же win7 x64, база файловая, 1с 8.3.15. Сканер DS2278. Вашу обработку правда не использовал, но думаю вряд ли картина будет отличаться.
Была 1 попытка использовать метод из статьи https://infostart.ru/1c/articles/714025/, через эмулятор ничего не вышло
Ищу дальше..
23. herfis 498 18.12.20 16:21 Сейчас в теме
(22) Даже не знаю, что сказать.
В статье подключение к сканеру, регистрации события и подключение обработчика описаны без купюр(все это нужно делать конечно же на клиенте, включая обработчик). В обработке тоже самое. Поэтому если не работает, то обработку скачивать смысла нет.
На всякий случай акцентирую (хотя это вроде очевидно): ссылка на компоненту должна оставаться "живой" после подключения и регистрации. Или событие ловить будет просто некому. То есть должна быть либо клиентской переменной модуля формы (как в обработке)
&AtClient
var CoreScanner

Либо "жить" в экспортных переменных модуля управляемого приложения (как в БПО)
24. user1311287 22.12.20 08:48 Сейчас в теме
(23) Сейчас понял какой я болван. Действительно абсолютно очевидная вещь, но, видимо в силу отсутствия опыта работы с событиями из внешних компонент даже в голову не пришло ничего подобное. Наверное акцент на объявление переменной нужно сделать в статье, вдруг найдется второй такой же ... вроде меня. Спасибо огромное!
25. G_114492037554344237850 14.02.21 17:04 Сейчас в теме
Если пользователь долго работает со сканером и не трогает клаву/мышь, то ПК уходит в сон, потому что включён zebra snapi. Кто-нибудь нашёл какое-нибудь элегантное решение этой проблемы?
26. GrRusel 02.12.21 10:36 Сейчас в теме
День добрый, всем.
Подскажите плиз, кто нить пробовал перебросить SNAPI в RDP? В режиме USB-HID всё отлично работает в RDP? а вот SNAPI ни в какую не хочет. Драйвера ставил, но всё равно ничего не происходит. Поставил на сервер 123Scan и он тоже не видит сканер который в режиме SNAPI.
27. GrRusel 08.12.21 13:44 Сейчас в теме
Списался с ТП. Ответили что никак. Так как мне надо иметь возможность посылать на сканер различные команды, а именно что бы сканер пиликал как мне надо в нужный момент, то это можно сделать только в режиме SSI over USB CDC, но как теперь переписать всё это добро под этот режим - не понимаю.
Так как у зебры есть "готовый набор (внимание!) com-компонент и примеров кода, для работы с любыми их сканерами и по любым протоколам, в том числе и по протоколу SNAPI!" знчит можно и этот протокол прикрутить, но пока не получается. Может автор статьи поможет и подключиться к вопросу? :)
28. herfis 498 09.12.21 11:51 Сейчас в теме
(27)
Может автор статьи поможет и подключиться к вопросу? :)

Нет. Автор статьи не поможет. Все, что у меня было сказать по этому вопросу, я уже ответил в (2)
ЗЫ. И, кстати, переход на андроидные терминалы с мобильным клиентом 1С вполне себя оправдывает.
29. GrRusel 09.12.21 16:55 Сейчас в теме
(28)
И, кстати, переход на андроидные терминалы с мобильным клиентом 1С вполне себя оправдывает.

Не поверите, но именно этим сейчас и занялся - переводом на Urovo DT40 :) Хотя зебру тоже оставим :)
30. herfis 498 09.12.21 17:06 Сейчас в теме
(29) Ну почему не поверю. Вполне логичный путь. Переходили на терминалы Zebra с интегрированной пистолетной рукояткой. Один из критериев выбора был - громкий пьезодинамик, хорошо слышимый на шумном складе. Ну и проверенный производитель промышленного оборудования для не самых тепличных условий. Писали свои обработчики в рамках БПО. Но использовали ВК не из состава БПО. Использовались вот эти ВК от одного автора:
https://infostart.ru/public/779912/
https://infostart.ru/public/1043267/
Вот, пожалуй, и все, чем я готов помочь по этой теме.
Оставьте свое сообщение