Мне необходимо сделать простую операцию: сканирование штрихкода, ввод количества товара и запись результата в документ. С чего начать?
Первое, что надо понять – это основные принципы создания операций в Mobile SMARTS.
Каждая операция – это заданный набор действий, которые последовательно (или не совсем) выполняет клиент на терминале, и создание операции подобно программированию. Действия существуют совершенно различные, от простых (присваивание, условие, вывод сообщения) до гораздо более сложных (действие сканирования и поиска номенклатуры, действия просмотра данных, занесение данных в документ). Каждое действие имеет множество различных настроек, которые управляют его поведением и отображением, если действие подразумевает какое-то визуальное отображение на экране.
Для того чтобы действия могли обмениваться данными, образуя единый процесс, существует сессия. Сессия представляет собой хранилище записей вида «Имя» - «Данные». Каждое действие использует сессию, добавляя, удаляя или внося изменения в данные записей.
Теперь перейдем собственно к созданию необходимого процесса.
Для простейшего варианта нам потребуются три действия: «Выбор номенклатуры», «Ввод количества» и «Прямая запись в документ».
Действие выбора номенклатуры одно из ключевых в системе. Оно позволяет искать товар в справочнике по штрихкоду, артикулу или коду и выбирать его в объект сессии {SelectedProduct} (здесь и далее запись в фигурных скобках показывает, что это данные в сессии).
{SelectedProduct} – аналог строки документа и содержит информацию о товаре, его упаковке, количестве и различных дополнительных полях, извлеченных из штрихкода или заданных каким-то другим способом. Но при этом, это пока просто некая порция данных, никак с самим документом не связанная.
Действие имеет множество различных настроек, управляющих как внешним видом и отображением данных, так и влияющих на логику поиска, обработку нестандартных ситуаций, например, когда данные в справочнике не найдены, и т.д.
«Ввод количества» позволяет изменять количество товара в {SelectedProduct} и не требует пока подробного рассмотрения.
Итак, мы выбрали номенклатуру и ввели количество. Теперь необходимо, чтобы данные из {SelectedProduct} попали в наш документ. Для этого используется действие «Прямая запись в документ».
Если в первых двух действиях мы не делали пока никаких настроек, то здесь необходимо внести корректировки. Во-первых, отключим проверку наличия и переполнения. Этот параметр используется для создания процессов, когда надо контролировать соответствие товара заявке, выгруженной из учетной системы. Процессы с таким действием будут обязательно рассмотрены позднее.
Во-вторых, укажем, что надо сливать одинаковые строки. Тогда процесс занесения будет искать строки с таким товаром уже существующие в документе, и увеличивать количество в существующей записи, а не добавлять новую строку.
Ну и наконец, задаем действию выбора номенклатуры имя «Выбор товара» и в действии записи делаем переход на это имя. Таким образом, сразу после записи процесс будет возвращаться в сканирование.
Простейшая реализация сканирования готова!