Контекст выполнения - это набор данных, отражающий текущий статус и состояние, а также содержащий данные текущего объекта. Доступ к контексту осуществляется посредством свойств объекта api.context доступного только для чтения. Контекст делится на три типа:
- Глобальный контекст
- Расширенный контекст
- Пользовательский контекст
Глобальный контекст
Под глобальным контекстом подразумевают данные, определенные в каждой точке расширения. Однако, само значение соответствующих полей может различаться в зависимости от используемого 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;