Метод предназначен для динамического создания и удаления полей структуры через кубик JS SDK.
$D.store.alter = function(structName, options:[alter:List[AddOptions], drop:List[DropOptions])
,где AddOptions подразумевает список объектов, описываемых параметры добавляемого поля. Это sysname, name, тип данных, группу, к которой будет относиться это поле, а также целевая структура, если поле имеет тип link.
{ "sysName":"sysname_field", "name":"field_name", "dataType":"link", "group":"Link_Group", "link":"storeAlter_linked" }
DropOptions — список объектов, состоящих из sysName удаляемых полей.
{ "sysName":"stringF" }
Нельзя удалить поля, настроенные из интерфейса редактирования структуры
//example codeDirectualEngine.addEventListener(AppEvents.START, function(context){// Добавить в структуру storeAlter поле addColumn и удалить поле stringF$D.store.alter("storeAlter", {"alter":[{"sysName":"addColumn","name":"add_field_storeAlter","dataType":"string","group":"addColumn_Group"}],"drop":[{"sysName":"stringF"}});return true;});
$D.tryLock = function(key, ttlMillis, isGlobalLock)
$D.tryLock = function(key, ttlMillis, isGlobalLock)
key: ключ очереди; ttlMillis: время жизни лока в миллисекундах; Внутри одного сценария: isGlobalLock == false; Глобальный лок (виден во всех сценариях): isGlobalLock == true;
$D.unlock = function(key, isGlobalLock)
$D.unlock = function(key, isGlobalLock)//example codeDirectualEngine.addEventListener(AppEvents.START, function(context){//получаем значение ID текущего объектаvar templateID = null;templateID = $D.getValueFromTemplate("{{id}}");$D.unlock("key1",false)//добавляем в текущий объект значение в поле getValueSpace$D.saveObject("unlock",{"id":templateID,"unlockResult":"true"});return true;});
httpGet(URL:String, context:Object) , где params - js object:
httpGet(URL:string, context:object)//httpGet("http://ya.ru", {//readTimeoutMs:20000, connectTimeoutMs:1000,//headers:{"Cookie": "cookieValue"}});//example codeDirectualEngine.addEventListener(AppEvents.START, function(context){//получаем значение глобальной переменнойvar httpGetURL = $D.getValueByID("GlobalVariables","httpGetURL","value")var httpGetResult;httpGetResult = httpGet(httpGetURL);
В Response вернётся сообщение с заголовками и телом ответа:
{headers={Access-Control-Allow-Credentials=Vector(true), Access-Control-Allow-Headers=Vector(Origin, Accept, x-amz-acl, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, network-sys-name), Access-Control-Allow-Methods=Vector(POST, PUT, GET, HEAD, OPTIONS), Access-Control-Allow-Origin=Vector(*), Cache-Control=Vector(no-cache, no-store, max-age=0, must-revalidate), Connection=Vector(keep-alive), Content-Type=Vector(application/json;charset=UTF-8), Date=Vector(Tue, 28 May 2019 13:54:43 GMT), Expires=Vector(0), Pragma=Vector(no-cache), Server=Vector(nginx), Status=Vector(HTTP/1.1 200 OK), Transfer-Encoding=Vector(chunked), X-Content-Type-Options=Vector(nosniff), X-Frame-Options=Vector(allow-from *), X-XSS-Protection=Vector(1; mode=block)}, data={"payload":[{"httpGetSpace":"httpGet test value"}],"pageInfo":{"currentPage":0,"pageSize":30,"totalPage":1,"tableSize":1,"currentPageSize":1},"status":"OK"}, statusCode=200}
httpPost(URL:String, data:Object, context:Object)
httpPost(URL:string, data:Object, context:Object)//var response;//var data = {id:templateID,"httpPostResult":"httpPost value true"};//var address = "https://directual.com/good/api/v5/data/httpPost/httpPost_space_field?appID=7c07de9e-40ce-4476-9d80-ea1554321a87&sessionID=";//response = httpPost(address, data);// One more sample// var data = "_csrf_token=token&_username=nikita%40directual.com&_submit=on";// var options = {readTimeoutMs:1000, headers:{"Content-Type":"application/x-www-form-urlencoded", "Cookie":"cookie"}}// response = httpPost("https://guardsaas.com/login_check", data, options);
В Response вернётся сообщение с заголовками и телом ответа.
{headers={Access-Control-Allow-Credentials=Vector(true), Access-Control-Allow-Headers=Vector(Origin, Accept, x-amz-acl, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, network-sys-name), Access-Control-Allow-Methods=Vector(POST, PUT, GET, HEAD, OPTIONS), Access-Control-Allow-Origin=Vector(*), Cache-Control=Vector(no-cache, no-store, max-age=0, must-revalidate), Connection=Vector(keep-alive), Content-Type=Vector(application/json;charset=UTF-8), Date=Vector(Tue, 28 May 2019 14:56:38 GMT), Expires=Vector(0), Pragma=Vector(no-cache), Server=Vector(nginx), Status=Vector(HTTP/1.1 200 OK), Transfer-Encoding=Vector(chunked), X-Content-Type-Options=Vector(nosniff), X-Frame-Options=Vector(allow-from *), X-XSS-Protection=Vector(1; mode=block)}, data={"result":[{"httpPostResult":"httpPost value","id":"242_322759493_312"}],"status":"OK"}, statusCode=200}
$D.arrayContainsAny(array1Str, array2Str)
$D.arrayContainsAny(array1Str, array2Str)//arrayF1 = 1,2,3,4//arrayF2 = 3,4//$D.arrayContainsAny("{{arrayF1}}","{{arrayF2}}") = true
array1Str, array2Str: массивы для проверки в строчном представлении
$D.arrayContainsAll(array1Str, array2Str)
$D.arrayContainsAll(array1Str, array2Str)//arrayF1 = 1,2,3,4//arrayF2 = 3,4//$D.arrayContainsAll("{{arrayF3}}","{{arrayF2}}") = true
array1Str, array2Str - массивы для проверки в строчном представлении.
Возможности | Пример JS | Пример результата |
Получить все поля текущего объекта | context.scenarioObject.fields() | [ id:100, name:"name" ] |
Получить поле name текущего объекта | context.scenarioObject.fields().name context.scenarioObject.fields[name] | name |
Получить дату создания объекта в системе | context.scenarioObject.dateCreated | тип Date |
Получить дату изменения объекта в системе | context.scenarioObject.dateChanged | тип Date (возможен null) |
Выполнение http-запроса: Net.httpRequest(url, callback, option)
Net.httpRequest("http://yandex.ru/test", function(data){if(statusCode == 200){ // data = {data : '', statusCode : 200}}});
var json = {test:true, example:2}Net.httpRequest("http://yandex.ru/test", function(data){if(statusCode == 200){ // data = {data : '', statusCode : 200}}}, {contentType:"application/json", postData:json, method:"POST"});