Web-сервисы в JS¶
Из JS-вставок можно инициировать вызовы методов приложения, используемых для выполнения таких действий как создание задач, написание комментариев, изменение значений ДП и множества других востребованных вещей, что расширяет возможности сложных автоматизаций для нестандартных кейсов.
Использование методов Valhalla¶
ℹ️ API веб-сервиса можно посмотреть, добавив в браузере к адресу вашего приложения "Первая Форма" строку /swagger:
https://\<your_1forma>/swagger Для методов Valhalla самым простым способом вызова является использование jQuery методов $.get() и $.post(), они используются для http и ajax запросов.
Конкретный метод jQuery выбирается на основании типа используемого метода приложения (указано в описании самого метода).
В качестве первого параметра передается адрес самого метода (можно использовать относительные, а не абсолютные ссылки).
В качестве второго параметра передаются сами данные для обработки в формате json (необходимая конструкция присутствует в описании самого метода).
Пример использования методов Valhalla:
//создание новой задачи
$.post ('http://1forma.obi.info/app/v1.1/api/tasks?9;,
{
"subcatId": 123,
"text": "",
"owner": 3,
"createFromParentOwner": true,
"performers": [],
"separateTaskForEachPerformer": true,
"subscribers": [],
"subscribeGroups": [],
"copySubscribers": true,
"notifyUsers": [],
"orderedTime": "",
"lockOrderedTime": false,
"taskStartTime": "",
"plannedStartTime": "",
"plannedEndTime": "",
"priority": 0,
"extParams": [
{
"id": 44,
"value": Name
},
{
"id": 55,
"value": Adress
},
{
"id": 66,
"value": AddDriver[1]
}
],
"parentTaskId": null ,
"linkedTaskId": null ,
"linkedEmailId": null,
"parentCommentId": null,
"extParamSourceTaskId": null,
"preuploadedFiles": [],
"linkFiles": [],
"parentFiles": "DoNotCopy",
"isConfidential": false,
"isConsisImplement": false,
"location": "",
"guid": "",
"userComment": "",
"onSuccessParams":
{
"onSuccessJs": "",
"openInSecFrame": "",
"returnUrl": "",
"returnJs": "",
"refreshRadWindowParent": ""
}
});
Еще пример использования вызова метода:
Повышение приоритета задачи (вызов метода Valhalla)
Использование методов TCWebService (Устаревшее, не используется)
ℹ️ tcwebservice.asmx доступен только с установкой TaskCenter, является устаревшим и не рекомендуется к использованию. Для обращения к методам рекомендуется использовать API, swagger
Для методов TCWebService можно использовать jQuery метод $.ajax(), позволяющий более тонко настроить отправляемый запрос.
Методы $.get() и $.post() по сути являются сокращенной формой записи метода $.ajax(), поэтому метод $.ajax() применим и для вызова Valhallа методов.
Методы TCWebService используют данные в формате xml, поэтому требуется явное указание типа передаваемых данных.
-
webServiceURL — адрес вызываемого метода (можно использовать относительные, а не абсолютные ссылки),
-
soapMessage — данные для обработки в формате SOAP-запроса (необходимая конструкция присутствует в описании самого метода),
-
OnSuccess — функция, вызываемая при получении успешного ответа от веб-сервиса (опционально),
-
OnError — функция, вызываемая при получении ошибки от веб-сервиса (опционально).
Пример использования методов TCWebService:
// написание комментария в задаче
var webServiceURL = 'http://1forma.obi.info/tcwebservice.asmx?op=AddUserComment'
var soapMessage = '<?xml version="1.0" encoding="utf-8"?>' +
'<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">' +
'<soap12:Body>' +
'<AddUserComment xmlns="http://taskcenter.ru/">' +
'<taskId>123456</taskId>' +
'<commentRecipients></commentRecipients>' +
'<userId>9999</userId>' +
'<text>Тестовый комментарий</text>' +
'<needSubscribe>false</needSubscribe>' +
'</AddUserComment>' +
'</soap12:Body>' +
'</soap12:Envelope>'
$.ajax({
url: webServiceURL,
type: "POST",
dataType: "xml",
data: soapMessage,
processData: false,
contentType: "text/xml; charset=\"utf-8\"",
//success: OnSuccess,
//error: OnError
});
Загрузка файла в таблицу через API
Для постановки задачи с заполнением ДП Таблица с колонкой типа "Мультифайл" сперва загружаем base64 файл через /api/files/preupload/base64?initiatorUserId={initiatorUserId}:
{
"fileData": "0YLQtdGB0YLQvtCy0YvQuSDRhNCw0LnQuw==",
"fileName": "1.txt"
}
В ответ получаем JSON вида:
{
"data": [
{
"fileName": "1.txt",
"fileId": 0,
"fileVersion": 0,
"preUploadFileId": 677735,
"date": null,
"fileSize": null,
"fileMime": null
}
]
}
Вызываем апи создания задачи /app/v1.1/api/tasks с полученным preUploadFileId:
{
"subcatId": 58740,
"owner": 29101,
"text": "",
"pinToChat": false,
"preuploadedFiles": [],
"subscribers": [],
"subscribeGroups": [],
"notifyUsers": [],
"extParams": [
{
"value": "{\"rows\":[{\"id\":-1,\"modifyType\":\"create\",\"cols\":[{\"id\":33131,\"value\":\"[{\\\"file\\\":{},\\\"name\\\":\\\"файл1.txt\\\",\\\"fileName\\\":\\\"файл1.txt\\\",\\\"preuploadId\\\":677735,\\\"fileId\\\":null}]\"},{\"id\":32111,\"value\":null,\"dataSourceItemId\":null}]}]}",
"id": 83410,
"type": "Table"
}
],
"preUploadedFileKeys": []
}
В данном примере 83410 — ID ДП "Таблица", а 33131 — ID колонки в таблице с типом "Файл" и признаком "Мультифайл".