Вы можете генерировать QR и штрих-коды, которые ссылаются на запись в базе. Вывести на форму записи эти коды или отобразить их в создаваемых документах из озмы.
Например, вы можете печатать наклейки на товары, а потом перемещать эти товары со склада на склад, заводя в операцию перемещения товар, сканируя эти этикетки камерой или специальным сканером.
Можете вывести QR коды на накладные или акты, чтобы было проще найти в базе то, что распечатано на бумаге. Можно использовать эти коды, так как вам захочется. Нет никаких ограничений.
Пример с использованием генерации и считывания штрих и QR кодов вы можете найти прямо в демоверсии озмы, которая развернулась для вас автоматически.
Видеообзор складского модуля, который использует коды:
https://youtu.be/pespuewfJyg
Устройство, считывающее штрихкод или иной код, нанесённый на упаковку товара или иной носитель, и передаёт эту информацию в систему. Имеет считывающий элемент.
Больше всего распространены сканеры, эмулирующие клавиатуру: сосканированная информация вставляется в виде строки в место, где установлен курсор пользователя.
В ozma встроен интерфейс, который позволяет распознавать QR и штрихкоды c помощью веб-камер на компьютерах или камер в телефонах пользователя.
Интерфейс распознает большинство штрихкодов и QR-коды.
Сейчас штрихкод в системе содержит в себе числовой идентификатор записи. т.е. просто число (например, 1054
)
Планируются изменения формата внутреннего штрихкода
По умолчанию (без указания атрибута format
) штрихкод в системегенерируется в формате CODE128
Поддерживаемые форматы баркодов (для атрибута format
):
CODE128
EAN
EAN-13
EAN-8
EAN-5
EAN-2
UPC (A)
CODE39
ITF-14
MSI
Pharmacode
Codabar
Генерация штрихкода в юзервью для конкретной записи в системе:
SELECT
//...
product.id as barcode @{
control = 'barcode',
format = 'ITF-14',
caption = 'Штрихкод'
},
FROM
//...
Сейчас QR-код в системе шифрует в себе строку, содержащую информацию о схеме сущности, сущности и id записи.
Строка имеет формат
1/<schema>/<entity>/<id>
Пример:
1/production/details/24
Генерация QR-кода в юзервью для конкретной записи в системе:
SELECT
//...
product.id as qrcode @{
control = 'qrcode',
caption = 'QR-код'
},
FROM
//...
reference(schema.name)
. Подходит поле id
(оно есть у любой записи)control
со значением 'barcode'
control
со значением 'qrcode'
Если для вставки информации в поле используется внешний сканер со считывающим элементом, то никакие дополнительные атрибуты не требуются. Необходимо лишь настроить сканер, чтобы он эмулировал клавиатуру и использовать его, установив фокус на определенное поле.
Если внешнего сканера нет, но на устройстве пользователя есть камера, то можно использовать встроенный распознаватель кодов.
Для добавления его в конкретное поле используется атрибут поля barcode_camera_input
со значением true
. Он используется для открытия интерфейса встроенного сканера.
SELECT
//...
external_number @{
barcode_camera_input = true,
},
FROM
//...
Внутренние штрихкоды содержат в информацию об id записей. Их можно использовать для поиска и быстрого выбора в полях-ссылках:
При использовании внутреннего штрихкода в поле автоматически подставится запись с сосканированным идентификатором.
Сканирование внешних штрихкодов позволяет быстро вставить в нужное поле строку с информацией из штрихкода.
Внешние коды не получится использовать для поиска информации в системе.
При необходимости массового добавления данных в таблицу можно воспользоваться специальным функционалом массового сканирования.
Он позволяет сосканировать несколько кодов подряд, а затем произвести вставку в указанную таблицу новых строк, указав в какой колонке использовать считанный из внутреннего штрихкода/QR-кода идентификатор.
Это полезно, например, при фиксации нескольких типов товаров в складских операциях
Код таблицы, в которую будут вставляться записи (сканируется продукт в референс-поле product
):
{ $id reference(storage.actions) }:
SELECT
@type = 'table',
@title = 'Продукты в операции',
products_in_actions.product @{
column_width = 300,
barcode_text_input = {
icon: 'qr_code_2',
tooltip: 'Text barcode scanner',
display: 'all'
},
},
products_in_actions.action @{ visible = false, default_value = $id },
products_in_actions.count @{ column_width = 155, caption = 'Единиц', text_align = 'right' },
goods.base_unit @{ column_width = 120 },
FROM storage.products_in_actions
LEFT JOIN production.goods
ON goods.id = products_in_actions.product
WHERE products_in_actions.action = $id
ORDER BY products_in_actions.id DESC
FOR INSERT INTO storage.products_in_actions
reference(schema.entity)
)barcode_camera_input
.all
- на панели на всех устройствах,mobile
- на панели в мобильной версии,desktop
- на панели только на ПК версии.
Код таблицы, в которую будут вставляться записи
{ $id reference(storage.actions) }:
SELECT
@type = 'table',
@title = 'Продукты в операции',
products_in_actions.product @{
column_width = 300,
barcode_camera_input = {
icon: 'qr_code_scanner',
tooltip: 'Camera barcode scanner',
display: 'mobile',
},
},
products_in_actions.action @{ visible = false, default_value = $id },
products_in_actions.count @{ column_width = 155, caption = 'Единиц', text_align = 'right' },
goods.base_unit @{ column_width = 120 },
FROM storage.products_in_actions
LEFT JOIN production.goods
ON goods.id = products_in_actions.product
WHERE products_in_actions.action = $id
ORDER BY products_in_actions.id DESC
FOR INSERT INTO storage.products_in_actions
reference(schema.entity)
)barcode_text_input
all
- на панели на всех устройствах,mobile
- на панели в мобильной версии,desktop
- на панели только на ПК версии.Можно использовать два варианта ввода в одной таблице. Для этого нужны 2 кнопки для открытия обоих интерфейсов ввода и два атрибута, указывающих в какую колонку вводить данные
Так как в QR-код помимо идентификатора зашита информация о таблице, то ее можно использовать в поиске информации в системе.
Например, можно сделать кнопку в главном меню, которая в зависимости от сосканированной сущности будет открывать разные вью или даже выполнять процедуры.
@panel_buttons = [{
name: 'Cканировать QR-код',
icon: 'qr_code_2',
qrcode: {
production: {
products: {
ref: &production.product_form,
target: 'top'
},
goods: {
ref: &production.good_form,
target: 'top'
}
},
public: {
users: {
action: {
schema: 'production',
name: 'check_employee_access'
}
}
}
}
}],
1/production/products/24
откроется форма product_form
для продукта с id = 241/production/good/1098
откроется форма good_form
для товара с id = 10981/public/users/8
исполнится процедура production.check_employee_access
в которую будет передан id = 8Действие | Штрихкод сканером | Штрихкод камерой | QR-код сканером | QR-код камерой |
---|---|---|---|---|
Генерация | control ='barcode', format = 'itf-14' |
control ='barcode', format = 'itf-14' |
control ='qrcode' |
control ='qrcode' |
Вставка содержимого в одиночный инпут | не требуется | barcode_camera_input = true |
не требуется | barcode_camera_input = true |
Поиск в референс-поле | не требуется | barcode_camera_input = true |
не требуется | barcode_camera_input = true |
Массовая вставка в таблицу (поле) | barcode_text_input = { name: name } |
barcode_camera_input = { name: name } |
barcode_text_input = { name: name } |
barcode_camera_input = { name: name } |
Поиск информации (кнопка) | 🚫 | 🚫 | qrcode: { schema: {entity: {ref: ref}}} |
qrcode: { schema: {entity: {ref: ref}}} |
Вызов процедуры (кнопка) | 🚫 | 🚫 | qrcode: { schema: {entity: {action: ref}}} |
qrcode: { schema: {entity: {action: ref}}} |