Штрихкод GS1-128 и ошибка Текст XML содержит недопустимый символ в позиции 16

1. kpdozer 18.10.19 20:12 Сейчас в теме
Добрый день.

Столкнулся с проблемой:
не сканируется GS1-128 на сканере Datalogic на любой типовой конфигурации, любой версии выдает ошибку:

Текст XML содержит недопустимый символ в позиции 16

Выяснил что это происходит если в штрихкоде присутствует символ FNC1.
Сканер, как и положено по стандарту передает FNC1 как GS (Символ(29)) - который является непечатаемым и 1С сразу валится с ошибкой.
Другие сканеры его возможно подменяют на другие печатаемые символы или вообще его вырезают.
Насколько я понял например Honeywell на подменяет его F8.

Но что делать с Datalogic?
Кто нибудь сталкивался?
Найденные решения
8. zhulanchik 16.02.20 11:32 Сейчас в теме
(1)
Если поменять в настройках сканера формат передачи GS1-128, то все отработает, т.к. 1С не воспринимает GS1-128, но воспринимает CODE-128.
Протестировали на 1С МДЛП.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 19.10.19 19:45 Сейчас в теме
(1)Переопределить GS на F8 с помощью настроечных штрикодов?
3. kpdozer 19.10.19 23:12 Сейчас в теме
(2)Как вариант, но не нашел такой раздел в документации. Возможно плохо искал. Внимательнее ещё раз пройдусь. 1с тоже никак эту тему не освещает в документации.

Вопрос: подход с перенастройкой впринципе правильный?
На практике, как сканируют эти штрих-коды, с доп. настройками сканера или без?
6. valafan 119 08.02.20 16:29 Сейчас в теме
(1) у меня так выходит при русской раскладке, если меняешь на английскую, то работает.
7. kpdozer 11.02.20 19:04 Сейчас в теме
У меня от раскладки не зависит, и точно такая же ошибка если подключать через COM-порт.
8. zhulanchik 16.02.20 11:32 Сейчас в теме
(1)
Если поменять в настройках сканера формат передачи GS1-128, то все отработает, т.к. 1С не воспринимает GS1-128, но воспринимает CODE-128.
Протестировали на 1С МДЛП.
Прикрепленные файлы:
9. kpdozer 16.02.20 14:51 Сейчас в теме
(8)Это наверное единственный вариант. Спасибо. Вообще 1с имеет очень скудные возможности по работе со штрих-кодами данных типов, особенно импортного товара. Не работает с управляющими символами, и даже дату считывает не по международным стандартам, а по своим каким то.
10. alul 13.10.20 10:46 Сейчас в теме
(8) Подскажите из какой программы скрин? Здесь я не вижу таких настроек
Прикрепленные файлы:
11. zhulanchik 13.10.20 11:13 Сейчас в теме
(10) Это Aladin, точно такой же как у вас. найдите сканер и зайдите в его настройки, там увидите его конфигурацию.
12. alul 13.10.20 15:14 Сейчас в теме
(11) Весь прикол в том, что мой Алладин "лампу" DataLogic QuickScan I QBT2400 не находит ни в эмуляции по COM ни как "клавиатуру"... Хотя сканер работает.
По теме: посмотрел как разработчики в разных конфигурациях исправляют ошибку, в основном:

СимволGS = Символ(29);
Для Каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ТекущаяСтрока.КодМаркировки = СтрЗаменить(ТекущаяСтрока.КодМаркировки, СимволGS, "");
КонецЦикла;
13. kpdozer 15.10.20 13:37 Сейчас в теме
(12) Можно переключить штрихкодом.
Замена символа наверное единственный пока вариант, т.к. в чистом виде передать его с клиента на сервер нельзя.
Прикрепленные файлы:
14. x13RUS064 30.08.22 21:39 Сейчас в теме
(8)Что за программа.?
Имею сканер Honeywell 1450g
При сканировании выдает Текст XML содержит недопустимый символ в позиции 24.
Это молочная продукция. символ GS
4. kpdozer 10.12.19 13:21 Сейчас в теме
Отвечу на свой вопрос.
Типовая конфигурации, в частности УТ 11.4 не поддерживают сканирование кодов GS1-128 с FNC1.
5. kpdozer 10.12.19 13:22 Сейчас в теме
Если есть иная информация, прошу отписаться.
15. user689995_qalitek 28.02.23 08:39 Сейчас в теме
Вообще с недопустимыми символами можно бороться групповым изменением реквизита используя
алгоритм:

ТекНаименование = Объект.Наименование;
НедопустимыйСимвол = НайтиНедопустимыеСимволыXML(ТекНаименование);
Пока НедопустимыйСимвол > 0 Цикл
    ЛеваяЧасть = ?(НедопустимыйСимвол = 1, "", Лев(ТекНаименование, НедопустимыйСимвол-1));
    ПраваяЧасть = ?(НедопустимыйСимвол = СтрДлина(ТекНаименование), "", Сред(ТекНаименование, НедопустимыйСимвол+1)); 
    ТекНаименование = ЛеваяЧасть+"_"+ПраваяЧасть;
    НедопустимыйСимвол = НайтиНедопустимыеСимволыXML(ТекНаименование);
КонецЦикла;
Если Объект.Наименование <> ТекНаименование Тогда
    Объект.Наименование = ТекНаименование;
    Объект.Записать();
КонецЕсли;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот