При эксплуатации контрольно-кассовой техники (ККТ) в связке с 1С:Розница или другими конфигурациями на платформе 1С:Предприятие 8.3 специалисты часто сталкиваются с ситуацией, когда после плановой замены фискального накопителя (ФН) и обновления прошивки кассового аппарата программа начинает выдавать критическую ошибку. Одной из самых распространенных является ошибка парсинга: «XML неверен, ошибка в позиции XXX» (часто указывается позиция 334). Эта проблема особенно характерна для принтеров чеков семейства Вики Принт (Wiki Print).
В данной статье мы подробно разберем причины возникновения этой неисправности, проанализируем механизмы взаимодействия 1С с драйвером ККТ и рассмотрим пошаговые инструкции по устранению ошибки.
Рассмотрим природу возникновения ошибки. В процессе открытия смены 1С обращается к драйверу оборудования для получения текущих параметров ККТ. Это происходит в программном модуле ПодключаемоеОборудованиеУниверсальныйДрайверКлиент. Функция ОткрытьСмену() вызывает метод драйвера ПолучитьПараметрыККТ, который возвращает строку в формате XML.
Проанализируем ситуацию: в позиции 334 этого XML-пакета система обнаруживает некорректный символ. Часто это выглядит как OFDOrganizationName='*33', где вместо ожидаемого названия ОФД (например, «Ярус») стоит нечитаемый служебный символ или «мусорный» байт. 1С использует стандартные механизмы чтения XML (объект ЧтениеXML), которые крайне чувствительны к кодировке и спецсимволам. Если драйвер передает символ, не соответствующий стандарту XML 1.0, выполнение кода прерывается с ошибкой.
Выясним, откуда берется этот символ. Чаще всего это происходит по одной из трех причин:
.dll, сохраненную в локальном профиле пользователя Windows.Как показывает практика, обновления только конфигурации 1С и платформы недостаточно. Для ККТ Вики Принт критически важно обновить внешнюю компоненту, которая устанавливается в систему отдельно. Проанализируем правильный алгоритм обновления:
Во-первых, необходимо убедиться, что в 1С используется актуальный драйвер от компании Дримкас. Даже в «свежих» релизах Розницы встроенный драйвер может быть устаревшим относительно текущей прошивки кассы.
Рассмотрим шаги по обновлению:
После установки нового драйвера в 1С необходимо обновить саму компоненту в справочнике. Для этого в карточке драйвера нажмем кнопку «Обновить из файла» и выберем поставку драйвера (обычно это zip-архив с библиотеками).
Иногда даже после обновления драйвера в интерфейсе 1С, программа продолжает обращаться к старым файлам. Проанализируем ситуацию: при первом обращении к кассе 1С копирует библиотеку драйвера во временную папку пользователя. Посмотрим, где она находится.
Обычно путь выглядит так: %AppData%\Roaming\1C\1cv8\ExtCompT.
Выполним следующие действия:
Dks1C83 или содержащие упоминание viki.Если обновление драйверов не помогло, значит, проблема кроется в самих данных, записанных в память кассы. Разберем, как это исправить с помощью сервисной утилиты FITO, которая поставляется вместе с Вики Принт.
Проанализируем порядок действий в утилите:
ООО "ЯРУС"), стараясь не допускать лишних пробелов в начале и конце строки.Этот метод позволяет принудительно перезаписать область памяти ККТ, из которой драйвер формирует тот самый XML-пакет. После «чистки» поля OFDOrganizationName ошибка в позиции 334 должна исчезнуть.
Для технических специалистов будет полезно рассмотреть, как именно 1С получает эти данные. Посмотрим на пример кода, который вызывается в момент возникновения ошибки:
// Фрагмент из модуля ПодключаемоеОборудованиеУниверсальныйДрайверКлиент
ПараметрыККТ = "";
Результат = ОбъектДрайвера.ПолучитьПараметрыККТ(ПараметрыПодключения.ИДУстройства, ПараметрыККТ);
Если Результат Тогда
// Вот здесь происходит падение, если в ПараметрыККТ содержится некорректный XML
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ПараметрыККТ);
// Дальнейший разбор структуры...
КонецЕсли;
Проанализируем ситуацию: если вы хотите временно обойти ошибку для диагностики, можно добавить в код принудительную очистку строки от нечитаемых символов перед вызовом Чтение.УстановитьСтроку(ПараметрыККТ). Однако правильным решением является именно обновление драйвера, так как современные версии драйверов Dreamkas автоматически экранируют спецсимволы, превращая их в корректные сущности XML.
После того как драйвер обновлен и параметры в кассе исправлены, рекомендуется выполнить «переподключение» оборудования в самой программе 1С. Рассмотрим, как сделать это максимально чисто:
Важный момент: если вы используете платформу версии 8.3.11 и выше, убедитесь, что драйвер поддерживает работу в изолированном режиме. Если возникают дополнительные ошибки доступа, попробуйте временно отключить защиту от опасных действий для пользователя, под которым запускается 1С, хотя при использовании сертифицированных драйверов это обычно не требуется.
Подведем итог: ошибка XML при открытии смены на Вики Принт — это следствие конфликта старого программного обеспечения с новыми данными в ФН или прошивке. Сочетание обновления драйвера, очистки локального кэша и проверки названия ОФД через утилиту FITO гарантированно решает данную проблему.