Документы Mobile SMARTS
Документ — это встроенный тип данных платформы Mobile SMARTS.
Это объект, которым оперирует сервер и клиент Mobile SMARTS. Документы используются как для хранения и передачи задания на мобильное устройство, так и для получения результатов работы и загрузки их в учётную систему.
Каждый документ имеет собственный тип, который определяет правила загрузки и обработки документа на мобильном устройстве.
Виды документов
Документы попадают на терминал разными путями. Есть три пути возникновения документов на терминале.
-
Документ выгружается из внешней системы
Документ внешней системы и документ Mobile SMARTS — это разные вещи. Работая с документом на терминале, мы не работаем напрямую с документом внешней системы.
Внешняя система формирует документ для терминала на базе собственного документа и выгружает его на сервер. Потом этот документ, по различным алгоритмам захватывается терминалом и попадает к нему на обработку. На терминале этот документ обрабатывается, согласно заданному алгоритму и по завершении возвращается на сервер. После этого учетная система может его загрузить с сервера интерпретировать данные и загрузить эти данные в определенный документ учетной системы.
-
Документ создается на ТСД
Есть задачи, когда исходного документа в учетной системе нет, например, приемка товара по факту (пришел товар, его необходимо отсканировать, а результат загрузить в новый доку мент учетной системы).
Платформа Mobile SMARTS позволяет создавать документы непосредственно на терминале (если разрешено конфигурацией, для данного типа документа). По завершению они попадут на сервер, а учетная система загрузит данные в свой документ.
Возможность создания документа на ТСД настраивается в панели управления Mobile SMARTS для каждого типа документа. Алгоритмы обработки документов созданных на ТСД и загруженных из учетной системы могут быть одинаковыми, а могут и отличаться, в зависимости от поставленных задач.
-
Виртуальный документ
«Виртуальный» означает, что никаких документов на терминале сбора данных сохраняться не будет. Виртуальный документ существует только во время выполнения процесса, при этом с сервера никаких документов не выгружается и обратно не загружается. При нажатии кнопки с названием виртуального типа документа в основном меню Mobile SMARTS на мобильном терминале мы не увидим с писка документов. Вместо этого автоматически создастся новый документ соответствующего типа, и на экране терминала мы увидим первое окно в программе обработки документов этого типа.
Типы и структура документов
Каждый документ относится к определенному типу (объекты Cleverence.Warehouse.DocumentType), который и описывает правила обработки документа пользователем и системой. В качестве таких типов могут быть названы, например, операция приемки ТМЦ, операция отгрузки ТМЦ, операция внутреннего перемещения и т.д.
Имя типа документа является его внутренним наименованием, по которому система его идентифицирует. Именно это имя используется везде, где надо определить конкретный тип документа, например, при выгрузке конкретного документа, чтобы указать к какому типу он относится.
Имя типа документа должно быть уникальным.
Отображаемое имя – имя типа документа, которое отображается в типах документов панели управления и в главном меню клиента Mobile SMARTS на терминале.
![]() | ![]() |
Имя типа и отображаемое имя могут отличаться, хотя могут и быть заданы одинаковыми.
Таким образом, для функционирования системы разработчик должен описать возможные типы документов и правила их обработки.
Каждый тип документа содержит:
| Поле | Описание |
| Алгоритм | Дерево действий, задающих точную последовательность обработки документов данного типа на т ерминале сбора данных. |
| Основные поля шапки | Набор основных полей шапки документа. |
| Основные поля строки | Набор основных полей для строк документа. |
| Дополнительные поля шапки | Набор дополнительных полей шапки документа. Например, для документов проверки состояния транспортного средства в шапку можно добавить номер пломбы. |
| Дополнительные поля строки | Набор дополнительных колонок в табличных частях документа. Указанные данные будут присутствовать в каждой строке документа. Например, это могут быть «Цвет», «Размер», «Цена» и т.д. |
| Дополнительные табличные части | Произвольное число дополнительных табличных частей с произвольно заданными колонками. Например это могут быть таблицы поиска чего-нибудь или локальные справочники документа. |
| Ошибки | Список ошибок, которые могут возникнуть при выполнении документов данного типа и быть прикрепленными к такому документу. Например, ошибка «Ячейка занята» для документов типа «Размещение». |
| Строки подвала | Список строк, выводимых в нижней части окна ТСД при обработке документов данного типа (по аналогии со строкой состояния в офисных приложениях). |
Части документа
Основной единицей любой складской операции в системе Mobile SMARTS служит документ (объект Cleverence.Warehouse.Document при выгрузке из учетной системы).
Каждый документ состоит из шести частей:
| Наименование | Описание | Подробнее |
| Шапка документа | Содержит общую информацию о документе, такую как его тип, имя, текстовое описание документа, кому назначен, штрихкод, дата создания документа, кто выполнял и т. д. | Подробнее >>> |
Декларативная табличная часть документа {Document.DeclaredItems} | Содержит строки с информацией о товаре, его количестве, ячейке размещения и т.д. По сути, описывает задание для выполнения. Эта коллекция строк обычно заполняется в учетной системе при выгрузке документа. | Подробнее >>> |
Реальная табличная часть документа {Document.CurrentItems} | Фактическая табличная часть документа. В нее заносятся реально отсканированные данные. При заполнении фактической части система производит сверку и сопоставление данных со строками в декларативной (плановой) части документа. При выгрузке документа из учетной системы CurrentItems в большинстве случаев остается незаполненной. | |
| Дополнительные табличные части | Кроме общих дополнительных таблиц существуют локальные таблицы документов. Такие таблицы встроены прямо в документ и доступны только ему. Возможности работы с такими таблицами точно такие же, как и с общими. | Подробнее >>> |
| Коллекция ошибок | Коллекция логических ошибок работы самого процесса. | |
Коллекция привязок признаков {Document.ClassificatorUsings} | Флажки, проставленные различным объектам в процессе работы пользователя с документом. В качестве таких объектов могут выступать ячейки, палеты, товары и сам документ. Эти флажки будут содержаться в документе и не имеют отношения к полям самих объектов, т.е. простановка этих флажков не влияет на объекты, которым они проставлены. В качестве флажков могут выступать «тип брака», «занято» и т.д. Указанные в документе флажки используются кодом загрузки документа в учетную систему для исполнения той или иной складской логики, связанной с ними. |
Поля шапки документа
Шапка документа содержит общую информацию о документе.
Основные поля шапки
| Поле [русский синоним] | Заполнение | Описание |
| Id [Ид] | Обязательно при выгрузке | Идентификатор документа. Обязательно заполняется при выгрузке документа и должен иметь уникальное значение. |
| Name [Имя] | Обязательно при выгрузке | Отображаемое имя документа. Обязательно заполняется при выгрузке документа. |
| Appointment [Назначение] | Может не заполняться | Назначение документа — код пользователя или имя группы, которым данный документ назначается на исполнение. Если значение пустое, то документ попадает к первому свободному пользователю, которому разрешен тип документа. |
| UserId [ИдПользователя] | В процессе захвата документа | Идентификатор пользователя, который выполнил документ. Должен иметь уникальное значение для каждого пользователя. Еcли ID пользователя в документе и на ТСД не совпадает, то документ на ТСД не отобразится. |
| DocumentTypeName [ИмяТипаДокумента] | Обязательно при выгрузке | Имя типа документа. Обязательно заполняется при выгрузке документа и должно иметь уникальное значение. |
| Modified [Изменен] | В процессе работы на ТСД | Признак того, что документ был и зменен. Заполняется при изменении документа одним из пользователей. |
| InProcess [ВОбработке] | В процессе работы на ТСД | Признак того, что документ захвачен пользователем на обработку. Заполняется, когда документ был захвачен пользователем. |
| Finished [Завершен] | В процессе работы на ТСД | Признак того, что обработка документа пользователем была завершена, и его можно забирать назад в учетную систему. Заполняется, когда работа с документом была завершена на терминале. |
| WarehouseId [ИдСклада] | Обязательно при выгрузке | Идентификатор склада, к которому привязан документ. Должен иметь уникальное значение для каждого склада. |
| Barcode [Штрихкод] | Может не заполняться | Штрихкод документа. Для выбора документа по штрихкоду на терминале или на сервере должен быть обязательно заполнен. |
| Priority [Приоритет] | Может не заполняться | Приоритет документа. Более приоритетные документы раньше отдаются на терминал для обработки. |
| DistributeByBarcode [ВыдаватьПоШтрихкоду] | Может не заполняться | Признак выдачи документа по штрихкоду. Докумен ты с таким признаком не поступают на мобильный терминал автоматически, а могут быть выбраны с сервера только по штрихкоду. Свойство может успешно применяться только при наличии постоянной связи с сервером. |
Кроме полей указанных в таблице, в шапке документа могут быть и другие поля: текстовое описание документа, дата создания документа и т. д.
Значения полей в шапке документа могут быть изменены в любой момент.
Данные полей можно посмотреть в панели управления в закладке «Документы».
Дополнительные поля
Кроме основных полей могут выгружаться и дополнительные поля шапки, если такие имеются. Например, КонтрольКолва, ПоЯчейкам, Contractor, Currency и т.д.
Такие поля, также как и основные, могут быть заполнены при выгрузке (заполнены частично). Заполнение этих полей может происходить в процессе работы на терминале. Если в поле указывается шаблон для вычислимой колонки, значение такой колонки для объекта не проставляется пользователем и не выгружается из вне. При каждом запросе он а вычисляется согласно шаблону.
Добавить дополнительные поля шапки документа можно в панели управления. В конфигурации раскройте узел, соответствующий нужному типу документа, правой кнопкой мыши нажмите на «дополнительные поля шапки» и нажмите кнопку «Добавить поле».
Теперь введите имя поля, выберите его тип и при необходимости введите шаблон (для вычислимой колонки).
Табличные части документа
У документа Mobile SMARTS всегда как минимум две табличные части (основные). Это декларативная (заявленнная) и фактическая (реальная) табличные части.
В алгоритмах конкретных действий все сводится к работе с этими таблицами. Каждая табличная часть это набор стандартных и дополнительных полей.
Декларативная часть (DeclaredItems) содержит строки с информацией о, ожидаемом товаре, его ожидаемом количестве, ячейке размещения и т.д. По сути, описывает задание для выполнения. Эта коллекция строк обычно заполняется в учетной системе при выгрузке документа.
Фактическая часть (CurrentItems) сохраняет именно факт, что было сканировано, код товара, конкретный тип упаковки, ячейку, серийные номера, цвет и т. д. Фактическая часть используется в процессах, чтобы заносить максимально полные данные по товару, который был отсканирован. По мере сканирования товара в мобильном клиенте, в нее будут заноситься строки записей обо всех выполненных операциях. Заполняются только те колонки, содержимое которых было получено из штрихкода или введено вручную пользователем. При выгрузке документа из учетной системы фактическая часть (CurrentItems) в большинстве случаев остается незаполненной, и заполняется уже по ходу выполнения операции на ТСД.
В обеих табличных частях есть по два количества – плановое и фактическое. Плановое количество (DeclaredQuantity) в декларативной части задает ожидаемое количество товара по операции. Фактическое количество (CurrentQuantity) в декларативной части заполняется уже по мере работы с документом на мобильном терминале, отражая реальное количество обработанного товара, соответствующее той или иной строке декларативной части. Фактическое количество в декларативной части удобно использовать при загрузке документа назад, в учетную систему, т.к. оно выражено в тех же единицах, в которых выгружалось.
Плановое количество в реальной части показывает, сколько товара из принятого по данной строке фактической части было запланировано. Например, если в декларативной части предусматривалось 10 единиц товара, а на деле принято 25 двумя партиями в 8 и 17 штук (две строки), то выглядеть это будет так:
| Декларативная часть | ||
| товар | Плановое кол-во | Фактическое кол-во |
| ТОВАР №1 | 10 | 25 |
| Фактическая часть | ||
| товар | Плановое кол-во | Фактическое кол-во |
| ТОВАР №1, 1я партия | 8 | 8 |
| ТОВАР №1, 2я партия | 2 | 17 |
Наличие двух таких табличных частей дает необходимую гибкость для настройки процесса.
Структура данных у обоих табличных частей одинаковая, а смысл немного разный.
Например, мы выгрузили из учетной системы задание, нам необходимо принять 15 коробок товара. Пользователь, выполняя это задание, заносит данные.
В декларативной части в колонках количество и упаковка может стоять 15 коробок (1 строка).
В фактической части в колонках количество и упаковка будут 1 ящик (по 10 коробок) и 5 отдельных коробок (2 разные строки с разными единицами измерения). При занесение этих данных в декларативную часть произойдет пересчет упаковки (ящики пересчитаются в коробки) в заявленные единицы измерения товара.
Таблица стандартных полей:
| Наименование поля англ. [рус] | Описание |
| ProductId [ИдТовара] | Идентификатор товара для которого описана данная позиция |
| DeclaredQuantity [КоличествоПлан] | Плановое количество в позиции. Свойство заполняется при выгрузке документа из учетной системы, чтобы ограничить объем товара данного типа, с котором оперирует пользователь в документе. |
| CurrentQuantity [КоличествоФакт] | Фактическое количество товара в позиции. Показывает какое реальное количество товара задействовано пользователем. |
| FirstStorageBarcode [ШтрихкодПервогоМеста] | Штрихкод первого места хранения к которой привязан товар. В качестве места может выступать ячейка или палета. |
| Packing [Упаковка] | Возвращает упаковку в строке. До обращения к этому свойству товары должны быть загружены с использованием функции StorageConnector.GetProducts [ПолучитьСправочникТоваров](). |
| SSCC [КодЕдиницыХранения] | Serial shipping container code - уникальный номер единицы хранения. Служит для идентификации конкретных экземпляров товара. Заполняется из штрихкода товара по шаблону при выполнении операции. |
| ExpiredDate [СрокГодности] | Срок годности товара. Инициализируется при занесении конкретного товара в позицию документа пользователем либо из штрихкода по шаблону, либо ручным выбором. |
| SecondStorageBarcode [Штр ихкодВторогоМеста] | Штрихкод второго места хранения к которой привязан товар. В качестве места может выступать ячейка или палета. |
| BindedLine [СвязаннаяСтрока] | Задает связь строки из CurrentItems [СтрокиФакт] со строкой в DeclaredItems [СтрокиПлан]. |
Заполнение табличных частей документа
Механизм заполнения табличных частей документа в Mobile SMARTS очень сложный и сводится к выполнению встроенного обобщенного алгоритма. Задача этого алгоритма в том, чтобы правильно занести некие разрозненные данные, которые были собраны на ТСД (введены пользователем, выделены из штрихкодов, вынуты из учетной системы и т.п.) сразу в обе табличные части документа (и декларативную, и фактическую).Делается это для того, чтобы всегда иметь на ТСД непротиворечивый документ, содержимое табличных частей которого было бы удобно как для просмотра хода выполнения задания, так и для загрузки результатов в учетную систему.
В требованиях к реальным складским операциям всегда можно встретить следующие вещи: «если такой товар уже сканировался – прибавить введенное количество к существующей строке документа», «пересчитать количество из коробок в штуки», «найти строку задания с такой же ячейкой и таким же товаром и занести туда реально отсканированное количество» и т.п. Механизм заполнения табличных частей документа в Mobile SMARTS позволяет решить все подобные задачи без написания специального алгоритма, путем простой настройки свойств действия «Занесение в документ».
Занесение в табличные части
В простой ситуации, например, необходимо набрать «Мыло душистое» 4 коробки, без учета дополнительных колонок (ячейки, партии и т.д.). В зависимости от выполненных настроек и варианте сканирования (по одной коробке или введя сразу все) заполнение будет происходить по разному. В фактической части может быть заполнена одна строка (слито в одну строку) или несколько отдельных.
Если в настройках указано Нет у параметра «Сливать одинаковые строки» и происходит сканирование по 1 коробке 4 раза, то в фактической части будет 4 строки с плановым количеством 0 (ноль), с фактическим количеством 1 и упаковкой коробка. При каждом сканировании будет добавляться новая строка.
| Фактическая часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | кор | 0 | 1 |
| Товар 1 | кор | 0 | 1 |
| Товар 1 | кор | 0 | 1 |
| Товар 1 | кор | 0 | 1 |
При заполнении заявленной части, количество может быть суммировано (в зависимости от настроек), в одну строку будут добавляться количество(факт).
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | кор | 4 | 4 |
Если в настройках фактической части указано Да у параметра «Сливать одинаковые строки» и в списке колонок по слиянию, например, указан код товара, то при сканирование одинакового товара по 1 коробке 4 раза строки будут сливаться и будет 1 строка с фактическим количеством 4 и упаковкой коробка.
| Фактическая часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | кор | 4 | 4 |
Возможен набор товара с введением вручную сразу нужного количества, тогда будет 1 строка с фактическим и заявленным количеством 4 и упаковкой коробка.
Еще вариант когда отсканирован ящик (4 коробки), будет 1 строка с количеством 1 и упаковкой ящик.
| Фактическая часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | ящ | 0 | 1 |
При заполнении заявленной части ящик будет пересчитан в коробки.
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | кор | 4 | 4 |
При более сложных вариантах (с учетом дополнительных колонок ячеек, партий и т.д.), алгоритм заполнения строк учитывает их.
В случае, если у номенклатуры указана характеристика, то при занесении в фактическую часть документа для номенклатуры с характеристикой будет создана новая строка с плановым количеством 0 (ноль).
| Фактическая часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | шт | 3 | 2 |
| Товар 1 | шт | 0 | 1 |
При занесении в таблицу заявленной части, если в списке колонок по сличению указан только код товара, то эти строки будут слиты в одну строку, т.к. все другие параметры для сличения не учитываются, а код у номенклатуры один и тот же. В существующую строку в колонку количество(факт) будет занесено 3.
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | шт | 3 | 3 |
В случае если в списке колонок по сличению выбрана характеристика товара (descr) для сличения, то в заявленной части будет создана новая строка с количество(план) 0 (ноль) и количество(факт) 1, т.к. характеристики у номенклатуры отличаются.
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | шт | 3 | 2 |
| Товар 1 | шт | 0 | 1 |
Слияние
Если в настройках указать, что надо сливать одинаковые строки (CurrentItems), тогда процесс занесения будет искать строки с таким товаром уже существующие в документе, и увеличивать количество в существующей записи, а не добавлять новую строку.
Строки могут суммироваться по заданным параметрам (товару, упаковкам, Ячм, партии). Причем для отбора может использоваться не один, а несколько параметров. Параметры отбора настраиваются в «Списке колонок для слияния Current (Факт) части».
Например, отбор для слияния строк происходит по наименованию товара и мест у хранения. Будут суммироваться только те строки у которых будет одинаковое наименование и Яч, для остальных будут заводиться новые строки.
В фактической части у товара с одинаковым наименованием, но взятого из разных ячеек будут разные строки.
| Фактическая часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | шт | 0 | 3 |
| Товар 1 | шт | 0 | 7 |
При внесении в заявленную часть это количество товара будет суммировано, при указании в списке колонок для поиска соответствующей плановой строки, что поиск ведется по наименованию (при необходимости пересчитано в заявленную упаковку) и занесено в одну строку и колонку фактического количества.
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Товар 1 | шт | 1 0 | 10 |
Занесение товара не указанного в заявленной части
Если товара нет в плане и настройками разрешено заносить товар, кото рый не указан в заявленной части, то в этом случае в фактической части появится новая строка (строки) при сканировании товара.
В заявленной табличной части будет добавлена новая строка с плановым количеством 0 (ноль).
Например, принять зубной порошок 15 коробок, которого нет в заявленной табличной части (нет в заказе).
После сканирования такого товара и введения количества в фактической части появится новая строка с именем «Зубной порошок», упаковкой «кор.» и количеством(факт). При поиске соответствующей плановой строки в заявленной части ничего найдено не будет и создастся новая строка с именем «Зубной порошок», упаковкой «кор.», количеством(план) 0 (ноль) и количеством(факт) 15.
Если у товара несколько упаковок существуют варианты занесения в табличную часть.
Политика ввода количества «Для каждого типа упаковки отдельно» отключена (флаг не проставлен).
![]() | ![]() |
Полити ка ввода количества «Для каждого типа упаковки отдельно» включена (флаг проставлен). В табличную часть заносится количество в одну строку с пересчетом в базовую упаковку.
![]() | ![]() |
На терминале будет указано отсканированное количество в базовой упаковке (при необходимости пересчитано), независимо в какой упаковке было выбрано и заносится в табличную часть.
![]() | ![]() |
Если документ был выгружен из учетной системы и сканируемый товар отсутствует в заявленной части при этом запрещено заносить товар, которого нет в заявке, то на экран ТСД будет выведено сообщение, что товар отсутствует в заявке.
Никакие новые строки по этому товару не будут добавлены ни в заявленную часть, ни в фактическую.
Например, в заявке указано что нужно принять 4 стула, но кроме стульев на склад привезли еще и стол. Отсканировав стулья, данные будут занесены в табличные части. Если мы попытаемся принять еще и стол, то у нас это не получится, на экран ТСД будет выведено сообщение, что стол отсутствует в заявке. В табличные части эта информация не заносится и никаких строк с новым товаром не создается.
Контроль количества
Этот параметр используется для создания процессов, когда надо контролировать соответствие товара заявке, выгруженной из учетной системы. В настройках «Проверять на наличие товара и переполнение количества по плану» нужно выставить Да и выбрать действие (сообщение), которое будет выполнено, если товара больше, чем в плане.
Например, дана заявка набрать 4 стула.
| Заявленная часть до заполнения | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Стулья | шт | 4 | 0 |
Сначала мы взяли и отсканировали 3 стула.
| Заявленная часть в момент заполнения | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Стулья | шт | 4 | 3 |
Потом попытались взять еще 2. При заполнении текущего количества в заявленной части проверяется переполнение товара по плану и если товара больше, чем в колонке Количество(план), то выбрать лишнее количество не удастся. На экран ТСД выводится сообщение, что пытаемся взять больше.
В заявленной части в колонку количество(факт) может быть занесено не больше, чем указано в колонке количество(план).
При переполнении не обязательно появится сообщение. Все зависит от того, какое действие мы указали при переполнении товара. В нашем примере, мы указали, чтобы выводилось сообщение.
Если в настройках «Проверять на наличие товара и переполнение количества по плану» выбрат ь Нет, то проверки на переполнение не будет. В этом случае можно будет выбирать количество товара больше, чем указано в колонке количество(план). Тогда в заявленную часть в колонку количество(факт) будет занесено отсканированное количество, даже если оно оказалось больше заявленного количества(план). Например, вместо 4 стульев мы отсканировали 5, в колонке количество(факт) будет 5.
| Заявленная часть | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Стулья | шт | 4 | 5 |
Удаление строк и корректировка количества в строках
В любой момент можно удалить ненужные строки документа, при этом будут автоматически выполнены все корректировки количеств.
Строки можно удалить в панели управления. Выбрав нужный документ, выберите в нем строку, которую необходимо удалить и нажмите «Удалить строку задания».
При просмотре строк (если предусмотрено конфигурацией) прямо с терминала. Выберите строку, которую необходимо удалить и нажмите del или back.
![]() | ![]() | ![]() |
Путем отрицательного ввода количества можно скорректировать количество(факт).
| Заявленная часть до корректировки | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Стулья | шт | 4 | 5 |
Если при выборе количества ввести отрицательное число, то в строке произойдет корректировка количества.
| Заявленная часть после корректировки | |||
| Товар | Упаковка | Количество(план) | Количество(факт) |
| Стулья | шт | 4 | 4 |
Пример заполнения табличных частей документа
Рассмотрим пример документа приемки, основанном на некоторой заявке на поставку из учетной системы. Вот как бы он выглядел до начала какой-либо работы на терминале:
Шапка
Тип документа: «Приемка», ID: «PO1203122-08» Имя: «ПП №ЗПН1203122/08», Штрихкод: «120312208», Назначено: «Кладовщики», Поставщик: «ООО Мойдодыр», Распространять по штрихкоду: «Да», Признаки: {«Вводить партию»}.
Декларировано ( свойство DeclaredItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):
| Товар | Упаковка | Кол-во план | Кол-во факт | Партия | Срок годности | Палета ( SSCC ) | <…и т.д.> |
| 0001; Умывальник | 061; шт. | 4 | 0 | - | - | - | |
| 4101; Мыло душистое | 060; короб | 17 | 0 | - | - | - | |
| 0010; Зубной порошок | 070; кг | 20 | 0 | - | - | - | |
| 7564; Густой гребешок | 061; шт. | 300 | 0 | - | - | - | |
| 7564; Густой гребешок | 061; шт. | 100 | 0 | - | - | - |
Реально (свойство CurrentItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):
| Товар | Упаковка | Кол-во план | Кол-во факт | Партия | Срок годности | Палета ( SSCC ) | <…и т.д.> |
| пусто |
Привязанные (свойство Errors, тип – коллекция объектов типа Error, т.е. описаний ошибок).
| Имя | ID | Комментарий | Штрихкод | Фатальная | Поля | |
| пусто |
Привязки признаков (свойство ClassificatorUsings , тип – коллекция объектов типа ClassificatorUsing , т.е. применений признака к объекту с указанным кодом)
| Код признака | Код объекта | |
| пусто |
конец
А вот как бы он выглядел после окончания приемки на терминале:
Шапка
Тип документа: «Приемка», ID: «PO1203122-08» Имя: «ПП №ЗПН1203122/08», Штрихкод: «120312208», Назначено: «Кладовщики», Поставщик: «ООО Мойдодыр», Распространять по штрихкоду: «Да», Признаки: {«Вводить партию», «Код состояния транспортного средства: ok»}, Номер ворот: «5».
Декларировано ( свойство DeclaredItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):
| Товар | Упаковка | Кол-во план | Кол-во факт | Партия | Срок годности | Палета ( SSCC ) | <…и т.д.> |
| 0001; Умывальник | 061; шт. | 4 | 0 | - | - | - | |
| 4101; Мыло душистое | 060; короб | 17 | 0 | - | - | - | |
| 0010; Зубной порошок | 070; кг | 20 | 0 | - | - | - | |
| 7564; Густой гребешок | 061; шт. | 300 | 0 | - | - | - | |
| 7564; Густой гребешок | 061; шт. | 100 | 0 | - | - | - | |
| 3370; Полотенце пушистое | 061; шт. | 0 | 50 | - | - | - |
Реально ( свойство CurrentItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):
| Товар | Упаковка | Кол-во план | Кол-во факт | Партия | Срок годности | Палета ( SSCC ) | <…и т.д.> |
| 0001; Умывальник | 061; шт. | 3 | 3 | - | - | 2000010 | |
| 4101; Мыло душистое | 060; короб | 9 | 9 | СМ121007 | 12.04.08 | 2000011 | |
| 4101; Мыло душистое | 060; короб | 8 | 9 | СМ121007 | 12.04.08 | 2000012 | |
| 4101; Мыло душистое | 060; короб | 0 | 4 | СМ121007 | 12.04.08 | 2000013 | |
| 3370; Полотенце пушистое | 061; шт. | 0 | 25 | У1415224 | - | 2000014 | |
| 3370; Полотенце пушистое | 061; шт. | 0 | 25 | Е1363462 | - | 2000017 | |
| 0010; Зубной порошок | 060; короб | 5 | 6 | 131108РР | 13.11.12 | 2000019 | |
| 7564; Густой гребешок | 061; шт. | 300 | 300 | - | - | 2000020 | |
| 7564; Густой гребешок | 061; шт. | 100 | 20 | - | - | 2000020 |
Привязанные ошибки (свойство Errors, тип – коллекция объектов типа Error, т.е. описаний ошибок
| Имя | ID | Комментарий | Штрихкод | Фатальная | Поля |
| «Поддон битый» | 101 | - | 101 | нет | Кол-во: 3 Тип: «Евро» |
Привязки признаков (свойство ClassificatorUsings , тип – коллекция объектов типа ClassificatorUsing , т.е. применений признака к объекту с указанным кодом)
| Код признака | Код объекта |
| 772; «Брак» | 2000013 (Палета) |
конец
Чтобы получить из первого документа второй, кладовщик сделал следующие вещи:
- Ввел номер ворот приемки (в шапку);
- Осмотрел внутренность транспортного средства и выбрал код состояния «ok» (в признаки документа);
- Принял 3 умывальника в палету 2000010;
- Принял по очереди 3 палеты мыла душистого все одной партии и срока годности. Две палеты по 9 коробок принял хорошего, а брак сложил в последнюю палету 2000013 и отметил на терминале, что это брак. Внес на терминале данные о той неприятности, что мыло от поставщика пришло на 3х битых евро-поддонах;
- Принял две палеты по 25 штук пушистых полотенец, которые не значились в накладной (пересорт), разных партий. В процессе испортил этикетки палет 2000015 и 2000016;
- Принял палету зубного порошка в 6 коробов по 4 килограмма в каждом (а по накладной было 20 кг, т.е. 5 коробов);
- Принял палету густых гребешков 320 штук.
На примере видно, как Mobile SMARTS работает с количествами и единицами измерения план/факт в строках документа. Для декларированных строк в колонке «план» отображается плановое количество, полученное из учетной системы. А в колонке «факт» после исполнения операции видно сколько в итоге было принято в плановых единицах измерения. Например, для пушистых полотенец, которые первоначально отсутствовали в плане, Mobile SMARTS была заведена новая строка декларированной части с плановым количеством «0». Для строк реальной части в колонке «план» отображается то количество из плана, которое приходится на данную конкретную реально принятую строку, т.е. сколько из плана она выполнила уже в реально принимаемых единицах измерения. Например, для зубного порошка там стоит 5 коробов (по 4 кг) – ведь по плану всего надо было принять 20 кг. А в колонке «факт» отображается тот факт, который был введен кладовщиком, сканирован с этикетки поставщика, либо был накоплен в результате нескольких вводов/ сканирований (реальные строки документа могут объединяться, если они отличаются только количеством – это определяется настройкой конфигурации).
Все это необходимо для того, чтобы упростить построение на терминале списков просмотра план/факт и алгоритмов, проверяющих недобор/переполнение.
Еще одно важное замечание: декларативная часть документа может содержать как много строк с одной и той же номенклатурой, так и много строк с одной и той же упаковкой и всем прочим. Каждая строка реальной части содержит ссылку на строку плана, которой она соответствует. Именно потому для тех реальных строк, для которых в плане ничего не предусмотрено, создаются новые плановые строки с плановым количеством «0». А те реальные строки, которые разносятся по нескольким строкам плана, разбиваются на несколько реальных строк так, чтобы каждой новой реальной строке соответствовала только одна строка плана. В целом алгоритм разноски сводится к следующему:
- найти строку задания, которая совпадает с реальной строкой по таким-то и таким-то столбцам, а затем пересчитать и начать прибавлять количество. Правила совпадения «по таким-то и таким-то столбцам» задаются в конфигурации;
- если окажется, что найденная строка задания окажется переполненной (количество план больше количества факт), то попытаться найти следующую подходящую строку:
- если такой строки не окажется, переполнить найденную;
- если подходящая строка найдется, разбить разносимую реальную строку на две так, чтобы в первой осталось количество ровно по плану первой найденной плановой строки, а во вторую попал остаток. Продолжить с шага 2.
Дополнительные таблицы документа
Таблица документа хранится непосредственно в самом документе и, соответственно, загружается на ТСД вместе с ним. Применять такие таблицы следует для хранения данных, используемых в контексте данного документа. К примеру, в документе подбора дополнительную табличную часть можно использовать для хранения информации о расположении подбираемого товара на складе.
Создание таблицы
Для создания дополнительной табличной части документа воспользуйтесь панелью управления Mobile SMARTS («Типы документов» --> выберите нужную операцию (например, «Инвентаризация») --> «Дополнительные табличные части» --> выбрать в контекстном меню «Добавить табличную часть»).
В графе «Свойства» можно указать следующие параметры новой таблицы:
- «В сегда локальная таблица» — таблица никогда не загружается с сервера и хранится только локально. Может использоваться для хранения данных на месте, без опасения, что она перетрется на сервере.
- «Порядок поиска» — определяет, в каком порядке будет происходить поиск данных в таблице при запросах (подробнее читайте «HYDB»).
- «Автозагрузка на устройство при обновлении» — означает, что в случае обновления таблицы на сервере должен быть инициирован обмен на ТСД.
- «Внешний вызов для получения таблицы» — позволяет указать вызов во внешнюю учетную систему для получения данных таблицы.
Далее заведите необходимые колонки таблицы и задайте им используемые типы данных:
Поиск в таблице
Для поиска строк в таблице следует использовать действия «Выбор строки» (для поиска одной строки) или «Выбор строк» (для выбора группы строк). В нашей задаче мы будем использовать выб ор одной строки, чтобы найти возможное местоположение товара на складе.
Добавим действие «Выбор строки» после сканирования товара и зададим параметры поиска:
Теперь отобразим в заголовке следующего действия информацию из найденной строки:
Изменение данных в таблице
Важное отличие таблиц документа от других видов таблиц — это возможность внесения изменений в строки таблицы на ТСД и добавление новых строк.
Правку таблицы можно осуществлять с помощью действия «Присваивание».
Для создания новой строки используется вызов конструктора new Cleverence.Warehouse.Row (), результатом будет пустая строка таблицы. Далее, заполняются поля созданной строки. Для добавления заполненной строки в таблицу следует использовать вызов функции Add (Row) для коллекци и строк таблицы. Функция добавит строку, переданную в параметрах, в таблицу.
Получение новой строки с помощью действия «Присваивание»:
При завершении документа все измененные данные и новые строки вместе с документом попадут на сервер, и их можно будет загрузить и обработать в учетной системе.
Дополнительная табличная часть документа как расширение таблицы HYDB™
Платформа Mobile SMARTS версии 3 позволяет вести запись в дополнительную табличную часть документа, по структуре повторяющую таблицу базы данных. При этом, запрос к дополнительной таблице базы данных будет искать и в соответствующей табличной части документа.
В качестве примера записи в дополнительную табличную часть документа будет использована работа с сериями в поступлении, Магазин 15.
Работа с дополнительной табличной частью документа
Каждый документ Mobile SMARTS может использовать табличные части, имеющие имя и структуру, аналогичные дополнительным таблицам базы данных. Создавать вручную такие дополнительные части не нужно, они будут созданы автоматически при записи.
Например, в операции Поступление нет дополнительных табличных частей, но есть дополнительная таблица базы данных Серия:
Запись в дополнительную табличную часть
Запись данных в дополнительную табличную часть документа:
| НоваяСтрока = new Cleverence.Warehouse.Row () НоваяСтрока.Поле1 = данные … Document.ИмяТаблицыБазы.Rows.Add (НоваяСтрока) |
|---|
Здесь:
НоваяСтрока = new Cleverence.Warehouse.Row () — создание нового объекта строки с именем НоваяСтрока;
НоваяСтрока.Поле1 = данные — заполнение поля строки. Структура полей берётся из таблицы базы данных;
Document.ИмяТабл ицыБазы.Rows.Add (НоваяСтрока) — занесение строки НоваяСтрока в табличную часть документа ИмяТаблицыБазы.
Рассмотрим на примере занесения новых серий в операции Поступление. Для записи новых серий используется операция СозданиеСерии:
Как видим, при заполнении полей строки данными, структура полей взята из дополнительной таблицы базы данных Серии. Запись производится в дополнительную табличную часть документа (Document.Серии).
Работа с записанными данными
При запросе в дополнительную таблицу базы данных, поиск будет проводиться и по соответствующей дополнительной табличной части документа.
Например, запрос select (*) from {Серии} выведет все имеющиеся строки из дополнительной таблицы базы данных (Серии) и из дополнительной табличной части документа (Document.Серии).
Можно ограничить поиск только дополнительной табличной частью документа, обратившись только к ней. В этом случае запрос примет следующий вид: select (*) from {Document.Серии}.
При завершении документа все новые строки вместе с документом попадут на сервер, и их можно будет загрузить и обработать в учетной системе.
Настройки документов
Создание нового документа на ТСД
-
Автосоздание документа
Настройка определяет, в каких случаях на терминале будет автоматически создаваться новый документ, при заходе в список документов.
Никогда – документ не может быть создан автоматически.
Если список документов пуст – документ создается автоматически, если на терминале нет ни одного документа данного типа.
Всегда – новый документ будет всегда создаваться автоматически, при нажатии кнопки операции в главном меню.
-
Режим создания нового документа
Настройка определяет, в каком режиме создается новый документ.
Показывать форму создания документа – будет отображаться форма для ввода имени документа.
Создать автоматически, без показа формы – форма не показывается, имя будет присвоено автоматически (имя типа документа и время его создания).
Если в автосоздании документа в настройке выбрано «Если список документов пуст» или «Всегда», то параметр «Режим создания нового документа» указывает, будет показана форма для ввода имени автоматически созданного документа или документ откроется сразу.
-
Создавать на терминале
Признак возможности создания документов на терминале.
Если «Да», то пользователь может сам заводить новые пустые документы (кнопка «Новый» в форме выбора документов на терминале).
Если «Нет», то заведение новых документов на терминале невозможно (нет кнопки «Новый»), документы могут быть получены только с сервера.
Настройка выбора документа на ТСД
Документ может быть выбран разными способами.
-
Выбирать из списка
Если в настройках проставлено «Нет», то список документов на терминале не появляется и отсутствует кнопка выбора.


Если в настройках проставлено «Да», то появится список до кументов (находящихся на терминале или/и на сервере в зависимости от других настроек) и кнопка выбора.


-
Выбирать по штрихкоду
Если в настройках проставлено «Да», то появится окно для ввода штрихкода, в которое можно вручную ввести штрихкод документа или отсканировать его.


Если в настройках проставлено «Нет», то окна для ручного ввода штрихкода документа не будет и отсканировать его не получится.


-
Выбирать по штрихкоду с сервера
Чтобы выбрать документ по штрихкоду с сервера необходимо чтобы было проставлено «Да» в настройках «Выбирать по штрихкоду с сервера» и в настройках «Выбирать по штрихкоду».
Тогда появится окно для ввода штрихкода, в которое можно вручную ввести штрихкод документа, лежащего на сервере или отсканировать его.


Если в настройка выбирать по штрихкоду с сервера проставлено «Нет», то будут доступны для сканирования документы, лежащие только на терминале.
Для выбора документа по штрихкоду, необходимо чтобы у документа этот штрихкод был указан и проставлен флаг «Выдавать только по запросу». Если у документа не указан штрихкод, то отсканировать его нельзя.
Настройка распределения документов пользователям ТСД
Система Mobile SMARTS поддерживает ряд различных настроек, позволяющих управлять правилами доставки документов на мобильные терминалы.
-
Выдача документов выгруженных на сервер
На процесс распределения и загрузки документов влияют как параметры конкретного документа, так и настройки операции. Документы могут быть персонализированными (предназначены конкретному пользователю) и неперсонализированными (общие).
Неперсонализированные документы выдаются не более одного на пользователя и только в том случае, если у него нет других невыполненных заданий.
Документы могут загружаться на терминал автоматически, выбираться по штрихкоду или из списка документов, лежащих на сервере.
Каждый документ состоит из шести частей:
Настройки документа Настройки операции Поведение системы Document . Appointment = идентификатор пользователя
Полз1Документ загрузится конкретному пользователю при первом обмене данными. Загрузятся все документы, назначенные данному пользователю. Document . Appointment = идентификатор нескольких пользователей или группы (нескольких групп) пользователей, написанных через вертикальную черту
Полз1|Полз2|Польз3
Группа1| Группа2| Группа3Если указано несколько пользователей, то документ загрузится к первому, который произведет обмен с сервером.
Документ загрузится первому проводившему обмен данными пользователю из указанной группы или групп (если указано несколько групп), у которого нет других заданий для выполнения.
Неперсонализированные документы выдаются не более одного на пользователя и только в том случае, если у него нет других невыполненных заданий.Document . Appointment = “” (пустое значение) Документ загрузится первому проводившему обмен данными пользователю, которому разрешен данный тип документа, у которого нет других заданий для выполнения.
Неперсонализированные документы выдаются не более одного на пользователя и только в том случае, если у него нет других невыполненных заданий.Document.DistributeByBarcode = True
Document.Appointment = различные значенияВыбирать по штрихкоду с сервера = Да Документ загружается только по запросу пользователя, когда тот сканирует штрихкод документа в окне выбора документа.
Значение поля Appointment учитывается как разрешающий/запрещающий параметр и работает так же, как это описано выше.Document.DistributeByBarcode = True
Document.Appointment = различные значенияПоказывать документы на сервере = Да Список документов на терминале начинает отображать и позволять выбирать из него лежащие на сервере документы.
Можно комбинировать с параметром «Выбирать по штрихкоду с сервера».
Значение поля Appointment учитывается как разрешающий/запрещающий параметр и работает так же, как это описано выше.Документы Mobile SMARTS имеют приоритет выполнения (свойство Document.Priority). Самый высокий приоритет имеют документы предназначенные конкретному пользователю (персонализированные). При выделении общих (неперсонализированных) документов Сервер сначала распределяет документы с бОльшим приоритетом. В случае равенства приоритетов, предпочтение отдается более ранним (Document.CreateDate) заданиям. В клиентском приложении приоритет также учитывается, и документы с более высоким значением располагаются в списке выбора выше.
Обратите внимание, что в случае равенства значений приоритетов и дат создания для двух заданий, сказать заранее какой документ система даст на обработку нельзя. Если Вам необходимо точно знать очередность распределения заданий – используйте приоритеты.
-
Прямое получение документов из учетной системы
Кроме этого документ или список документов можно получить на ТСД из внешней системы с помощью события о запросе документа (документов) с сервера.
События сервера:
ПолучитьДокумент — событие о запросе получения документа по коду (код, штрихкод) с сервера. Вызывается, когда в типах документов «Выбирать по штрихкоду с сервера» проставлено «Да» и документ не найден на терминале и среди доступных к захвату на сервере. Событие может использоваться для организации выгрузки на терминал документов по введенному коду или отсканированному штрихкоду.
ПолучитьСписокДокументов — событие о запросе получения списка документов. Вызывается при заходе в список документов на терминале, если в типах документов «Показывать в списке документы на сервере» проставлено «Да». Позволяет реализовать поиск и отбор документов по параметрам непосредственно в базе учетной системы, без предварительной выгрузки.
Настройка интерфейса документа на ТСД
Высота кнопки главного меню по умолчанию
Задает минимальную высоту кнопки (в точках) в главном меню для типа документа. Если отображаемое имя не умещается — высота будет увеличена автоматически до нужного размера.
Значение по умолчанию = 26 px.
Можно самостоятельно задать высоту кнопки главного меню.
![]() | ![]() | |
![]() | ![]() |
Запрашивать склад перед выбором
Если в настройке «запрашивать склад перед вы бором документа» проставлено «Да» возможны два варианта.
- Если пользователю доступна работа на нескольких складах, то перед тем как выбрать документ, будет предложено выбрать склад, после этого пользователю будут доступны документы, предназначенные для этого склада.
![]() | ![]() |
- Если пользователю доступна работа только на одном складе, то вход будет выполнен автоматически, склад выбирать не надо.
Если в настройках проставлено «Нет», то склад выбирать не надо, будут доступны документы для текущего склада, выбранного при входе в систему.
Полноэкранный режим
Настройка определяет выводить ли окна визуальных действий в полноэкранном режиме.
Если указано «Да», то выводит без верхней информационной строки и нижних строк подвала.
![]() | ![]() |
Текст приглашения к выбору документа
Позволяет задать любой текст, который будет отображен на терминале в окне выбора документов.
Шаблон отображения документов в списке
Когда документы выводятся списком на терминале, можно задать шаблон для отображения документов в списке. В шаблон можно вписать текст (форматированный текст) и выражения.
Пример: Штрихкод документа:
{Item.Barcode}Документ:{Item.Name}![]()
В шаблоне указано вывести штрихкод документа и с новой строки выводить его имя.
Следует учитывать, что в момент показа этой формы документы еще не загружены на терминал, поэтому при составлении шаблонау Вас нет доступа к строкам документа, т. е., отобразить их содержимое или даже количество НЕВОЗМОЖНО!
Для отображения доступны только основные и дополнительные поля шапки документа.
![]() | ![]() |
Настройка обработки документа на ТСД
-
Виртуальный
Если в настройках проставлено «Да», то устанавливается виртуальный тип документа.
Виртуальный документ существует только во время выполнения процесса, при этом с сервера никаких документов не выгружается и обратно не загружается.
-
Обмен после завершения документа
Если в настройках проставлено «Да», то после завершения документа происходит автоматический обмен между терминалом и сервером. Завершенный документ попадает на сервер. Удалять сразу после завершения
Если в настройках проставлено «Да», то после завершения документ будет удален с терминала и на сервер не попадет.
Такой режим удобно применять в тех случаях, когда требуется, сохранять какие то данные в документе до тех пор, пока пользователь не завершит документ. При этом пользователь может прерывать его выполнение и возвращаться к нему снова, и документ всё это время хранится на терминале. Как только документ завершается пользователем он тут же полностью удаляется. Данные не выгружаются на сервер.
-
Циклическое выполнение операций
Циклическая обработка документа показывает, следует ли зациклить процесс, описанный действиями.
Если задано циклическое выполнение, то при выполнении алгоритма как только терминал закончит последнее действие, процесс снова перейдет на его начало. Если циклическое выполнение отключено, то документ в таком случае будет завершен.)
Настройка автозакрытия документа
Как сделать так, чтобы после набора полного документа он сам закрывался и не давал больше сканировать?
Чтобы документ закрывался автоматически, после того, как весь товар в документе был набран (отсканирован), необходимо в настройках выгрузки документа проставить флаг «Контроль количества».
При сканировании товара, как только плановые и реальные количества во всех строках документа совпадут, его обработка завершится автоматически.
Кроме этого, при выгрузке документа с контролем количества, лишнее количество товара или другой товар, не заявленный в документе, отсканировать будет невозможно.
Настройки серверных документов
-
Показывать в списке документы на сервере
Включает режим, при котором в форме выбора документа отображаются не только загруженные на терминал документы, но и документы, лежащие на сервере, и доступные в данный момент для выполнения пользователем. Такие документы отображаются в списке специальным значком
.

