Почему не загружаются коды маркировки «Честного знака» из Frontol 6 в 1С:УТ 11 и как это исправить?

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

При интеграции кассового программного обеспечения Frontol 6 с конфигурацией 1С:Управление торговлей 11.4 пользователи часто сталкиваются с проблемой: отчеты о розничных продажах загружаются, но коды маркировки (КМ) для обуви, табака или парфюмерии «теряются» или вызывают фатальную ошибку при загрузке. Проанализируем эту ситуацию подробно, выясним технические причины и найдем пути решения.

Суть проблемы: ошибка на стыке систем

Ситуация обычно выглядит следующим образом: кассир успешно сканирует марку на кассе, чек пробивается, данные уходят в ОФД. Однако при попытке загрузить отчет о продажах в 1С (через механизм «Обмен с подключаемым оборудованием Offline») система выдает ошибку, связанную с некорректным текстом XML или просто игнорирует строки с кодами маркировки.

Рассмотрим типичную строку из файла отчета Frontol, которая вызывает затруднения:


55561;05.11.2020;16:16:28;11;1;13108;1;100173;;3900;1;3900;0;1566;3900;3900;0;;2000039990011;3900;0;0;1;0;;1/1566/13108;1;0;;;;5;010290000047743821>nlr¤jGQuCTBI 918039 927JIzrHQcBomxnJSutuQ­/Oau2BXtlSxUSGVLzxSmsyaTFegIB9K4IFkKQVF28oNGKwKKHVuyVmorJ7CR­W04HRmA==;;0;;;;;0;;;;;

В этой строке содержится полный код маркировки со всеми криптохвостами. Проблема заключается в том, что 1С на определенных релизах не может корректно интерпретировать эту последовательность символов.

Причина №1: Недопустимые символы в XML (Символ GS)

Разберем техническую сторону вопроса. Код маркировки формата GS1 DataMatrix содержит специальный непечатный символ-разделитель — GS (Group Separator), имеющий ASCII-код 29 (шестнадцатеричный 0x1D). Этот символ жизненно важен для правильного парсинга кода, так как он отделяет одни группы данных (AI) от других.

Однако при обмене данными между 1С и внешними системами часто используется XML-сериализация. Согласно стандартам XML 1.0, управляющие символы в диапазоне кодов от 0 до 31 (за исключением табуляции, перевода строки и возврата каретки) являются недопустимыми. Когда 1С пытается передать строку, содержащую символ 0x1D, с клиента на сервер (или наоборот) в виде XML-пакета, платформа генерирует исключение.

Именно поэтому, как заметили многие специалисты, отладчик 1С «не заходит» внутрь функции обработки. Разберем этот момент подробнее:


// Ошибка возникает ПЕРЕД выполнением этой строки при передаче параметров
Возврат ОфлайнОборудованиеАтолККМВызовСервера.ОбработатьЗагружаемыеДанныеИзККМ(ТекстовыйДокумент, ФорматОбмена, ВыходныеПараметры);

Платформа пытается упаковать ТекстовыйДокумент в XML для вызова серверного метода, натыкается на байт 0x1D и прерывает выполнение, даже не заходя в саму функцию ОбработатьЗагружаемыеДанныеИзККМ.

Причина №2: Устаревшие библиотеки интеграции ИС МП

В ранних версиях УТ 11.4.12 механизмы работы с маркировкой только обкатывались. Программа ожидала увидеть «чистый» код без лишних символов или в строго определенном формате. Если Frontol передавал марку с «хвостами», которые 1С не умела фильтровать в текстовом файле, загрузка либо обрывалась, либо код маркировки просто отбрасывался как некорректный.

Решение №1: Изменение кодировки во Frontol

Проанализируем настройки самой кассовой программы. Во Frontol 6, начиная с версий 6.8.x, появилась возможность влиять на формат выгружаемых данных. Попробуем выполнить следующие действия:

  1. Перейдем в настройки Frontol в раздел «Обмен данными».
  2. Найдем настройки вашего плана обмена с 1С.
  3. Изменим кодировку файла обмена с Windows-1251 на UTF-8.

Часто это помогает платформе 1С более лояльно отнестись к спецсимволам при чтении текстового файла, так как драйвер ОфлайнОборудованиеАтолККМ внутри 1С при использовании UTF-8 применяет иные алгоритмы преобразования строк.

Решение №2: Обновление конфигурации (Основной способ)

Как показывает практика и анализ чейнджлогов фирмы «1С», проблема была массово решена в релизе 11.4.13.51 и последующих. В этом обновлении были внесены существенные изменения в модули интеграции с ГИС МТ («Честный знак»):

Выясним, что именно изменилось. В новых релизах функция ОбработатьЗагружаемыеДанныеИзККМ стала предварительно «чистить» текст от управляющих символов до того, как они попадут в критически важные узлы системы. Если вы работаете на релизе ниже 11.4.13, обновление является обязательным условием для стабильной работы с маркировкой.

Решение №3: Ручная коррекция файла (Временная мера)

Если загрузить данные нужно «здесь и сейчас», а обновить конфигурацию невозможно, можно воспользоваться методом ручной очистки, но делать это нужно крайне осторожно. Рассмотрим алгоритм:

  1. Откройте файл отчета (обычно это файл с расширением .rep или .txt) в продвинутом текстовом редакторе, например Notepad++.
  2. Включите отображение всех символов (кнопка на панели инструментов).
  3. Вы увидите символы типа GS, SOH или другие метки на черном фоне. Это и есть непечатные символы.
  4. Попробуйте заменить символ GS (ASCII 29) на обычный пробел или просто удалить его.

Важное предостережение: Если просто удалить код маркировки из строки транзакции, 1С может загрузить продажу товара, но в документе «Отчет о розничных продажах» позиция будет помечена как не прошедшая проверку маркировки. Это потребует ручного сопоставления в 1С, что трудозатратно при больших объемах.

Проверка результата

После обновления 1С или смены настроек Frontol проведем проверку. Для этого:

  1. Выгрузим из Frontol отчет за небольшую смену.
  2. Убедимся, что в файле присутствуют строки с типом транзакции, отвечающим за маркировку (обычно это транзакции регистрации товара с кодом типа 5).
  3. В 1С воспользуемся обработкой «Загрузка данных из ККМ Offline».
  4. Проверим созданный документ «Отчет о розничных продажах». На закладке «Товары» у маркируемой продукции должен появиться зеленый значок марки, а в самой форме подбора и проверки маркированной продукции должны отобразиться считанные коды.

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

← На главную