Мобильная Торговля
Версия
Контекст выполнения

Контекст выполнения - это набор данных, отражающий текущий статус и состояние, а также содержащий данные текущего объекта. Доступ к контексту осуществляется посредством свойств объекта api.context доступного только для чтения. Контекст делится на три типа:

  1. Глобальный контекст
  2. Расширенный контекст
  3. Пользовательский контекст

Глобальный контекст

Под глобальным контекстом подразумевают данные, определенные в каждой точке расширения. Однако, само значение соответствующих полей может различаться в зависимости от используемого URI. Например, свойство идентификатора торговой точки хранит значение в отчетах торговой точки, но содержит "0" в расширениях на маршруте, и т.д.

currencySymbol [String] - Символ валюты
distributorCoId [ID] - Идентификатор дистрибьютора Центрального офиса
distributorId [ID] - Идентификатор дистрибьютора
docId [ID] - Идентификатор документа
docIdList [IDList] - Список идентификаторов документов
docRowItemCode [String] - Код элемента строки документа
employeeId [ID] - Идентификатор сотрудника
idQuestion [ID] - Идентификатор вопроса опросного листа
idTemplate [ID] - Идентификатор шаблона опросного листа
isContinueScriptMode [Boolean] - Признак продолжения завершенного ранее события
isPrint [Boolean] - Признак печати документа
isSilentScriptMode [Boolean] - Признак автоматического срабатывания выполнения скрипта
metaConfig [Object] - Конфигурация из манифеста
// Манифест:
{
    "uri": "stmobile://report/routereports/test",
    "type": "report",
    "title": "qsTr(Test)",
    "datascript": {
        "script_file": "test.js"
    },
    "template": {
        "template_file": "test.html"
    },
    "config": {
        "testNumber": 12345,
        "testString": "Hello, World!",
        "testObject": {
            "field1": "some text",
            "field2": 42
        }
    },
    "group": {
        "group_title": "Test"
    }
}

// Data-скрипт
mapper.greetings = api.context.metaConfig.testString;
mapper.text = api.context.metaConfig.testObject.field1;
mapper.sumOfNumbers = api.context.metaConfig.testNumber + api.context.metaConfig.testObject.field2;
outletId [ID] - Идентификатор торговой точки
planVisitId [ID] - Идентификатор запланированного визита
positionId [ID] - Идентификатор позиции
promoParams [PromoParams] - Параметры акции
routeId [ID] - Идентификатор маршрута
rowItemId [ID] - Идентификатор строки документа
rowItemIdList [IDList] - Список идентификаторов строк документа
skuId [ID] - Идентификатор товара
storeId [ID] - Идентификатор склада
taskId [ID] - Идентификатор задачи
visitId [ID] - Идентификатор визита
Предупреждения
Данные визита из контекста могут быть не актуальны - рекомендуется использовать api.visits.currentVisit().factId

Расширенный контекст

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

stmobile://action/recomendedorder

stmobile://action/recomendedskurequest

idTenantOutlet [ID] - Идентификатор торговой точки Центрального офиса

stmobile://action/*/skumerchcalculation

lastIdDoc [ID] - Идентификатор последнего сохраненного документа Мерчандайзинг

stmobile://action/<Документ>/itemchange

DocRowItemValue [*] - Новое введенное значение

stmobile://action/<Документ>/postgroupdiscount

discountValue [Number] - Значение скидки

stmobile://action/<Документ>/postclose

stmobile://action/<Документ>/preclose

isDraft [Boolean] - Признак того, что документ является черновиком

stmobile://action/<Документ>/pregroupincrease

incraseValue [Number] - Значение наценки

stmobile://action/exchange/begin

stmobile://action/exchange/end

exchange_result [Result] - Результат обмена

stmobile://action/exchange/postsave

exchange_type [ExchangeType] - Тип обмена

stmobile://action/exchange/postsave

tables [Table[] ] - Таблицы, участвовавшие в обмене

stmobile://action/survey/itempostsave

stmobile://action/survey/itempresave

newValue [*] - Новое введенное значение
templateRowId [ID] - Идентификатор строки шаблона опросного листа

stmobile://action/survey/itempresave

oldValue [*] - Предыдущее значение (при наличии)

stmobile://action/survey/preopen

stmobile://action/visit/preopen

date [String] - Актуальная дата

stmobile://action/smcamera/*

smvisit [SmVisit] - Информация о визите для sm

stmobile://action/workflow/filter

workflow [Step[]] - Список шагов сценария
date [String] - Актуальная дата

stmobile://document/posm/snedit

needDeleteRow [Boolean] - Признак удаления записи
posmId [ID] - Идентификатор оборудования

stmobile://exchange/cmd/uploaddataspec

exchange_cmd [DexCmd] - Команда обмена
exchange_type [ExchangeType] - Тип обмена

stmobile://globalmenu/items

config [MenuItem[] ] - Список пунктов глобального меню

stmobile://outlet/attributes

config [OutletAttrData[] ] - Список атрибутов торговой точки подробнее тут

stmobile://action/uri/preopen

uri [String] - Путь uri, в рамках которого вызывается данная точка расширений

stmobile://report/outletreports/outletcard

contextDistrId [ID] - Идентификатор дистрибьютора, формируется в соответствии со следующей логикой:
  • Если ТТ заведена только под одним дистрибьютором и не имеет сопоставленных ТТ КБ Д, то передается дистрибьютор этой ТТ.
  • В остальных случаях передается дистрибьютор ЦО.

stmobile://action/deeplink/request

requestUrl [String] - Полный url, с параметрами

Пользовательский контекст

Пользовательский контекст является удобным инструментом взаимосвязи расширений, благодаря ему возможна передача параметров из одного расширения в другой. Для передачи значения нужно объявить его в виде GET-параметра при открытии следующего расширения:

api.launcher.open("stmobile://reports/routereports/some_report?parameter=42");
// Дополнительный параметр будет доступен в контексте data-скрипта открываемого расширения
api.context.parameter == 42;

При объявлении пользовательского параметра, затеняющего стандартный контекст, новое значение перепишет изначальное.

api.launcher.open("stmobile://reports/ouletreports/such_report?outletId=1337");
// Открываемый отчет:
api.context.outletId == 1337;