-
Показывать в списке завершенные документы на сервере
Позволяет дополнительно к еще не обработанным серверным документам отображать документы уже выполненные Вами или другими пользователями. Такие до кументы отображаются значком
.

Такие документы можно также открыть на выполнение. При этом терминал выведет предупреждение, что документ уже был завершен пользователем.
Это позволяет реализовывать процесс, когда документ редактируется несколькими пользователями по очереди!
-
Показывать в списке захваченные документы на сервере
Позволяет дополнительно к еще не обработанным серверным документам отображать документы, находящиеся в данный момент в обработке другими пользователями (или этим же пользователем, но на другом терминале). Такие документы отображаются значком
.

Если включить отображение этих документов в списке, то его также можно будет открыть на выполнение. Будет показано предупреждение, что документ уже захвачен каким-то пользователем и что его открытие может привести к потере данных.
Следует учитывать, что использование подобного режима небезопасно и применять его следует только в экстренных случаях! Документ оказывается открыт на двух терминалах сразу и результаты работы НЕ объединяются! После завершения на сервере окажутся две копии одного документа.
-
Интервал обновления списка серверных документов
Время автоматического обновления списка серверных документов в форме выбора документов, в секундах. Если задан 0 (ноль), то список автоматически н е обновляется.
Настройки отображения документа на ТСД
Блок относится к свойствам типа документа Mobile SMARTS.
Блок свойств отвечает за видимость и доступность кнопки типа документа в основном меню, а также за отображение и сортировку выгруженных экземпляров документов в списке выбора.
Видимость — задаёт условие отображения кнопки типа документа в основном меню мобильного клиента. При значении «истина» кнопка типа документа отображается, при «ложь» — кнопка не отображается. В условии можно использовать переменные сессии и глобальные переменные.
В коробочных продуктах используется проверка значения глобальной переменной, ответственной за видимость соответствующего типа документа.
Пример:
{GlobalVars.ВидимостьОпераций["ПриходНаСклад"] ! = "Нет"}
При значении выражения «Истина»:
При значении выражения «Ложь»:
-
Видимость документов в списке — задаёт условие отображения файлов в списке выбора:
-
«истина» — документ отображается в списке выбора;
-
«ложь» — документ не отображается и недоступен для выбора.
В условии допустимо использовать переменные сессии, глобальные переменные, а также поля шапки документа (в этом случае обращение к ним идёт через Item.ИмяПоляШапкиДокумента).
К примеру, оставим доступными документы, в имени которых содержится слово «табак».
Список до указания условия видимости:
Добавим следующее условие видимости:
Item.Name.Contains("табак")
Теперь список документов, доступных для выбора, будет выглядеть так:
Доступность — задаёт условие доступности типа документа для пользователя. Позволяет динамически ограничивать доступность типа документа в зависимости от результата вычисления условия.
Пример:
CurrentUser.Id == "кладовщик"
Для пользователя с Id «оператор» тип документа недоступен для работы:
Для пользователя с Id «кладовщик» тип документа будет доступен:
Отображаемое имя — наименование, которое выводится на кнопке типа документа в основном меню мобильного клиента. Допускается как использование обычного текста, так и вывод вычисляемых значений.
Пример:
Просмотр справочников<r size="-1" color="Red">
{CurrentGroup.ServerSideInventory==1:на сервере;{global::Cleverence.Warehouse.ProductsManager.Count} товаров}</r>
В результате будет выведена кнопка следующего вида:
Сортировка в списке — вычисляемое выражение, позволяющее управлять сортировкой файлов в списке выбора. Для задания выражения используются две переменные, I1 и I2 (i в верхнем регистре). Если выражение возвращает истину, то документ I1 будет в списке выше, чем I2.
К примеру, отсортируем список документов по дате создания.
I1.CreateDate > I2.CreateDate
Результат:
Теперь сменим направление сортировки:
I1.CreateDate < I2.CreateDate
Результат:
Таким же образом можно использовать значения дополнител ьных полей шапки для сортировки документов (например, создание поля «Приоритет» и сортировка по значению этого поля).
Действия с документами
Разрешение и запрет действий
-
Блокировать, если нет документов
В настройках проставлено «Да».
Если операция не позволяет создавать на терминале документы пользователю (например, Инвентаризация) и документы такого типа отсутствуют (не были загружены с сервера), то кнопка операции такого типа становится недоступной.


