Приветствую всех, кто обратил внимание на этот топик!
Помогите, пожалуйста, разобраться со следующей проблемой. У меня есть
Библиотека Подключаемого Оборудования 2.0. В ней есть процедура
"МенеджерОборудованияКлиент.НачатьПечатьЭтикеток". В нее подается макет этикетки в формате XML и данные для печати. Сама процедура работает отлично, но проблемы появляются, когда я пытаюсь отправить на нее штрихкод из честного знака. Как известно, в таком штрихкоде может быть символ кавычек ("), но XML экранирует его в
" ; !!! Честный знак перестает воспринимать такой штрихкод и говорит, что я его якобы подделываю.
Для наглядности вот пример:
Получаю штрихкод из ЧЗ: 0104601071054136215
"LpWtsTCsHXN\u001d93xxkz - данный код считывается без проблем
После печати: 0104601071054136215
" ;LpWtsTCsHXN\u001d93xxkz - ЧЗ ругается, что код подделан
В
ПодключаемоеОборудованиеУниверсальныйДрайверКлиент, в методе
ПечатьЭтикеток как раз и происходит передача сформированного xml в драйвер принтера. Изменить работу самого драйвера я не могу, потому что это черный ящик, но могу отредактировать передаваемый ему xml. Собственно, именно это я и делаю. Я просто заменяю экранированную кавычку назад на нормальную:
...
ДанныеДляВыгрузки = СтрЗаменить(ДанныеДляВыгрузки, "" ;", """");
Ответ = ОбъектДрайвера.ПечатьЭтикеток(ПараметрыПодключения.ИДУстройства, ДанныеДляВыгрузки, СтатусПакета);
...
Удивительно, но это работает. Внутри драйвера xml все равно корректно считывается и на печать выходит штрихкод, который адекватно распознается честным знаком.
Единственное, что меня беспокоит, так это то, что когда-нибудь этот костыль сломается. Я уже выяснил, что если в тексте две кавычки, то последняя проигнорируется. И не могу даже представить какие еще возможны варианты, при которых мое решение перестанет работать.
Поэтому очень прошу подсказать, есть ли какой-нибудь вариант понадежнее? Если кто работал с принтером этикеток через БПО и честным знаком, то как вы справлялись вот с такой проблемой?