Перейти к основному содержимому
Версия: 3.4

Основные переменные в 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