-
Открывать единственный документ автоматически.
В настройках проставлено «Да».
Если операция не позволяет создавать на терминале документы пользователю (например, Инвентаризация) и на терминале только один документ данного типа, документ откроется сразу, без дополнительного выбора.
-
Разрешить пользователю удалять созданные документы
Если операция позволяет создавать на терминале документы и в настройках проставлено «Да», то пользователю разрешено удалять документы, созданные на терминале.
Документы, загруженные с сервера удалять с терминала не разрешается.
Если в настройках проставлено «Нет», то документ удалить невозможно, кнопка «Удалить» отсутствует.
-
Разрешить самостоятельный выход
Если в настройках проставлено «Да», тогда возможен ручной выход из режима редактирования документа.
Если в настройках проставлено «Нет», тогда не возможен ручной выход из режима редактирования документа и кнопка «Завершить» не функционирует.
Следует учитывать, что если разрешен самостоятельный выход, то пользователь может выйти из процесса выполнения в абсолютно любом месте процесса, даже не закончив какую-нибудь текущую операцию! Несохраненные в документ данные при этом могут быть утеряны!
Если Вы отключаете самостоятельный выход, обязательно следует предусмотреть возможность завершения или временного прерывания документа пользователями. Иначе из операции станет невозможно выйти и приложение можно будет завершить только аварийно, закрыв всю программу или перезагрузив терминал.
Сохранность и восстановление документов
Для сохранности документа при работе в клиенте Mobile SMARTS на ТСД разработан специальный механизм восстановления документа для критических ситуаций, который работает в автоматическом режиме.
Документы находятся в определенных папках в зависимости от модели ТСД. Стандартные пути хранения документов:
- \Application\MobileSMARTS\Documents
- \Application Data\MobileSMARTS Documents
- \Флеш_карта*\Documents
*название флеш-карты (карты памяти) зависит от модели ТСД.
Если после установки необходимо изменить путь хранения документов или посмотреть куда они сохраняются, и в случае если вы не уверены или забыли путь указанный при установке клиента на ТСД, – в папке установки программы-клиента для ТСД есть конфигурационный файл с названием MobileSMARTS.exe.config. В этом конфигурационном файле есть строка:
<add key="documentsPath" value="" />
В этой строке указывается путь хранения документов, например:
<add key="documentsPath" value="\Application Data\MobileSMARTS Documents " />
Если путь не указан:
<add key="documentsPath" value="" />
Это означает, что папка хранения документов находится в той же папке, в которой установлена программа-клиент, например:
\Application\MobileSMARTS\Documents
или
\Program Files\MobileSMARTS\Documents
Документы, хранящиеся на ТСД, имеют раширение XML и имеют следующий вид, например:
«Приемка товараnew_dec57404-07a0-4b6f-ad1c-df2bec6d217d.xml» – сам документ
«d_Приемка товараnew_dec57404-07a0-4b6f-ad1c-df2bec6d217d.xml» – шапка документа, для быстрой загрузки.
Во время работы появляется внутренний файл программы так называемый "трек файл" который записывает в себя любое изменение в документе. У него такое же название с расширением *.track
«Приемка товараnew_dec57404-07a0-4b6f-ad1c-df2bec6d217d.track»
Работает следующим образом:
- создается параллельная копия док умента выгруженного на ТСД и с ним ведется работа, этот документ "крутится" в оперативной памяти, а реальный документ продолжает "лежать" в физической памяти (энергонезависимой не подверженной очистке в любом случае кроме перепрошивки и изменению пользователем вручную),
- трек файл записывает все в себя постоянно каждое! действие,
- далее при завершении работы с документом сохраняется копия выгруженного и если все прошло успешно и документ не испорчен и т.д. — и только в этом случае производится перезапись выгруженного документа на его "копию".
- Если даже в этот момент возникают, какие-либо неполадки, то происходит восстановление из трек файла, каждая операция выполняется вновь до полного восстановления документа.
- При возникновении такой ситуации запускается режим восстановления — на экране ТСД предлагается восстановить документ с вариантами выбора — да или нет. Если выбрали «нет» то откроется базовый документ с последними изменениями, последнее удачное сохранение до ошибки (если таковая была) или базовый документ выгруженный из 1С.




















