При работе с маркированными товарами в системе «Честный ЗНАК» пользователи часто сталкиваются с техническими сложностями при интеграции ТСД с 1С:Управление торговлей. Одна из самых распространенных проблем — невозможность выгрузки данных, полученных со сканера, в учетную систему. Давайте разберемся, почему это происходит и как устранить данную ошибку.
Основная проблема заключается в специфике кодирования штрихкодов стандарта DataMatrix. Согласно спецификации GS1, внутри кода содержатся служебные (непечатные) символы, такие как GS (Group Separator, ASCII 29) или RS (Record Separator, ASCII 30). Эти символы используются как разделители идентификаторов применения (AI).
Когда 1С:Мобильная торговля или аналогичное ПО считывает такой код и пытается передать его в 1С через XML-файлы обмена, возникает критическая ошибка. Парсер XML в платформе 1С считает такие символы недопустимыми, что блокирует загрузку данных. Рассмотрим, как можно решить эту задачу программно.
Одним из эффективных методов исправления ситуации является предварительная обработка строки перед формированием XML-документа. Суть метода заключается в поиске и удалении символов, которые запрещены стандартом XML. Разберем алгоритм по шагам:
НайтиНедопустимыеСимволыXML.Давайте посмотрим на пример реализации такого кода:
Пока НайтиНедопустимыеСимволыXML(Данные) > 0 Цикл
НедопустимыйСимволXML = НайтиНедопустимыеСимволыXML(Данные);
Переменная = Лев(Данные, НедопустимыйСимволXML - 1);
Переменная = Переменная + Сред(Данные, НедопустимыйСимволXML + 1);
Данные = Переменная;
КонецЦикла;
Применив данный алгоритм, мы очищаем данные от символов с кодом 32 и других непечатных управляющих знаков, что позволяет XML-парсеру успешно обработать полученную строку.
Хотя удаление спецсимволов помогает успешно завершить выгрузку, важно учитывать, что для полноценной работы системы маркировки (распознавания GTIN, серийного номера и криптохвоста) эти разделители необходимы. Рассмотрим важные советы для разработчиков:
УТ 11 предусмотрены типовые механизмы разбора штрихкодов. Если вы используете функцию РазобратьШтрихкод, платформа автоматически учитывает структуру кода маркировки, что избавляет от необходимости «ручной» очистки данных.GS на символ TAB или другой разделитель, который корректно воспринимается учетной системой.XML с последующей обратной конвертацией при чтении.Подводя итог, отметим, что при возникновении подобных ошибок первым делом стоит убедиться, что вы работаете с актуальным релизом конфигурации и используете штатные инструменты БСП (Библиотеки стандартных подсистем). Если же это невозможно, предложенный метод очистки строки с помощью НайтиНедопустимыеСимволыXML станет надежным временным решением для стабилизации обмена данными между ТСД и 1С.