SetRetail10 ◾️ Ценники ◾️ Отображение QR-кода на ценнике в зашифрованном виде

Публичное пространство

SetRetail10 ◾️ Ценники ◾️ Отображение QR-кода на ценнике в зашифрованном виде

https://crystals.atlassian.net/browse/SRTS-4358

https://crystals.atlassian.net/browse/CR-15059

10.4.23.0

Описание

Функциональность обеспечивает печать QR-кода на ценнике таким образом, чтобы он отображался в зашифрованном виде, чтобы уменьшить вероятность дешифровки QR-кода и махинации с ценами товаров сотрудниками магазинов.

Ценность

Уменьшение риска махинаций с ценами магазинов через сканирование и подмену QR-кодов.

Ограничения

  1. Функция работает только при использовании нового формата JSON для QR-кода, включающего поля d (дата) и c (проверочный код).

  2. Для корректной работы необходимо обязательно настроить ШК-трансформер в базе данных кассы в соответствии с новым форматом.

  3. Старые ценники, напечатанные до включения функции, при сканировании будут вызывать ошибку, так как в их QR-коде не будет проверочного кода или поле даты.

Настройки

1. Выполните скрипт на сервере SetCentrum/SetRetail10 в базе данных set → перезапустие службу сервера.

2. Добавьте новую подстановку в редакторе ценников:

Откройте редактор шаблонов ценников в SetRetail10: Подстановки → Данные товара → Проверочный код

Начиная с версии 10.4.27.0 подстановка Проверочный код переименована в подстановку Проверочный код 1.

image-20260205-161147.png
image-20260205-161239.png

 

3. Добавьте QR-код → далее JSON-код в поле подстановки.

{"b" : "штрих-код (цифры)", "p" : "цена за единицу товара, руб.", "k" : "цена за единицу товара, коп.", "t" : "код шаблона ценника", "d" : "полная дата печати ценника", "c" : "Проверочный код"}
image-20260205-161451.png

4. Таким образов в QR-код товара будет передаваться значение c подстановками требующее проверочного кода.

{"b" : "4607141310331", "p" : "128", "k" : "80", "t" : "12345", "d" : "05.02.2026 19:15", "c" : "1483236169571"}
image-20260205-161627.png

Отображение QR-кода на ценнике в зашифрованном виде для каждой из 5-ти цен товара

https://crystals.atlassian.net/browse/SRTS-4711

https://crystals.atlassian.net/browse/CR-15778

10.4.27.0

Начиная с версии 10.4.27.0 есть возможность подстановок к одной из 5 цен для отображения QR-кода на ценнике в зашифрованном виде.

Доступны подстановки с названием Проверочный код N.

image-20260512-134622.png

 

1. Выполните шаги по добавлению подстановок.

image-20260512-135146.png

 

2. Добавьте JSON для подстановки одной из цен, например 3.

{“b” :“код товара”,“p” :“3 цена, руб.”,“k” :“3 цена, коп.”, “t” : “код шаблона ценника”, “d”: “дата печати ценника”,“c”:“проверочный код 3”}

Если в формате QR-кода будут присутствовать подстановки из различных номеров цен (например, 3-я цена товара в руб и 4-я цена товара в коп.) или одна из подстановок будет отсутствовать (например, цена товара в коп.), то проверочный код не отработает.

image-20260512-135032.png

 

Разбор QR-кода сформированного с помощью модуля печати ценника

https://crystals.atlassian.net/browse/SRTB-10410

10.4.25.0 10.4.23.8 10.4.24.1

Начиная с версии 10.4.25.0 расширены возможности parseDate:

  1. До версии 10.4.25.0 использовался только "yyMMdd". Начиная с версии 10.4.25.0:

    • Добавлена поддержку формата "dd.MM.yyyy HH:mm" а также, "dd.MM.yyyy HH:mm:ss".

    • Парсе разбирает даты со следующими разделителями:

      • разделитель . между днем/месяцем/годом;

      • разделитель пробел между датой и временем;

      • разделитель : между часами и минутами;

    • Результат: функция parseDate также разбирать не только даты, но и даты со временем

  2. Добавлено указание формата возвращаемого функцией параметра: например outputDateFormat. До версии 10.4.25.0 функция преобразовывала получаемую на вход дату только к формату формат ISO-8601.

  3. Новая функция formatDate добавлена для форматирования даты.

  4. Внутри трансформера даты теперь обрабатываются в формате LocalDateTime вместо LocalDate.

  5. Новая функция removeChars для удаления лишних символов

  6. Из json больше не удаляются пробелы перед разбором, оставлено для совместимости только для числовых значений.

  7. Исправлена ситуация, когда для json нельзя было в качестве fields/name использовать значения, совпадающие с ключами сканируемого json.

  8. Исправлен сценарий, если в сканируемом json есть пробел в начале, то касса не разбирала такой json

Пример JSON-ценника:

{"b":"4600000000008","p":"1 125","k":"90","t":13511,"d":"04.02.2026 18:47","c":"1477777198652"}

Пример конфигурации трансформера .