Главная

Руководство: Контекст выполнения

Контекст выполнения

Контекст выполнения - это набор данных, отражающий текущий статус и состояние, а также содержащий данные текущего объекта. Доступ к контексту осуществляется посредством свойств объекта 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

Идентификатор визита

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

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

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

stmobile://action/exchange/postsave

exchange_type ➡ ExchangeTypeCode

Тип обмена

stmobile://action/exchange/postsave

tables ➡ Table[]

Таблицы, участвовавшие в обмене

stmobile://action/survey/itempostsave

stmobile://action/survey/itempresave

newValue ➡ *

Новое введенное значение

templateRowId ➡ ID

Идентификатор строки шаблона опросного листа

stmobile://action/survey/itempresave

oldValue ➡ *

Предыдущее значение (при наличии)

stmobile://document/posm/snedit

needDeleteRow ➡ Boolean

Признак удаления записи

posmId ➡ ID

Идентификатор оборудования

stmobile://exchange/cmd/uploaddataspec

exchange_cmd ➡ DexCmd

Команда обмена

exchange_type ➡ ExchangeTypeCode

Тип обмена

stmobile://globalmenu/items

config ➡ MenuItem[]

Список пунктов глобального меню

stmobile://outlet/attributes

config ➡ OutletAttrData[]

Список атрибутов торговой точки

stmobile://action/uri/preopen

uri ➡ String

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

stmobile://report/outletreports/outletcard

contextDistrId ➡ ID

Идентификатор дистрибьютора, формируется в соответствии со следующей логикой:

  • Если ТТ заведена только под одним дистрибьютором и не имеет сопоставленных ТТ КБ Д, то передается дистрибьютор этой ТТ.
  • В остальных случаях передается дистрибьютор ЦО.

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

Пользовательский контекст является удобным инструментом взаимосвязи расширений, благодаря ему возможна передача параметров из одного расширения в другой. Для передачи значения нужно объявить его в виде 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;