В процессе интеграции 1С:Управление торговлей с сервисом Атол Онлайн часто возникает потребность обеспечить связку между проданным товаром в чеке и его записью в учетной системе. Зачастую разработчики пытаются использовать поле тег 1162 (Код товара) для передачи внутренних идентификаторов, таких как GUID номенклатуры, характеристик и серий. Рассмотрим, почему этот путь является неверным и как организовать процесс корректно.
Важно понимать, что тег 1162 жестко зарезервирован для передачи данных о маркированной продукции (КМ) в систему «Честный ЗНАК». Фискальный накопитель и сервис Атол Онлайн производят проверку содержимого этого тега на соответствие форматам GS1 Data Matrix.
Если вы начнете передавать туда произвольные GUID, преобразованные в 16-ричный вид, произойдет следующее:
GUID не является легитимным кодом маркировки), сервис может вернуть ошибку или исказить данные.Для решения задачи идентификации товаров в пробитом чеке необходимо опираться на стандартные механизмы обмена, заложенные в API Атол Онлайн.
1. Использование уникального ID документа
При отправке запроса на печать чека сервис Атол Онлайн возвращает уникальный uuid фискального документа. Именно этот идентификатор является вашим «ключом» для сопоставления. Рекомендуем сохранять этот uuid в регистре сведений или табличной части документа 1С сразу после получения успешного ответа от сервиса.
2. Механизм обратной связи (Вебхуки и статусная модель)
Вместо попыток зашифровать GUID внутри кода товара, используйте событийную модель:
uuid.uuid.Если вам все же необходимо перевести GUID в 16-ричный формат для других целей (например, для собственной базы данных или логов), воспользуйтесь следующим алгоритмом на встроенном языке 1С:
// Пример преобразования GUID в 16-ричный вид
Функция ПреобразоватьGUIDВHex(Знач ИсходныйGUID) Экспорт
СтрокаGUID = СтрЗаменить(Строка(ИсходныйGUID), "-", "");
Результат = "";
Для Индекс = 0 По (СтрДлина(СтрокаGUID) / 2) - 1 Цикл
Пара = Сред(СтрокаGUID, Индекс * 2 + 1, 2);
Результат = Результат + Пара + " ";
КонецЦикла;
Возврат СокрЛП(Результат);
КонецФункции
Разберем, что происходит в этом коде:
GUID с помощью функции СтрЗаменить.Сред мы разбиваем длинную строку на пары символов.Проанализировав ситуацию, можно сделать вывод, что стремление «сжать» GUID для вставки в тег 1162 продиктовано желанием упростить поиск данных в 1С. Однако использование полей маркировки для нецелевых задач несет высокие операционные риски.
Всегда отдавайте предпочтение стандартным идентификаторам (uuid), которые предоставляет API. Касса онлайн всегда находится в сети, и взаимодействие между учетной системой и сервисом должно строиться на основе обмена статусами, а не на попытках внедрить внутренние данные в фискальные поля.
Помните: тег 1162 — это поле для государственных нужд (маркировка), оно не предназначено для хранения ваших внутренних артикулов или идентификаторов связи.