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

Authorization, метаданные таблиц, HYDB, действия и запросы в Mobile SMARTS

Mobile SMARTS в рамках конфигурации *.mslx действительно работает как верхнеуровневый DSL: вы описываете интерфейс, поток выполнения и работу с данными декларативно и полу-скриптово, без классического "толстого" кода приложения.

1. За что отвечает Authorization.xml

В репозитории для баз используется файл вида:

  • База/<Продукт>/Data/.priv/Authorization.xml

Он хранит модель доступа пользователей к операциям (типам документов) и связь пользователей с группами.

Что в нем важно:

  • <Groups> / <UserGroup>:
    • id, name, role (MobileDeviceUser, Administrator, User);
    • autorunDocumentTypeName (какой тип документа запускать автоматически, если задан);
    • onStartHandlerName / onFinishHandlerName (обработчики старта/завершения работы пользователя);
    • DocumentTypeNames — список доступных типов документов для группы.
  • <Users> / <User>:
    • id, name, groupId, barcode, password;
    • опционально WarehouseIds (ограничение по складам/контексту работы).

Практический эффект: если тип документа не включен в DocumentTypeNames группы пользователя, операция для него недоступна на клиенте.

2. Метаданные таблиц (Configuration/Metadata/*.mslx)

Общие таблицы базы описываются в Configuration/Metadata/Table.*.mslx через DocumentTableInfo.

На уровне структуры задаются:

  • имя таблицы (name);
  • поля (TableRowFieldInfo), их типы;
  • ключи и индексы (primaryKey, indexed);
  • параметры обновления (updatePeriod, autoExchangeDeviceOnUpdate).

Это источник схемы для запросов select ... from <TableName> и для обращения к таблице как к коллекции строк.

3. Важное правило по общим таблицам и таблицам документа

Общая таблица из Metadata может использоваться внутри документа как таблица документа даже если в конкретном DocumentType не заведена отдельная "честная" таблица в <Tables>.

Практически это выглядит так:

  • чтение: select (*) from Document.МаркиСОшибками;
  • запись: Document.МаркиСОшибками.Rows.Add(НоваяСтрока) или Document.<Таблица>.Add(Строка).

То есть можно работать с таблицей документа по структуре, заданной общей таблицей в Metadata, без отдельного дублирования схемы внутри типа документа.

4. Табличные части документа

Базовые табличные части:

  • Document.DeclaredItems — план/задание;
  • Document.CurrentItems — факт выполнения.

Частые сценарии:

  • выборка строки: select first (*) from Document.DeclaredItems where ...;
  • агрегирование: select (*) from Document.DeclaredItems ... group by ...;
  • синхронизация план/факт через ключи привязки (BindingKey и смежные поля).

5. HYDB: что это и где настраивается

HYDB-поведение таблиц настраивается файлами:

  • База/<Продукт>/Settings_Default/HYDB.<ИмяТаблицы>.xml

Ключевые параметры:

  • searchOrder — порядок поиска по источникам (Device, Server, Erp);
  • searchGlobalEvenFoundInDoc — продолжать ли поиск в глобальном источнике, если в документе уже найдено;
  • onTheFlyUpdate — политика обновления во время работы.

Это влияет на то, откуда реально будут читаться данные в запросах и выборе значений (устройство, сервер, ERP), особенно в смешанных online/offline сценариях.

6. Визуальные и невизуальные действия

Упрощенно:

  • Визуальные действия — показывают экран/диалог пользователю:
    • QuestionAction, QuestionYesNoAction, VisualUserAction, CellSelectAction, FieldEditAction, ItemsViewAction.
    • типовые UI-свойства: headerText, welcomeText, footerText, defaultButtonHeight, cancelType, fullscreen.
  • Невизуальные действия — управляют логикой, данными и переходами:
    • AssignAction, ConditionAction, OperationAction, ForeachAction, ClearSessionAction, InvokeMethodAction.

Рекомендуемый подход: UI-оркестрация в визуальных шагах, а обработку данных и интеграционную логику выносить в невизуальные операции.

7. Запросы к документам, общим таблицам и таблицам документа

В конфигурации используется единый SQL-подобный DSL запросов:

  • к табличным частям документа:
    • select ... from Document.DeclaredItems
    • select ... from Document.CurrentItems
  • к общим таблицам метаданных:
    • select ... from Серии
    • select ... from Характеристики
    • select ... from АналитикаДокументов
  • к таблицам документа, построенным на общей схеме:
    • select ... from Document.МаркиСОшибками
    • select ... from Document.АналитикаОшибки

Важно поддерживать связность схем:

  • Document.* поля должны существовать в <Fields>;
  • Item.* поля строки должны существовать в <Columns>;
  • имя таблицы и поля в запросе должны существовать в Configuration/Metadata/*.mslx.