Найти в Дзене

Парсинг QR-кодов из чеков в AppSheet

Всем привет! В своих предыдущих статьях я уже рассказывал о приложении AppSheet. Мы разобрали, какие возможности содержит в себе данное приложение. Сегодня мы сделаем именно автоматическое разнесение важных нам полей из считанного QR-code на чеке из обычного магазина. Я покажу, как с помощью формул AppSheet вытащить из QR-кода конкретные данные и сделать процесс добавления записи практически мгновенным. Шаг 1. Подготовка полей Предположим, у вас уже есть таблица, куда вы хотите сохранять финансовые операции. Для начала нам нужно поле, которое будет принимать «сырые» данные от сканера. Назовем его, например, QR-code (Результат сканирования). Теперь, когда пользователь наводит камеру, в поле QR-code попадает вся запись целиком. Наша задача — распарсить её. Чтобы написать правильные формулы, нужно понимать, что мы парсим. Допустим, наш QR-код содержит следующую информацию, разделенную специальным символом (QR-code из чеков ФНС содержит & и =). Пример содержимого QR-кода: t=20230101T1200&
Оглавление

Всем привет! В своих предыдущих статьях я уже рассказывал о приложении AppSheet. Мы разобрали, какие возможности содержит в себе данное приложение.

Сегодня мы сделаем именно автоматическое разнесение важных нам полей из считанного QR-code на чеке из обычного магазина. Я покажу, как с помощью формул AppSheet вытащить из QR-кода конкретные данные и сделать процесс добавления записи практически мгновенным.

Шаг 1. Подготовка полей

Предположим, у вас уже есть таблица, куда вы хотите сохранять финансовые операции.

Для начала нам нужно поле, которое будет принимать «сырые» данные от сканера. Назовем его, например, QR-code (Результат сканирования).

  • Тип поля: Text (Текст).
  • В настройках поля (или в UX форме) обязательно включите функцию QR Code/Barcode для считывания.
Scannable - обязательно поставьте галочку
Scannable - обязательно поставьте галочку

Теперь, когда пользователь наводит камеру, в поле QR-code попадает вся запись целиком. Наша задача — распарсить её.

Шаг 2. Структура QR-кода

Чтобы написать правильные формулы, нужно понимать, что мы парсим. Допустим, наш QR-код содержит следующую информацию, разделенную специальным символом (QR-code из чеков ФНС содержит & и =).

Пример содержимого QR-кода:

t=20230101T1200&s=1250.00&fn=1234567890&i=12345&fp=1234567890&n=1

Здесь заложена логика:

  1. Дата и время(t): 2023-01-01 12:00
  2. Сумма операции(s): 1250.00
  3. Тип операции(n): 1 (где 1 — это расходы, а 2 — доходы).

Шаг 3. Пишем формулы для извлечения данных

Теперь самое интересное. Нам нужно создать вычисляемые поля (или использовать формулы в полях Initial Value), которые будут автоматически заполняться на основе QR-code.

Для работы с текстом в AppSheet отлично подходят функции SPLIT(), INDEX() и TEXT().

1. Извлечение даты и времени

Создадим поле Дата и Время(тип Date или DateTime).

-3


Формула берет полученный текст, разбивает его по разделителю & и дальше делит его на составляющие времени:

IF(ISNOTBLANK([QR-code]),
DATETIME(
CONCATENATE(
LEFT(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 4), "-",
MID(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 5, 2), "-",
MID(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 7, 2), "T",
MID(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 10, 2), ":",
MID(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 12, 2), ":",
RIGHT(INDEX(SPLIT(INDEX(SPLIT([QR-code], "&"), 1), "="), 2), 2)
)

)
,NOW())

Пояснение: Функция SPLIT делит строку на части, а INDEX(..., 1) забирает самую первую часть (дату и время).

2. Извлечение суммы операции

Создадим поле Сумма (тип Decimal/Price). по аналогии с предыдущим

Мы берем вторую часть после разделения:

if(ISNOTBLANK([QR-code]),INDEX(SPLIT(INDEX(SPLIT([QR-code],"&"),2),"="),2),"")

Пояснение: Мы указали INDEX(..., 2), чтобы взять второй фрагмент, и обернули в DECIMAL, чтобы AppSheet воспринял это как число, а не текст.

3. Извлечение и расшифровка типа операции

Это самый хитрый момент. В QR-коде у нас только цифра (1 или 2), а мы хотим видеть понятное название. Создадим поле Тип операции (тип Enum или Text).

Здесь нам поможет условная логика. Мы извлекаем шестой элемент и сравниваем его:

IF(ISNOTBLANK([QR-code]);IF(INDEX(SPLIT(INDEX(SPLIT([QR-code],"&"),6),"="),2)="1";"Расходы","Доходы"),"")

Пояснение: Если третий фрагмент равен "1", мы записываем «Расходы». Если "2" — «Доходы».

Итог

Теперь, когда вы открываете приложение, сканирует QR-код, происходит следующее:

  1. Текст попадает в поле QR-code.
  2. Срабатывают формулы.
  3. Поля «Дата и время», «Сумма» и «Тип операции» заполняются сами!
Готовый вариант
Готовый вариант

Таким образом, вы получаете практически автоматическое считывание QR-кода с минимальным участием человека. Пользователю остается только проверить корректность данных и нажать кнопку «Сохранить».

Пробуйте, внедряйте и автоматизируйте свои процессы!

Присоединяйтесь к телеграмм каналу