Основные переменные в Mobile SMARTS
Для разработки процессов и алгоритмов в Mobile SMARTS предусмотрены действия. При выполнении тех или иных действий появляются какие‑то данные (товары, упаковки, штрихкоды, ячейки, какие‑то строки и т.д.), которые заносятся в различные переменные, для дальнейшего использования другими действиями. Рассмотрим подробнее наиболее часто используемые (основные) переменные.
Объект «Buffer»
Buffer — буфер строк, с которым работают действия занесения в буфер и записи в документ из буфера.
Кем заполняется
Эта переменная появляется как результат работы действия «Запись данных в буфер».
Как используется
Переменная Buffer используется для хранения данных, без прямой записи в документ, для последующего использования другими действиями.
Для записи данных из буфера в документ. Все данные из буфера сохраняются в документ действием «Запись буфера в документ».
Основные поля
| Имя свойства объекта | Описание |
| Count | Количество строк. |
| DeclaredQuantity | Суммарное плановое количество в базовых упаковках. |
| CurrentQuantity | Суммарное фактическое количество в базовых упаковках. |
| DeclaredQuantityInUnits | Суммарное плановое количество в единицах. |
| CurrentQuantityInUnits | Суммарное фактическое количество в единицах. |
| Index (Item) | Получить номер строки (заменить Item в шаблоне) в коллекции. |
| GetDeclaredQuantityInPacking (product, packing) | Получить заявленное количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). |
| GetCurrentQuantityInPacking (product, packing) | Получить текущее количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). |
Объект «Document»
Document — документ, основная единица взаимодействия между учетной системой и пользователем. Содержит описание задания, назначенного к выполнению, и, собственно результат выполнения задания. Обязательно должен быть указан тип документа, соответствующий одному из типов, заведенных в конфигурации.
Кем заполняется
Документ выгружается из внешней системы и может быть выбран вручную или по штрихкоду (с терминала или сервера).
Платформа Mobile SMARTS позволяет создавать документы непосредственно на терминале (если разрешено конфигурацией, для данного типа документа).
Документ может выполняться «на сервере» {Document.ServerHosted}. Такой документ могут одновременно открыть на редактирование несколько пользователей. Все изменения в документе будут происходить одновременно для всех работающих с ним пользователями. Работа в таком режиме требует наличия постоянной связи с сервером.
Как используется
Документ лежит в сессии, и все действия имеют к нему доступ (могут использовать данные занесенные в документ).
По завершению документ попадет на сервер, а учетная система загрузит данные в свой документ.
Созданный документ непосредственно на ТСД можно удалить прямо с терминала.
Основные поля
| Имя свойства объекта | Описание | Примеры |
| Barcode | Штрихкод документа. | Document.Barcode |
| CreateDate | Дата создания документа День, месяц, год, часы, минуты, секунды. | Document.CreateDate |
| DeclaredItems | Декларативная (плановая) табличная часть документа. Содержит строки с информацией о товаре, его количестве, ячейке размещения и т.д. По сути, описывает задание для выполнения. Эта коллекция строк обычно заполняется в учетной системе при выгрузке документа. | Document.DeclaredItems |
| CurrentItems | Реальная (фактическая) табличная часть документа. В нее заносятся реально отсканированные данные. При заполнении фактической части система производит сверку и сопоставление данных со строками в декларативной (плановой) части документа. | Document.CurrentItems |
| Description | Описание документа. | Document.Description |
| Overloaded | Есть или нет перебор хотя бы для одной строки CurrentItems. | Document.Overloaded |
| Underloaded | Есть или нет недобор хотя бы для одной строки CurrentItems. | Document.Underloaded |
| UnderloadedOrOverloaded | Есть или нет перебор или недобор хотя бы для одной строки CurrentItems. | Document.UnderloadedOrOverloaded |
| CreatedOnPDA | Документ создан на ТСД или нет. | Document.CreatedOnPDA |
| Таблицы документа | Дополнительные таблицы документа. Чтобы их использовать, необходимо сначала добавить дополнительные таблицы в документ. | Document.ДополнительнаяТаблица |
Объект EAN-128
EAN128 — специальный объект, который позволяет получить программный доступ к данным штрихкода в формате EAN-128 (GS1-128). Он может содержать информацию о коде товара, количестве (весе), сроке годности и различных дополнительных полях, в зависимости от содержания исходного штрихкода.
Кем заполняется
При сканировании штрихкода EAN-128 (GS1-128) в действии выбора номенклатуры в сессию добавляется объект c именем EAN128, содержащий данные о распознавании штрихкода, и позволяющий получить доступ к его содержимому в других действиях.
Кроме этого может быть получен программно, с помощью глобальных функций:
global::Cleverence.Barcoding.Ean128.Parse(штрихкод) — в качестве аргумента служит уже отформатированн ый с помощью скобок штрихкод, например (01)04260076865026 (11)130902
global::Cleverence.Barcoding.Ean128.FormatAndParse(штрихкод) — в качестве аргумента служит еще неотформатированный с помощью скобок штрихкод, например 0104260076865026 11130902
Результатом функций служит объект EAN128 или null если распознать штрихкод не удалось.
Пример:
EAN128= global::Cleverence.Barcoding.Ean128.FormatAndParse(ScannedBarcode)
Как используется
Можно извлекать из объекта EAN128 находящиеся в нем данные в переменные, которые могут быть использованы действиями.
Например, строку с серийным номером ([[идентификатор|идентификатор]] AI 21) можно извлечь в переменную из объекта EAN128 (если в объекте такой идентификатор есть) с помощью выражения присваивания:
serial= EAN128.GetValue(«21»), где
serial — переменная, для сохранения данных;
(«21») — число 21 означает AI [[идентификатора|идентификатора]] серийного номера.
Основные поля
| Свойства объекта | Описание | Примеры |
| Barcode | Исходный штрихкод EAN-128 (без скобок). | EAN128.Barcode возвращает «0104260076865026111309023304200000» (штрихкод на этикетке: (01)04260076865026 (11)130902(3304)200000) |
| GTIN | Возвращает GTIN из значения AI 02. | EAN128.GTIN возвращает «08000607997453» (штрихкод на этикетке: (02)08000607997453(15)07000814(37)72) |
| SSCC14 | Возвращает строковое значение для AI01. | EAN128.SSCC14 возвращает «04260076865026» (штрихкод на этикетке: (01)04260076865026 (11)130902(3304)200000) |
| Upc | Возвращает код UPC14/13/12/8 или EAN14/13/12 из кода GTIN в значении AI02 или AI 01. | EAN128.Upc возвращает «8000607997453» (8000607997453 — код EAN13) (штрихкод на этикетке: (02)08000607997453(15)07000814(37)72) |
| Qty | Возвращает количество единиц товара из значения AI 37 в виде числа. | EAN128. Qty возвращает число 72 (72 шт.) (штрихкод на этикетке: (02)08000607997453(15)07000814(37)72) |
| Qty30 | Возвращает количество единиц товара из значения AI 30 в виде числа. | EAN128. Qty30Возвращает число 61 (61 шт.) (штрихкод на этикетке: (01)04260076865026 (11)130902(30)61) |
| WeightInKg | Возвращает вес товара из значения AI 310y. | EAN128.WeightInKg возвращает число 7.2 (7,2 кг) (штрихкод на этикетке: (02)08000607997453(15)07000814(3102)72) |
| ProductionDate | Возвращает дату производства из значения AI 11. | EAN128.ProductionDate возвращает дату 2013.09.02 (02 сентября 2013 г.) (штрихкод на этикетке: (01)04260076865026 (11)130902(30)61) |
| ExpiredDate | Возвращает срока годности из значения AI 17. | EAN128.ExpiredDate возвращает дату 2015.09.25 (25 сентября 2015 г.) (штрихкод на этикетке: (02)08000607997453(15)07000814(17)150925) |
| PackagingDate | Возвращает дату упаковки из значения AI 13. | EAN128.PackagingDate возвращает дату 2013.08.15 (15 августа 20013 г.) (штрихкод на этикетке: (01)04260076865026 (13)130815(30)61) |
| Contains(string ai) | Проверяет присутствие в коде указанного AI. True, если указанный AI присутствует в коде. | EAN128.Contains(«21») возвращает False (отсутствует в штрихкоде) EAN128.Contains(«15») возвращает True (присутствует в штрихкоде) (штрихкод на этикетке: (02)08000607997453(15)07000814(37)72) |
| GetValue(string ai) | Возвращает строковое значение для указанного AI или null, если указанный AI отсутствует в коде. | EAN128.GetValue(«3111») возвращает «000053» (5,3 метра) (штрихкод на этикетке: (02)08000607997453 (3111)000053) |
| GetObjectValue(string ai) | Возвращает значение для указанного AI или null, если указанный AI отсутствует в коде. | EAN128.GetObjectValue(«3302») возвращает 2000.00 (2000 кг) (штрихкод на этикетке: (01)04260076865026 (11)130902(3302)200000) |
Объект «Item»
Item — текущая строка пр и отображении строк и построении запросов.
Кем заполняется
Эта переменная заполняется в результате действий, в которых необходимо отобразить данные текущей строки.
Кроме этого, переменная появляется при запросе данных текущей строки.
Как используется
Позволяет выполнять запросы к текущей строке документа для отбора по определенным параметрам.
Позволяет отображать данные текущей строки документа с помощью шаблона.
Например, нам необходимо просмотреть записи с товаром в документе с определенными данными.
Тогда выражение:
{Item.Product.Marking:(0)}{Item.Product.Name} ({Item.Packing.Name}){Item.sn: - (0)}
создаст текущую строку с артикулом, именем товара, наименованием упаковки и серийным номер (заведенное дополнительное поле).
Основные поля
| Имя свойства объекта | Описание | Примеры |
| ProductId | Уникальный идентификатор продукта. | Item.ProductId |
| Product | Подукт. | Item.Product |
| PackingId | Уникальный идентификатор упаковки. | Item.PackingId |
| Packing | Упаковка. | Item.Packing |
| RegistrationDate | Дата регистрации. | Item.RegistrationDate |
| ExpiredDate | Срок годности. | Item.ExpiredDate |
| BindedLine | Строка документа в заявке, к которой привязалась фактическая строка (можно использовать только для строк из фактической части). | Item.BindedLine |
| ParentCurrentItems | Строки фактической части, привязанные к строке из заявленной части (можно использовать только для строк из заявки). | Item.ParentCurrentItems |
| GetDeclaredQuantityInPacking(packing) | Получить заявленное количество в упаковке packing (заменить в шаблоне). | Item.GetDeclaredQuantityInPacking(packing) |
| GetCurrentQuantityInPacking(packing) | Получить текущее количество в упаковке packing (заменить в шаблоне). | Item.GetCurrentQuantityInPacking(packing) |
| Дополнительные строки | Любые дополнительные строки, созданные для документа. | Item.code Item.serial Item.ОтображаемоеИмя |
Объект «Items»
Items — переменная, куда временно проставляется коллекция объектов при показе строк или действий цикла.
Кем заполняется
Переменная появляется как результат действия «Просмотр записей».
Также может появиться как результат действия «Цикл по строкам».
Как используется
Временно хранит коллекцию объектов.
Основные поля
| Имя свойства объекта | Описание | Примеры |
| Count | Количество строк. | Items.Count |
| DeclaredQuantity | Суммарное плановое количество в базовых упаковках. | Items.DeclaredQuantity |
| CurrentQuantity | Суммарное фактическое количество в базовых упаковках. | Items.CurrentQuantity |
| DeclaredQuantityInUnits | Суммарное плановое количество в строках в единицах. | Items.DeclaredQuantityInUnits |
| CurrentQuantityInUnits | Суммарное фактическое количество в строках в единицах. | Items.CurrentQuantityInUnits |
| Index(Item) | Получить номер строки (заменить Item в шаблоне) в коллекции. | Items.Index(Item) |
| GetDeclaredQuantityInPacking(product, packing) | Получить заявленное количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). | Items.GetDeclaredQuantityInPacking(product, packing) |
| GetCurrentQuantityInPacking(product, packing) | Получить текущее количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). | Items.GetCurrentQuantityInPacking(product, packing) |
Объект «SelectedLines»
SelectedLines — результат запроса на поиск строк.
Кем заполняется
Действие «Выбор строк» позволяет отобрать все строки из документа по заявленным параметрам. Отобранные строки будут занесены в переменную SelectedLines.
Как используется
Может быть использовано действием «Просмотр записей» для отображения отобранных строк используя шаблон для вывода.
Основные поля
| Имя свойства объекта | Описание | Примеры |
| Count | Количество строк. | SelectedLines.Count |
| DeclaredQuantity | Суммарное плановое количество в строках. Использовать аккуратно, так как количества в строках не пересчитываются в какие‑либо общие единицы. | SelectedLines.DeclaredQuantity |
| CurrentQuantity | Суммарное плановое количество в строках. Использовать аккуратно, так как количества в строках не пересчитываются в какие‑либо общие единицы. | SelectedLines.CurrentQuantity |
| DeclaredQuantityInUnits | Суммарное плановое количество в строках в единицах. | SelectedLines.DeclaredQuantityInUnits |
| CurrentQuantityInUnits | Суммарное фактическое количество в строках в единицах. | SelectedLines.CurrentQuantityInUnits |
| Index(Item) | Получить но мер строки (заменить Item в шаблоне в коллекции). | SelectedLines.Index(Item) |
| GetDeclaredQuantityInPacking (product, packing) | Получить заявленное количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). | SelectedLines.GetDeclaredQuantityInPacking (product, packing) |
| GetCurrentQuantityInPacking (product, packing) | Получить текущее количество в строках с товаром product (заменить в шаблоне) в упаковке packing (заменить в шаблоне). | SelectedLines.GetCurrentQuantityInPacking (product, packing) |
Объект «SelectedProduct»
SelectedProduct — выбранная позиция товара, содержит информацию о товаре, его упаковке, количестве и различных дополнительных полях, извлеченных из штрихкода или заданных каким‑то другим способом. Позволяет выбирать, отображать товар и его свойства, когда он был выбран.
Именно этот объект используется при занесении строк товара в документ (смотрите действия «Прямая запись в документ», «Запись данных в буфер», «Запись буфера в документ»).
Кем заполняется
Обычно эта переменная появляется как результат работы действия выбора товара и содержит конкретный итоговый выбранный сканированием или из списка товар (поле Product) вместе с конкретной упаковкой (Packing) и количеством (Quantity). Значение количества по умолчанию равно 1, если оно не было извлечено из штрихкода по шаблону.
Другие варианты заполнить SelectedProduct с помощью функции товара Pack(…).
Product.Pack() — возвращает упакованный товар в базовой упаковке с количеством 1.
Product.Pack(qty) — возвращает упакованный товар в базовой упаковке с количеством qty (заменяется в шаблоне на значение или шаблон значения).
Product.Pack(packingId, qty) — возвращает упакованный товар в упаковке с кодом packingId (замените в шаблоне) с количеством qty (заменяется в шаблоне на значение или шаблон значения).
Например, мы хотим заполнить SelectedProduct на основе строки документа, выбранной нами из списка в переменную ВыбраннаяСтрока.
Тогда действие присваивания создаст и заполнит SelectedProduct объектом с товаром, указанным в строке, в той же упаковке, и количеством, равным заявленному количеству в строке.
SelectedProduct=ВыбраннаяСтрока.Product.Pack(ВыбраннаяСтрока.PackingId, ВыбраннаяСтрока.DeclaredQuantity)
Создание SelectedProduct на основе неизвестного товара будет выглядеть так:
SelectedProduct=UnknownProduct.Pack()
Как используется
SelectedProduct используется действиями «Прямая запись в документ» и «Запись данных в буфер» как исходные данные для их работы. Эти действия считают, что именно в SelectedProduct содержатся выбранный пользователем товар с упаковкой, дополнительными полями и его количество. Соответственно, отсутствие заполненного SelectedProduct в сессии приведет эти действия к ошибке выполнения.
Кроме этого, именно SelectedProduct обычно используется для отображения на экране информации о текущих выбранных данных в действиях, которые обычно идут между сканированием товара и его занесением в документ: ввод количества, редактирование дополнительных полей и т.п.
Например, выражение
{SelectedProduct.ОтображаемоеИмя} {SelectedProduct.КолвоВДокументе:Сканировано (0) }{SelectedProduct.Packing.Name}
заданное в шапке ввода количества будет отображать имя, количество и упаковку отсканированного товара для которого собственно пользователю и предлагает ввести количество.
Основные поля
| Имя свойства объекта | Описание | Примеры |
| Product | Позиция номенклатуры (товар) которая была выбрана. | SelectedProduct.Product |
| Packing | Упаковка товара в которой исчисляется выбранный товар. | SelectedProduct.Packing |
| Quantity | Введенное количество в заданном типа упаковки. | SelectedProduct.Quantity |
| QuantityInBasePacking | Введенное количество в базовых упаковках. | SelectedProduct.QuantityInBasePacking |
| RegistrationDate | Дата регистрации. | SelectedProduct.RegistrationDate |
| ExpiredDate | Дата срока годности. | SelectedProduct.ExpiredDate |
| Дополнительные поля строки | Дополнительные поля строки могут быть заведены в каждом типе документа. | SelectedProduct.ОтображаемоеИмя SelectedProduct.КолвоВДокументе SelectedProduct.sn SelectedProduct.ЦенаСклад |
Объекты «FirstStorage и SecondStorage»
Встроенный функционал Mobile SMARTS позволяет по‑умолчанию оперировать тремя объектами хранения товара:
-
FirstStorage — 1 место хранения (источник)
-
SecondStorage — 2 место хранения (приемник)
Эти объекты могут содержать либо ячейку, либо контейнер (палету) в зависимости от того, каким действием переменная была заполнена.
-
SSCCPallet — может содержать только контейнер (палету).
Кем заполняется
Обычно заполняются при выборе ячейки действиями действие «Выбор ячейки» или «Выбор палеты». Соответственно, в зависимости от того, кто заполнял переменную, она будет содержать объект либо описывающий ячейку, либо выбранный контейнер.
Как используется
Используется действиями прямой записи в документ и записи в буфер при занесении строки в документ (см. SelectedProduct).
При занесении в документ значения штрихкода из этих объектов попадут в соответствующие поля строки.
FirstStorage.Barcode ---> поле строки FirstStorageBarcode
SecondStorage.Barcode ---> поле строки SecondStorageBarcode
SSCCPallet . Barcode ---> поле строки SSCC
Таким образом, встроенный функционал позволяет оперировать тремя местами хранения источник, приемник (обычно ячейки) и sscc (палета).
Конечно, если такая потребность возникает можно и увеличить число мест хранения в строке, с помощью дополнительных полей. Но всю логику работы с дополнительным полем придется реализовывать самостоятельно.
Следует обратить внимание, что значения ячеек и контейнеров НЕ попадают в объект SelectedProduct, а хранятся отдельно в сессии. Это сделано для того, чтобы можно было без проблем организовать любые схемы выбора объектов хранения: как до сканирования това ра, так и после.
Основные поля
| Имя свойства объекта | Описание | Примеры |
| Barcode | Штрихкод ячейки или палеты. Поле и для ячейки и для палеты. | FirstStorage.Barcode SecondStorage.Barcode |
| Name | Имя. Доступно только для ячейки, у палеты имя отсутствует и она определяется только значением своего штрихкода. | FirstStorage.Name SecondStorage.Name |