Почему возникают ошибки при выгрузке DataMatrix с ТСД в 1С:Управление торговлей 11 и как их исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с маркированными товарами в системе «Честный ЗНАК» пользователи часто сталкиваются с техническими сложностями при интеграции ТСД с 1С:Управление торговлей. Одна из самых распространенных проблем — невозможность выгрузки данных, полученных со сканера, в учетную систему. Давайте разберемся, почему это происходит и как устранить данную ошибку.

Анализ причин возникновения ошибки

Основная проблема заключается в специфике кодирования штрихкодов стандарта DataMatrix. Согласно спецификации GS1, внутри кода содержатся служебные (непечатные) символы, такие как GS (Group Separator, ASCII 29) или RS (Record Separator, ASCII 30). Эти символы используются как разделители идентификаторов применения (AI).

Когда 1С:Мобильная торговля или аналогичное ПО считывает такой код и пытается передать его в 1С через XML-файлы обмена, возникает критическая ошибка. Парсер XML в платформе 1С считает такие символы недопустимыми, что блокирует загрузку данных. Рассмотрим, как можно решить эту задачу программно.

Способ решения: очистка строки от недопустимых символов

Одним из эффективных методов исправления ситуации является предварительная обработка строки перед формированием XML-документа. Суть метода заключается в поиске и удалении символов, которые запрещены стандартом XML. Разберем алгоритм по шагам:

  1. Определяем наличие недопустимых символов с помощью встроенной функции НайтиНедопустимыеСимволыXML.
  2. В цикле проходим по строке, выделяя часть кода до и после найденного спецсимвола.
  3. Соединяем очищенные части в итоговую строку.

Давайте посмотрим на пример реализации такого кода:


Пока НайтиНедопустимыеСимволыXML(Данные) > 0 Цикл
    НедопустимыйСимволXML = НайтиНедопустимыеСимволыXML(Данные);
    
    Переменная = Лев(Данные, НедопустимыйСимволXML - 1);
    Переменная = Переменная + Сред(Данные, НедопустимыйСимволXML + 1);
    
    Данные = Переменная;
КонецЦикла;

Применив данный алгоритм, мы очищаем данные от символов с кодом 32 и других непечатных управляющих знаков, что позволяет XML-парсеру успешно обработать полученную строку.

Рекомендации по дальнейшей работе с кодами маркировки

Хотя удаление спецсимволов помогает успешно завершить выгрузку, важно учитывать, что для полноценной работы системы маркировки (распознавания GTIN, серийного номера и криптохвоста) эти разделители необходимы. Рассмотрим важные советы для разработчиков:

Подводя итог, отметим, что при возникновении подобных ошибок первым делом стоит убедиться, что вы работаете с актуальным релизом конфигурации и используете штатные инструменты БСП (Библиотеки стандартных подсистем). Если же это невозможно, предложенный метод очистки строки с помощью НайтиНедопустимыеСимволыXML станет надежным временным решением для стабилизации обмена данными между ТСД и 1С.

← На главную