Бренды
Компания
  • О компании
  • Новости
  • Отзывы
Информация
  • Реквизиты
  • Магазины
  • Партнеры
Галерея
Контакты
Блог
Программа лояльности
    +7 999 111 111 2
    +7 999 111 111 2
    E-mail
    89991111112@mail.ru
    Адрес
    П. Новотерский ул. Восточная 23
    Режим работы
    Пн - Вс: Работает 24/7
    Мы в соцсетях
    Готовое решение для создания интернет-магазина
    Войти
    0 Избранное
    0 Корзина
    Войти
    0 Избранное
    0 Корзина
    Телефоны
    +7 999 111 111 2
    E-mail
    89991111112@mail.ru
    Адрес
    П. Новотерский ул. Восточная 23
    Режим работы
    Пн - Вс: Работает 24/7
    Мы в соцсетях
    ITMarket24
    0
    0
    • Кабинет
    • 0 Избранное
    • 0 Корзина
    • Бренды
    • Компания
      • Компания
      • О компании
      • Новости
      • Отзывы
    • Блог
    • Информация
      • Информация
      • Реквизиты
      • Магазины
      • Партнеры
    • Контакты
    +7 999 111 111 2
    • Телефоны
    • +7 999 111 111 2
    • 89991111112@mail.ru
    • П. Новотерский ул. Восточная 23
    • Пн - Вс: Работает 24/7
    Главная
    Блог
    Техническая документация ККТ от POSCENTER
    Рекомендации при разработке программ для работы с маркированными товарами

    Рекомендации при разработке программ для работы с маркированными товарами

    Рекомендации при разработке программ для работы с маркированными товарами
    Техническая документация ККТ от POSCENTER

    Рекомендации по алгоритму работы программы с учетом возможных сценариев

    Этап 1. Команда FNCheckItemBarcode

    Первая рекомендация - чек должен формироваться только после того, как кассир нажал кнопку "Закрыть чек", а не при сканировании товаров. Это необходимо для учета ситуаций, о которых будет написано далее.

    Кассир сканирует товары. Программа добавляет их в свой буфер, чтобы при закрытии чека послать команду на формировании чека.

    При добавления в чек маркированного товара должна проходить проверка онлайн-кассой до открытия чека через команду "Проверка маркированного товара" FNCheckItemBarcode

    В коде маркировки, кроме регламентированных блоков данных, присутствует символ-разделитель GS. Символ-разделитель является служебным и сканер может обрабатывать его различными способами. Самые распространенные способы трансляции символа-разделителя через F8 и через Alt-последовательность. Реже встречаются варианты через Ctrl-последовательность, а также кодирование простым текстом [GS] или <GS>. Проблем с корректной обработкой символа-разделителя не возникает, если сканер настроен на работу в режиме сом-порта, так как в этом режиме символ передается всегда в одном и том же формате, но в силу архаичности сом-порта данный способ встречается все реже и пользователь предпочитает использовать сканеры, работающие в режиме эмуляции клавиатуры.

    В целях унификации рекомендуется, чтобы кассовая программа принимала от сканера символ GS как нажатие F8 и как комбинацию клавиш ALT + 029. Подробно об этом написано по ссылке.

    Верхом мастерства написания кода будет вариант при котором кассовая программа будет самостоятельно добавлять символ GS в нужную позицию, в целях совместимости с бюджетными моделями сканеров,не имеющих опций форматирования кода. Для одной выбранной категории маркированной продукции данные символы присутствуют в одном и том же месте, перед символами "91" , "92" , "93", "94". Но необходимо учесть,что символы встречаются и в GTIN и в криптохвосте. Посмотреть примеры кодов можно в инструкции.

    Как обработать символ GS разобрались, теперь необходимо его передать в хост.

    Его невозможно передать в хост ,используя свойство "Barcode", так как данный символ служебный и не имеет графического представления. Поэтому необходимо использовать свойство "BarcodeHex". Считанную марку необходимо преобразовать в HEX и передать. Символ GS будет передаваться как "1D".

    Теперь необходимо оградить кассовую программу от обработки некорректно сформированных марок и "цифрового мусора". Поэтому на этапе отладки программы рассмотрим несколько возможных сценариев.

    Сценарий 1: Длинная марка и ненастроенный сканер

    В этой длинной марке не зашифрован в принципе символ GS

    Например, новый сканер с заводскими настройками, который не настроен на передачу GS или настроен, но не в том формате, при котором кассовая программа может корректно его обработать

    Если в таблице 17 значение поля 41 установлено "0" , то ККТ возвращает ошибку 211 D3 (код товара не распознан)

    Алгоритмов поведения программы два. Первый:

    1) После считывании кода сканером не сразу передавать его в ККТ, а форматировать, добавив символы GS:

    010123456789012321&dAIMqnpEQnQ!!910058921gx+7D2jIWGSo6LLr1FMGiETo7Ez6k4fr9D8FZwEmJqIWtivlAGjqEP8OspoVeIKiP4OkzmSCzRXmEUygvkKQw==

    Без обработки при конвертации в HEX будет

    30 31 30 32 39 30 30 30 30 30 30 30 37 37 36 35 32 31 26 64 3E 56 29 30 53 3E 38 66 71 44 74 39 31 38 30 32 33 39 32 48 55 77 4C 37 5A 52 65 37 39 69 55 31 75 44 57 32 39 6F 77 51 44 37 56 6C 44 4A 61 33 59 35 6B 44 77 45 4F 77 6F 44 35 36 63 4C 47 44 4D 70 59 71 6A 64 49 44 31 64 6A 2B 43 43 53 6D 63 72 4B 4C 63 6E 44 6C 4E 44 62 4D 4F 34 5A 51 4C 4F 54 77 54 50 61 45 67 3D 3D

    Но если добавить "1D" перед "91" (39 31) и перед 92 (39 32):

    30 31 30 32 39 30 30 30 30 30 30 30 37 37 36 35 32 31 26 64 3E 56 29 30 53 3E 38 66 71 44 74 1D 39 31 38 30 32 33 1D 39 32 48 55 77 4C 37 5A 52 65 37 39 69 55 31 75 44 57 32 39 6F 77 51 44 37 56 6C 44 4A 61 33 59 35 6B 44 77 45 4F 77 6F 44 35 36 63 4C 47 44 4D 70 59 71 6A 64 49 44 31 64 6A 2B 43 43 53 6D 63 72 4B 4C 63 6E 44 6C 4E 44 62 4D 4F 34 5A 51 4C 4F 54 77 54 50 61 45 67 3D 3D

    То вся обработка кода маркировка будет выполнена корректно. Учитывая,что кодирование символа GS могло быть выполнено некорректно (не соответствует методическим рекомендациям ЦРПТ) прорабатываем вариант 2:

    2) Если код не форматировать, то имеем:


    Set_CheckItemMode: 0
    Set_BarcodeHex: 30 31 30 32 39 30 30 30 30 30 30 30 37 37 36 35 32 31 26 64 3E 56 29 30 53 3E 38 66 71 44 74 39 31 38 30 32 33 39 32 48 55 77 4C 37 5A 52 65 37 39 69 55 31 75 44 57 32 39 6F 77 51 44 37 56 6C 44 4A 61 33 59 35 6B 44 77 45 4F 77 6F 44 35 36 63 4C 47 44 4D 70 59 71 6A 64 49 44 31 64 6A 2B 43 43 53 6D 63 72 4B 4C 63 6E 44 6C 4E 44 62 4D 4F 34 5A 51 4C 4F 54 77 54 50 61 45 67 3D 3D
    FNCheckItemBarcode: 211

    ККТ возвращает ошибку 211 (D3h) "Код товара не распознан". Рекомендуется выводить в графическом интерфейсе программы следующее сообщение: "Код товара не распознан. Попробуйте еще раз. Если это не поможет, то обратитесь в техническую поддержку".


    Проблема в том, что возникновение ошибки D3h (211) может иметь несколько причин, поэтому одним сообщением не описать все возможные варианты. Пользователю необходимо обратиться в техподдержку программы за решением. Возможные причины и способы устранения будут описаны ниже.

    Сценарий 2: Длинная марка и ненастроенный сканер + отключена проверка марки-в Таблице 17 поле 41 значение "1" для игнорирования ошибки 211 (D3h), (разрешить принимать "мусор")

    В этой длинной марке не зашифрован в принципе символ GS

    Марка прежняя, но теперь установим в таблице 17 поле 41 значение 1

    Кассовая программа должна прочитать ответ:

    Set_CheckItemMode: 0
    Set_BarcodeHex: 30 31 30 32 39 30 30 30 30 30 30 30 37 37 36 35 32 31 26 64 3E 56 29 30 53 3E 38 66 71 44 74 39 31 38 30 32 33 39 32 48 55 77 4C 37 5A 52 65 37 39 69 55 31 75 44 57 32 39 6F 77 51 44 37 56 6C 44 4A 61 33 59 35 6B 44 77 45 4F 77 6F 44 35 36 63 4C 47 44 4D 70 59 71 6A 64 49 44 31 64 6A 2B 43 43 53 6D 63 72 4B 4C 63 6E 44 6C 4E 44 62 4D 4F 34 5A 51 4C 4F 54 77 54 50 61 45 67 3D 3D
    FNCheckItemBarcode: 0
    Get_MarkingType2: 0

    Если Get_MarkingType2: 0 , сигнализирует о том, что это неустановленный тип маркировки. Дальше можно не продолжать получать результат проверки и выводить сообщение на экран:

    "Код товара не распознан. Попробуйте еще раз. Если это не поможет, то обратитесь в техническую поддержку".

    Ð