Типы в Mobile SMARTS
BarcodeData
Тип, который используется для получения информации о штрихкоде/сканировании.
С помощью данного типа можно проверить совместимость штрихкода с форматом GS1, получить набор идентификаторов применения по штрихкоду, а также, при сканировании камерой, получить изображение штрихкода.
Свойства типа
| Свойство | Описание |
| string BarcodeCleared | Очищенный от различных контрольных символов RAW штрихкод |
| string BarcodeGS1Cleared | Очищенный от различных контрольных символов GS1 штрихкод |
| string BarcodeGS1Formatted | Отформатированный GS1 штрихкод в формате «со скобками» |
| string BarcodeGS1Printable | Корректный правильный GS1 штрихкод, пригодный для печати, с символами-разделителями групп |
| IPicture BarcodePicture | Полное изображение отсканированного ШК* |
| IPicture BarcodePictureWithBorder | Изображение отсканированного ШК с рамкой вокруг ШК* |
| string BarcodeRaw | Исходный поток данных ШК, с контрольными символами и т. д. |
| string BarcodeRawEx | Исходный поток данных ШК, с контрольными символами и т. д. Еще более сырой, чем BarcodeRaw* |
| string BeerShortMark | Код идентификации пивной и слабоалкогольной продукции по стандартам Честного знака |
| string BeerShortMarkFormatted | Код идентификации пивной и слабоалкогольной продукции в формате «со скобками» |
| string BikeShortMark | Код идентификации товарной группы «Велосипеды» по стандартам Честного знака |
| string BikeShortMarkFormatted | Код идентификации товарной группы «Велосипеды» в формате «со скобками» |
| IPicture CropedBarcodePicture | Изображение ШК, обрезанное по рамке вокруг ШК* |
| string DrugsShortMark | Код идентификации товарной группы «Лекарства» по стандартам Честного знака |
| string DrugsShortMarkFormatted | Код идентификации товарной группы «Лекарства» в формате «со скобками» |
| string EAN13 | EAN13 из отсканированного ШК |
| string EAN8 | EAN8 из отсканированного ШК |
| string ErrorGS1Compatible | Ошибка после проверки совместимости ШК с форматом GS1 |
| string FashionShortMark | Код идентификации товаров легкой промышленности по стандартам Честного знака |
| string FashionShortMarkFormatted | Код идентификации товаров легкой промышленности в формате «со скобками» |
| Ean128 GS1 | Объект GS1, содержащий подробную информацию об используемых идентификаторах применения |
| string GTIN | GTIN в том виде, в котором он может быть получен из ШК |
| string GTINBase | GTIN с лидирующим символом 0 |
| bool Hardware | Означает, был ли создан объект сканированием или программно |
| bool IsAlcoMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки алкогольной продукции |
| bool IsBeerMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки пивной и слабоалкогольной продукции по стандартам Честного знака |
| bool IsBikeMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товарной группы «Велосипеды» по стандартам Честного знака |
| bool IsDrugsMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товарной группы «Лекарства» по стандартам Честного знака |
| bool IsFashionMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товаров легкой промышленности по стандартам Честного знака |
| bool IsGS1Compatible | Удалось ли разложить ШК на группы идентификаторов применения по стандарту GS1 |
| bool IsGTINCompatible | Удалось ли найти GTIN в отсканированном ШК |
| bool IsMark | Проверяет совместимость отсканированного штрихкода с каждым из форматов кода маркировки |
| bool IsMilkMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки молочной продукции по стандартам Честного знака |
| bool IsPerfumeryMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки духов и туалетной воды по стандартам Честного знака |
| bool IsPhotoMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки фотоаппаратов и ламп-вспышек по стандартам Честного знака |
| bool IsShoesMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товарной группы «Обувь» по стандартам Честного знака |
| bool IsTiresMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки шин по стандартам Честного знака. |
| bool IsTobaccoBox | Проверяет совместимость отсканированного ШК с форматом кода маркировки блока табачной продукции по стандартам Честного знака |
| bool IsTobaccoMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки блока или пачки табачной продукции по стандартам Честного знака |
| bool IsTobaccoPack | Проверяет совместимость отсканированного ШК с форматом кода маркировки пачки табачной продукции по стандартам Честного знака |
| bool IsWaterMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товарной группы «Упакованная вода» по стандартам Честного знака |
| bool IsWheelChairMark | Проверяет совместимость отсканированного ШК с форматом кода маркировки товарной группы «Кресла-коляски» по стандартам Честного знака |
| string MilkShortMark | Код идентификации молочной продукции по стандартам Честного знака |
| string MilkShortMarkFormatted | Код идентификации молочной продукции в формате «со скобками» |
| string PerfumeryShortMark | Код идентификации духов и туалетной воды по стандартам Честного знака |
| string PerfumeryShortMarkFormatted | Код идентификации духов и туалетной воды в формате «со скобками» |
| string PhotoShortMark | Код идентификации фотоаппаратов и ламп-вспышек по стандартам Честного знака |
| string PhotoShortMarkFormatted | Код идентификации фотоаппаратов и ламп-вспышек в формате «со скобками» |
| string ScannedBarcodeCompatible | Возвращает штрихкод в том виде, в котором он раньше всегда попадал в переменную сессии ScanedBarcode |
| string ShoesShortMark | Код идентификации товарной группы «Обувь» по стандартам Честного знака |
| string ShoesShortMarkFormatted | Код идентификации товарной группы «Обувь» в формате «со скобками» |
| string ShortMark | Код идентификации любой из групп по стандартам Честного знака |
| string ShortMarkFormatted | Код идентификации любой из групп в формате «со скобками» |
| string StrBarcodeType | Тип штрихкода, распознанный сканером. Если сканер не распознал или не умеет этого, то UNKNOWN_TYPE. |
| string TiresShortMark | Код идентификации шин по стандартам Честного знака |
| string TiresShortMarkFormatted | Код идентификации шин в формате «со скобками» |
| string TobaccoBoxShortMark | Код идентификации блока табачной продукции по стандартам Честного знака |
| string TobaccoBoxShortMarkFormatted | Код идентификации блока табачной продукции в формате «со скобками» |
| string TobaccoPackShortMark | Код идентификации пачки табачной продукции по стандартам Честного знака |
| string TobaccoPackShortMarkFormatted | Код идентификации пачки т абачной продукции в формате «со скобками» |
| string TobaccoShortMark | Код идентификации блока или пачки табачной продукции по стандартам Честного знака |
| string TobaccoShortMarkFormatted | Код идентификации блока или пачки табачной продукции в формате «со скобками» |
| string UPCA | Штрихкод UPC-A, если он таковым является |
| string WaterShortMark | Код идентификации товарной группы «Упакованная вода» по стандартам Честного знака |
| string WaterShortMarkFormatted | Код идентификации товарной группы «Упакованная вода» в формате «со скобками» |
| string WheelChairShortMark | Код идентификации товарной группы «Кресла-коляски» по стандартам Честного знака |
| string WheelChairShortMarkFormatted | Код идентификации товарной группы «Кресла-коляски» в формате «со скобками» |
| string WiFiPass | Пароль для подключения к Wi-Fi ** |
| string WiFiSSID | Название сети для подключения к Wi-Fi ** |
| string WiFiType | Тип шифрования для подключения к Wi-Fi ** |
\* при сканировании камерой устройства на OC Android
\\ при сканировании устройством на OC Android
Всю основную информ ацию о штрихкоде можно получить с помощью свойств данного типа, однако, если содержимое сформировано и успешно распознано с использованием идентификаторов применения GS1 может возникнуть потребность обращаться к данным через коды идентификаторов применения. Это возможно сделать с помощью методов свойства GS1.
Методы свойства GS1
| Метод | Описание |
| bool Contains (ai) | Проверяет наличие идентификатора применения среди групп разобранного ШК |
| IEnumerable GetEntries () | Получает перечисление групп идентификаторов применения вместе со значениями |
| object GetObjectValue (ai) | Возвращает значение по переданному идентификатору применения из разобранного ШК |
| string GetStringValue (ai) | Возвращает строковое значение по переданному идентификатору применения из разобранного ШК |
| string GetValue (ai) | Возвращает строковое значение по переданному идентификатору применения из разоб ранного ШК |
Примеры использования
Задача: Получить всю доступную информацию по данным штрихкода.
Решение:
Report viev.Report blocks[0]
<div>
<p class="__helper_text" style="padding-top: 8dp;">Barcode type</p>
<p>{BarcodeData.StrBarcodeType}</p>
<p class="__helper_text" style="padding-top: 8dp;">Raw barcode</p>
<p>{BarcodeData.BarcodeRawEx.Replace (GS, «<blue>{CDATA («<GS>»)}</blue>»).Replace (FNC, «<red>{CDATA («<FNC1>»)}</red>»)}</p>
{BarcodeData.IsGS1Compatible:<div>
<p class="__helper_text" style="padding-top: 8dp;">Human-readable interpretation</p>
<p>{BarcodeData.BarcodeGS1Formatted}</p>
</div>;}
{BarcodeData.IsMark:<div>
<p class="__helper_text" style="padding-top: 8dp;">Track & Trace identification code</p>
<p>{BarcodeData.ShortMarkFormatted}</p>
</div>;}
{BarcodeData.IsGS1Compatible:<div>
<p class="__helper_text" style="padding-top: 8dp;">Application identifiers</p>
</div>;}
</div>
Report viev.Report blocks[1]
Report viev.Report blocks[2]
<div style="padding-bottom: 100dp;">
{BarcodeData.CropedBarcodePicture != null:<div>
<p class="__helper_text» style="padding-top: 8dp;">Picture</p>
<img size="stretch">{BarcodeData.CropedBarcodePicture}</img>
</div>;}
</div>
Рассмотрим пример подробнее:
-
В первом блоке отчета выводим на экран
-
Тип отсканированного штрихкода
-
Сырые данные штрихкода в виде «как есть»
-
Приведенные к человекочитаемому формату данные\*
-
Код идентификации для системы прослеживаемости товаров\*
-
З аголовок для списка идентификаторов применения*
\* для случаев, когда такая возможность есть
-
Во втором блоке выводим список идентификаторов
-
В третьем блоке выводим изображение отсканированного ШК*
\* при сканировании камерой
Список типов кодировок
| AustraliaPost | EAN8 | PosiCode |
| Aztec | GRIDMATRIX | Postals |
| BooklandEAN | GS1_128 | Postnet |
| BPO | GS1_DATABAR | QR |
| CanadaPost | GS1_DATABAR_Expanded | RSS |
| ChinaPost | GS1_DATABAR_Limited | RSS14 |
| Codabar | GS1_DATABAR_OMNIDIRECTIONAL | RSSExpanded |
| Codablock | GS1_Databar14 | RSSLimited |
| Code11 | GS1_DATAMATRIX | Straight2of5 |
| Code128 | GS1_QR | Straight2of5_IATA |
| Code128Emultion | HANXIN | Straight2of5_Industrial |
| Code16k | HK25 | Telepen |
| Code32 | IDTag | TLC39 |
| Code32_PARAF | Interleaved2of5 | TriopticCode39 |
| Code39 | ISBT128 | UKPostal |
| Code49 | JapanPost | UNKNOWN_TYPE |
| Code93 | KoreanPost | UPCA |
| Composite_CCAB | Matrix2of5 | UPCA_2Supps |
| Composite_CCC | MaxiCode | UPCA_5Supps |
| Composite_TLC39 | MESA | UPCE0 |
| CompositeCode | MicroPDF | UPCE0_2Supps |
| CouponCode | MicroQR | UPCE0_5Supps |
| DataMatrix | MSI | UPCE1 |
| Discrete2of5 | Mx25 | UPCE1_2Supps |
| DOTCODE | NEC2OF5 | UPCE1_5Supps |
| DutchPost | NetherlandKIX | UPUFICS |
| EAN128 | OCR | US_Postal1 |
| EAN13 | PDF417 | US_Postnet |
| EAN13_2Supps | Planet | USPlanet |
| EAN13_5Supps | Plessey | USPSS4CB |
GO
GO является универсальным типом, который содержит в себе различные полезные методы. С помощью него можно выводить всплывающие сообщения, воспроизводить звуки, разбирать штрихкоды и др.
Методы
| Метод | Описание |
| void Copy (data) | Копирует текст в буфер обмена* data — строка для копирования |
| string CreateUid () | Генерирует уникальный строковый GUID |
| string DecryptForDevice (value) | Расшифровывает строку, зашифрованную на этом устройстве value — строка для дешифрования |
| string EncryptForDevice (value) | Зашифровывает строку. Расшифровать можно только на этом устройстве value — строка для шифрования |
| string DecryptForUser (value) | Расшифровывает строку, зашифрованную под текущим пользователем value — строка для дешифрования |
| string EncryptForUser (value) | Зашифровать строку с возможностью расшифровки только под текущим пользователем value — строка для шифрования |
| BarcodeData GetBarcodeData (barcode) | Возвращает объект для расширенной работы со штрихкодом barcode — строка, содержащая штрихкод |
| BarcodeData GetBarcodeData (barcode, type) | Возвращает объект для расширенной работы со штрихкодом barcode — строка, содержащая штрихкод type — тип штрихкода из списка |
| void HideWaitMessage () | Закрыть сообщение об ожидании |
| string NormalizePhoneNumber (phoneNumber) | Преобразовывает номер телефона в вариант с +7 вместо 8, вырезает лишние символы phoneNumber — номер для нормализации |
| void OpenUrl (url) | Открыть URL в браузере |
| void Play (audio) | Воспроизводит звуковой файл audio — путь к файлу |
| void Play (audio, vibrate) | Воспроизводит звуковой файл audio — путь к файлу vibrate — настройка вибрации |
| void PlayError () | Воспроизводит звук ошибки. |
| bool SendEmail (email, subject, text) | Отправляет письмо на указан ную почту * email — адрес получателя subject — заголовок письма text — текст письма |
| bool SendEmail (email, subject, text, errors) | Отправляет письмо на указанную почту * email — адрес получателя subject — заголовок письма text — текст письма errors — прикрепить к письму логи с устройства |
| void SendErrorsLog () | Отправка логов на сервер качества* |
| void Share (data) | Поделиться содержимым\* data — путь к файлу или текст |
| void ShowBaloon (text, delay, down) | Вызывает всплывающее сообщение с указанным текстом text — текст сообщения delay — время отображения в мс down — выводить в нижней части окна * |
| void ShowErrorBaloon (text, delay, down) | Вызывает всплывающее сообщение об ошибке с указанным текстом. text — текст сообщения delay — время отображения в мс down — выводить в нижней части окна * |
| void ShowWaitMessage (text) | Показывает сообщение об ожидании поверх интерфейса text — отображаемое сообщение. Поддерживает верстку |
| void ShowWaitMessage (text, canCancel) | Показывает сообщение об ожидании поверх интерфейса с настройкой возможности скрыть его по нажатию text — отображаемое сообщение. Поддерживает верстку canCancel — можно ли скрыть сообщение нажатием |
| void Sleep (ms) | Делает паузу в процессах на указанное кол-во мс ms — длительность паузы в миллисекундах |
| v oid Speak (text) | Произносит указанный текст* text — фраза для воспроизведения |
| void SpeakRubles (value) | Произносит указанную сумму с рублями и копейками\* value — число для воспроизведения |
| void WriteError (text) | Заносит в лог сообщение с типом ошибка text — текст сообщения |
| void WriteInformation (text) | Заносит в лог сообщение с типом информация text — текст сообщения |
| void WriteWarning (text) | Заносит в лог сообщение с типом предупреждение text — текст сообщения |
| void WriteLog (text, logType) | Заносит в лог сообщение с указанным типом text — текст сообщения logType — тип записи в лог (info, warn, error, debug) |
\* работает только на Android-устройствах
Примеры использования
Задача 1: Добавить возможность по сканированию определить, содержит ли штрихкод GTIN.
Решение:
Разберем пример подробнее:
-
В действии с именем метки «on scan» с помощью объекта типа BarcodeData проверяем, содержит ли отсканированный штрихкод в своем составе GTIN.
-
В действии с именем метки «gs1» выводим всплывающее сообщение в нижней части экрана с информацией о GTIN’e
-
В действии с именем метки «non gs1» выводим всплывающее сообщение об ошибке в нижней части экрана
Задача 2: В полях строк документа есть поле «Barcode», содержащее в себе штрихкод. Необходимо проверить, что в документе нет строк, в которых штрихкод не содержит GTIN.
Решение:
Разберем пример подробнее:
- В структуру полей документа добавляем вычислимое поле с именем «BarcodeData».
- В шаблоне данного поля прописываем метод получения объекта типа BarcodeData.
- В действии с именем метки «show» выводим поп-ап, с уведомлением о том, что началась проверка строк документа. Так как строк может быть много проверка может занять некоторое время.
- Далее в цикле в действии с именем метки «check line» проверяем, содержит ли штрихкод в своем составе GTIN. Если содержит, переходим к следующему элементу.
- В действии с именем метки «error»
- Скрываем поп-ап
- Записываем ошибку в лог
- Выводим сообщение для пользователя ТСД.
- Воспроизводим звук ошибки
- Производим возврат документа
- Действие с именем «hide» выполняется если проверка документа выполнена без ошибок.
Список типов кодировок
| AustraliaPost | EAN8 | PosiCode |
| Aztec | GRIDMATRIX | Postals |
| BooklandEAN | GS1_128 | Postnet |
| BPO | GS1_DATABAR | QR |
| CanadaPost | GS1_DATABAR_Expanded | RSS |
| ChinaPost | GS1_DATABAR_Limited | RSS14 |
| Codabar | GS1_DATABAR_OMNIDIRECTIONAL | RSSExpanded |
| Codablock | GS1_Databar14 | RSSLimited |
| Code11 | GS1_DATAMATRIX | Straight2of5 |
| Code128 | GS1_QR | Straight2of5_IATA |
| Code128Emultion | HANXIN | Straight2of5_Industrial |
| Code16k | HK25 | Telepen |
| Code32 | IDTag | TLC39 |
| Code32_PARAF | Interleaved2of5 | TriopticCode39 |
| Code39 | ISBT128 | UKPostal |
| Code49 | JapanPost | UNKNOWN_TYPE |
| Code93 | KoreanPost | UPCA |
| Composite_CCAB | Matrix2of5 | UPCA_2Supps |
| Composite_CCC | MaxiCode | UPCA_5Supps |
| Composite_TLC39 | MESA | UPCE0 |
| CompositeCode | MicroPDF | UPCE0_2Supps |
| CouponCode | MicroQR | UPCE0_5Supps |
| DataMatrix | MSI | UPCE1 |
| Discrete2of5 | Mx25 | UPCE1_2Supps |
| DOTCODE | NEC2OF5 | UPCE1_5Supps |
| DutchPost | NetherlandKIX | UPUFICS |
| EAN128 | OCR | US_Postal1 |
| EAN13 | PDF417 | US_Postnet |
| EAN13_2Supps | Planet | USPlanet |
| EAN13_5Supps | Plessey | USPSS4CB |
MathOperations
MathOperations – тип, содержащий метод, позволяющий округлять числа до нужного количества разрядов после запятой.
Доступные методы:
| Имя метода | Описание |
| Round(val, digits, orient) | Округляет число до нужного количества разрядов после запятой |
Примеры использования
Есть 2 метода округления: до ближайшего чётного и дальше от нуля.
Например, в случае округления дальше от нуля, 3,75 округляется до 3,8, 3,85 округл яется до 3,9, -3,75 округляется до -3,8 и -3,85 округляется до -3,9. Это ещё можно назвать округлением в большую сторону.
В случае же округления до ближайшего чётного, как 3,75, так и 3,85 округляются до 3,8 и -3,75 и -3,85 округляются до -3,8.
Если хотите использовать округление до ближайшего чётного, то в качестве переменной orient нужно передавать 0, для округления дальше от нуля - 1
Код:
Число1 = MathOperations.Round(3.85,2,0);
Число2 = MathOperations.Round(3.85,2,1);
В первом случае округляем до ближайшего чётного, во втором дальше от нуля.
Результат:
| До ближайшего чётного | Дальше от нуля |
![]() | ![]() |
Server
Server — клиентский тип, с помощью которого осуществляется проверка доступности сервера MS, а также обмен служебными сообщениями. Данный тип недоступен в серверном контексте!
Свойства
| Свойство | Описание |
| bool Available | Указывает, доступен ли сервер или работа идет в файловом режиме. |
| bool Online | Указывает, есть ли подключение к серверу в данный момент. |
| string Url | Возвращает url сервера, если он есть. |
Методы
| Метод | Описание |
| bool CheckConnection (timeout) | Проверить соединение с сервером. timeout— время ожидания ответа. |
| string SendMessage (text, to, isError, ttl) | Отправляет сообщение. text — текст сообщения to — ID пользователя или группы isError — отобразить как ошибку ttl— время жизни сообщения в секундах |
| string SendSystemMessage (text, isError, ttl) | Отправляет системное сообщение. text— текст сообщения isError— отобразить как ошибку ttl — время жизни сообщения в секундах |
Пример использования
Задача: сделать так, чтобы любой пользователь ТСД мог отправить администратору уведомление о проблеме.
Решение:
Рассмотрим пример подробнее:
- В действии с именем метки «check» проверяем, что база развернута в серверном режиме.
- В действии с именем метки «input» вводим текст сообщения, выбираем пользователя, указываем, отобразить сообщение как ошибку или нет.
- В действии с именем метки «send» производится отправка сообщения на сервер, с которого сообщение будет доставлено пользователю.
StringOperations
StringOperations – тип, содержащий методы, позволяющие работать со строками (обрезать, разбивать, форматировать и т.д.).
Доступные методы:
| Имя метода | Описание |
| FillToWidth(s1, s2, totalWidth, c) | Объединяет две строки с разделителем между ними, дополняя итоговую строку до нужной длины |
| FromBase64(valueBase64) | Конвертирует строку из Base64 в обычную форму |
| Join(source, c) | Объединяет коллекцию строк, добавляя разделитель между ними |
| PadCenter(s, totalWidth, c) | Дополняет строку с обеих сторон до нужной длины, если она короче |
| PadLeft(s, totalWidth, c) | Дополняет строку слева до нужной длины, если она короче |
| PadRight(s, totalWidth, c) | Дополняет строку справа до нужной длины, если она короче |
| ParseByTemplate(value, template) | Позволяет распарсить строку по шаблону |
| Split(source, oneSymbolSplitter) | Разбивает строку на коллекцию подстрок согласно односимвольному разделителю. Если передан более длинный разделитель, то используется только первый символ |
| ToBase64(str) | Конвертирует строку в Base64 строку |
| WordWrap(text, width) | Форматирует строку переносами по словам под заданную длину строки |
Примеры использования
FillToWidth
Код:
Строка = StringOperations.FillToWidth("Строка1","Строка2",17,"|");
Результат:
FromBase64
Код:
Строка = StringOperations.FromBase64("V29yZA==");
Строка «V29yZA==» расшифровывается как «Word»
Результат:
PadCenter
Код:
Строка = StringOperations.PadCenter("Текст",12,"|");
Очередность добавления символа: сначала справа, потом слева.
Результат:
PadLeft
Код:
Строка = StringOperations.PadLeft("Те кст",10,"|");
Результат:
PadRight
Код:
Строка = StringOperations.PadRight("Текст",10,"|");
Результат:
ParseByTemplate
Метод поддерживает любые шаблоны в конфигурации (regex, ячеек, номенклатуры и т.д.).
Код для регулярных выражений:
Строка = StringOperations.ParseByTemplate("4500000023GH67","45{tmp:@[0]*}{Barcode:@[\\w]+}")
Результат:


