Как я настраивал сканер для работы в OrangeData и победил символ GS
Когда у тебя рядом сканер, клиент, маркировка и система OrangeData, кажется, что все должно работать просто: навел, пикнул, передал, заработало. Но в реальности, как обычно, начинается маленькая IT-драма с элементами технокомедии.
Меня попросили настроить сканер так, чтобы он корректно передавал символ GS при работе с маркированным товаром. Задача на первый взгляд выглядела простой: сканер должен считывать код, а система — правильно принимать данные. Но, как это часто бывает, “простая задача” быстро превращается в расследование с участием технической поддержки.
Что такое OrangeData
OrangeData — это облачный сервис, который помогает работать с онлайн-кассами, фискализацией и передачей данных в соответствии с требованиями законодательства. Если говорить совсем по-человечески, это одна из тех систем, которые должны быть не заметны в работе: все должно считываться, передаваться и фиксироваться без лишних ручных движений. Особенно когда речь идет о маркированных товарах, где важна каждая деталь — даже такой скромный символ, как GS.
Где возникла проблема
Нужно было добиться, чтобы сканер корректно передавал служебный символ GS. Именно он часто используется в кодах маркировки, чтобы разделять части строки и помогать системе правильно распознавать структуру данных. Казалось бы, дело техники. Но стандартные способы передачи не подошли.
Мы пробовали вариант с GS=F8, но этого оказалось недостаточно. Символ либо передавался не так, как нужно, либо вообще не воспринимался системой корректно. В такие моменты особенно хочется, чтобы техника умела читать мысли. Но, увы, даже у сканеров свои характеры.
Что сказала техническая поддержка
После обращения в техническую поддержку и уточнения, что именно ожидает строка с маркировкой, выяснился ключевой момент: передавать нужно не “условный GS”, а конкретный управляющий символ \u001d.
Вот здесь и стала понятна вся логика. Система ждала именно этот символ-разделитель, а не его визуальный суррогат и не попытку уговорить его прийти в другом формате. Кроме того, в настройках нужно было выбирать тип товара ТМ — без этого корректной обработки маркировки не получалось.
Как я решил задачу
После этого я переписал свою программу lks.exe для клиента и добавил в нее функцию, которая автоматически вставляет нужную комбинацию “на лету” через COM-порт сканера.
То есть теперь программа сама подставляет \u001d в нужный момент, а сканер передает данные уже в правильном виде. В итоге система OrangeData получает именно ту строку, которую ожидает, а маркированный товар проходит обработку без сюрпризов, танцев с бубном и философских размышлений о смысле символа GS.
Что получилось в итоге
В результате настройка сканера для OrangeData была успешно завершена. Теперь:
- символ GS передается корректно;
- маркировка читается без ошибок;
- тип товара выбирается как ТМ;
- данные проходят через COM-порт без ручных доработок;
- клиенту не нужно каждый раз вспоминать, где у него заканчивается маркировка и начинается терпение.
Вывод
Настройка сканера для работы с OrangeData — это не просто “подключить устройство и нажать кнопку”. Иногда приходится разбираться, какой именно символ нужен системе, как его передавать и почему стандартные решения внезапно решают пойти в отпуск.
В моем случае победа была за точной настройкой: \u001d, правильный тип товара и доработка lks.exe, которая автоматически добавила нужную логику через COM-порт. И если раньше сканер был просто сканером, то теперь он стал полноценным участником процесса маркировки — без лишней драмы, но с характером.
Если Вы столкнулись с аналогичной или подобной ситуацией обращайтесь! Будет интересно помочь.