Show/Hide Toolbars

Руководство администратора

Вызов веб-сервисов с помощью SQL

Ссылки Назад Вверх Вперед

В данном разделе представлены основные процедуры заданий, их параметры и краткое описание, а также некоторые примеры кода. Все значения параметров в примерах могут изменяться в зависимости от бизнес-задач.

Для работы веб-сервисов "Первой Формы" необходимо выдать следующие права роли, в которую входит служебный пользователь D10TaskUser:

GRANT EXECUTE ON [sys].[sp_OASetProperty] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OAMethod] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OAGetErrorInfo] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OADestroy] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OAStop] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OACreate] TO {D10TaskUserRole}

GRANT EXECUTE ON [sys].[sp_OAGetProperty] TO {D10TaskUserRole}

Также надо выдать права на создание экземпляров объектов OLE-автоматизации в пакетах Transact-SQL.

Процедура

Параметры и краткое описание

tc_ws_addAcceptant

 

Добавление подписчика в текущую запрошенную динамическую подпись.

Параметры:

@TaskSignatureId (int) — номер запрошенной подписи, обязателен,

@InitUserID (int) — ID пользователя который добавил акцептанта, обязателен,

@UserID (int) — ID пользователя, которого добавляют в акцептанты, обязателен ,

@WriteComment(bit) — нужно ли писать комментарий, необязателен,

@SendEmail(bit) — отправлять ли письмо, необязателен.

Пример кода:

DECLARE @id int
select @id = ID from TaskSignatures
where signatureId = 5 and taskId = @taskId and SignatureStateID = 1
EXEC dbo.tc_ws_addAcceptant
        @TaskSignatureID=@id,
        @InitUserID=2,
        @WriteComment=0,
        @SendEmail=0,
        @UserID=123

tc_ws_addComment

Добавление комментария в задачу.

Параметры:

@UserID (int) — ID пользователя, от имени которого генерируется комментарий,

@TaskID (int) — ID задачи, в которой пишут комментарий, обязателен,

@Comment  nvarchar(8000) — текст комментария, обязателен.

Пример кода:

declare @Comment varchar(1000)
set @Comment = 'привет, мир!'
exec dbo.tc_ws_addComment @UserID = 123, @TaskID = @taskID, @Comment = @Comment

tc_ws_addNewPerformer

Назначение нового исполнителя задачи.

Параметры:

@UserID (int) — ID пользователя, является исполнителем,

@TaskID (int)  — ID задачи, в которой назначается новый исполнитель,

@SessionUserID (int) — ID пользователя, от имени которого выполняется действие, обязателен.

Пример кода:

EXEC tc_ws_addNewPerformer
     @TaskID = @TaskID,
     @UserID = 123,
     @SessionUserID = 1

tc_ws_AddNewSignatureToTask

Запрос подписи в задачу.

Параметры:

@TaskID (int) — ID задачи, в которой запрашивают подпись, обязателен,

@SignatureID (int) — ID подписи, которую запрашивают, обязателен,

@UserID (int) — ID пользователя, который запрашивает подпись, обязателен,

@IsDynamic (bit) — динамическая ли подпись, необязателен,

@Reason (varchar(max)) — причина запроса подписи, необязателен.

Пример кода:

exec dbo.tc_ws_AddNewSignatureToTask
  @taskid = @taskid,
  @signatureid = 3,
  @userid = 123 ,
  @isDynamic = 1,
  @reason ='нужно ли это делать?'    

tc_ws_addSubscriber

Добавление пользователя в подписчики задачи.

Параметры:

@UserID (int) — ID пользователя, которого надо подписать к задачи, обязателен,

@TaskID (int) —  ID задачи, к которой надо подписать, обязателен,

@IsSubscribeChildTask (bit) — подписывание к дочерним задачам, необязателен,

@SubscribeType (int) тип подписки (принимает значение 2 -Акцептант, 6 — Прочее\Автоматизация, 4 — Консультант\Исполнитель\Заказчик\Автоподписка  1 — Добавление вручную , 5 — Не определено, 3 — Скопирован из родительской), необязателен,

@SessionUserId (int) — ID  пользователя, от имени которого выполняется действие, обязателен.

Пример кода:

exec dbo.tc_ws_addSubscriber
   @userid =  123,
   @taskid = @taskid,
   @SessionUserId = 1

tc_ws_addSubscriberMailed

Добавление пользователя в подписчики с уведомлением по почте (на данный момент на почту уведомления не отправляются, фактически работает как dbo.tc_ws_addSubscriber).

Параметры:

@UserID (int) — ID пользователя, которого надо подписать к задачи, обязателен,

@TaskID (int) —  ID задачи, к которой надо подписать, обязателен,

@IsSubscribeChildTask (bit) — подписывание к дочерним задачам, необязателен,

@ActingUserID  — ID пользователя, который подписывает, обязателен.

Пример кода:

exec dbo.tc_ws_addSubscriberMailed
   @userid =  123,
   @taskid = @taskid,
   @IsSubscribeChildTask = 0,
   @actinguserid = 1

tc_ws_AddUserComment

Отправление комментарий конкретному пользователю.

Параметры:

@TaskID (int) — ID задачи, в которой надо написать комментарий, обязателен,

@CommentRecipients (nvarchar(4000)) — список через точку с запятой логин (на английском) получателей, обязателен,

@UserID (int) — ID пользователя отправителя, обязателен,

@Text (nvarchar(8000)) — текст комментария, обязателен,

@NeedSubscribe (bit) — нужно ли подписываться на задачу, необязателен

tc_ws_AddUserCommentWithSms

Отправление пользователю комментарий через смс (требуется подключение к системе Clickatell).

Параметры:

@TaskID (int) — ID задачи, в которой надо написать комментарий, обязателен,

@CommentRecipients (nvarchar(8000)) — список через точку с запятой логин (на английском) получателей, обязателен,

@UserID (int) — ID пользователя отправителя, обязателен,

@Text (nvarchar(8000)) — текст комментария , обязателен,

@NeedSubscribe (bit) — нужно ли подписываться на задачу, необязателен

tc_ws_changeTaskStep

Совершение перехода в задаче.

Параметры:

@StepID (int) — номер перехода который надо сделать, обязателен,

@Userid (int) — ID пользователя, который делает переход, обязателен,

@Taskid (int) —  ID задачи, в которой надо сделать переход, обязателен

@InitiatorUserId (int) — ID пользователя-инициатора перехода,

tc_ws_DeletePerformerFromTask

Удаление исполнителя из задачи.

Параметры:

@Taskid (int) —  ID задачи, в которой надо удалить исполнителя, обязателен,

@Userid (int) — ID пользователя, которого удаляют из исполнителей, обязателен,

@SessionUserId (int) — ID  пользователя, от имени которого выполняется действие, обязателен.

tc_ws_DeleteRequestedSignature

Удаление запрошенной подписи.

Параметры:

@UserID (int) — ID пользователя, который удаляет запрошенную подпись, обязателен,

@TaskSignatureID (int) — номер запрошенной подписи, обязателен

tc_ws_DeleteTask

Удаление задачи.

Параметры:

@UserID (int) — ID пользователя, который удаляет задачу, обязателен,

@TaskID (int) —  ID задачи, которая удаляется, обязателен

tc_ws_LinkOrgUnitWithGroup

Установление связи между орг. единицей и группой пользователей.

Параметры:

@OrgUnitID (int) — ID орг. единицы, обязателен,

@GroupID (int) — ID группы, обязателен

tc_ws_moveTask

Перемещение задачи в категорию.

Параметры:

@UserID (int) — ID пользователя, от имени которого будет сделано перемещение, обязателен,

@TaskID (int) — ID перемещаемой задачи, обязателен,

@SubcatID (int) — ID категории, в которую будет перемещена задача, обязателен

tc_ws_newTask

Создание новой задачи.

Параметры:

@UserID (int) — IDd пользователя, который будет являться заказчиком, обязателен,

@Task (nvarchar(8000)) — текст задачи, обязателен,

@OrderedTime (datetime) — срок задачи, обязателен (в зависимости от настройки категории),

@Category (int) — ID категории, в которую будет поставлена задача, обязателен,

@Comment (nvarchar(8000)) — первый комментарий к задаче, не обязателен,

@ExtParamStr (nvarchar(8000)) — служебная строка для заполнения доп. параметров, описание см. ниже, обязателен (в зависимости от настройки обязательных ДП при постановке в категории),

@PerfID (int) — ID исполнителя при постановке, обязателен (в зависимости от настройки категории),

@PriorityID (int) — ID приоритета задачи, не обязателен,

@D3TaskID — не используется,

@ParentID (int) — ID родительской задачи, не обязателен,

@UserNick (nvarchar(20))- ник пользователя, ставящего задачу, не обязателен (может использоваться вместо @UserID),

@Remind (bit) — напоминание о приближении срока задачи, не обязателен,

@PropagateSubscribers (bit) — подписать подписчиков родительской задачи, не обязателен,

@PropagateFiles (boolean) — перенести файлы в дочернюю задачу,

@TaskStartTime (datetime) — постановка даты начала работ, не обязателен

warning_icon  ID созданной задачи можно получить так:

EXECUTE @newtaskid = [dbo].[tc_ws_NewTask]

tc_ws_PeriodicExecution

Явное выполнение периодических заданий из очереди

tc_ws_updateExtParamsInTasks

Обновление дополнительных параметров в задаче.

Параметры:

@TaskID (int) — id задачи, обязателен,

@Str (nvarchar(8000)) — служебная строка для заполнения доп. параметров, описание см. ниже, обязателен,

@SessionUserID (int) — id пользователя, от имени которого выполняется действие, обязателен,

@Comment (bit) — если равен 1, то пишется системный комментарий об изменении ДП, если 0 — не пишется; по умолчанию равен 1; не обязателен

tc_ws_updateOrderedTime

Обновление срока задачи.

Параметры:

@TaskID (int) — ID задачи, обязателен,

@OrderedTime (datetime) — срок задачи, обязателен

tc_ws_updateTaskDescription

Обновление текста задачи.

Параметры:

@TaskID (int) — ID задачи, обязателен,

@Description (nvarchar(max)) — новый текст, обязателен

Служебная строка

@ExtParamStr или @Str

Заполняет/изменяет значение ДП.

Например, для одного ДП строка имеет вид:

'#nномер#vзначение::'                          

где номер — ID ДП, а значение — значение, которое должно быть записано в ДП.

Для двух ДП (и более — аналогично):

'#nномер1#vзначение1::#nномер2#vзначение2::'  

warning_icon  Все значения должны быть приведены к типу varchar

Пример кода

Пусть в задаче 15678 от имени пользователя "Диспетчер задач" нужно обновить ДП с ID=167 (тип "Текст"), записать в него значение 'Иван Иванович', а в ДП с ID=168 (тип "ДатаВремя") записать текущую дату.

Строку можно задекларировать следующим образом:

set @str = '#n167#vИван Иванович::#n168#v'+ cast (getdate() as varchar) + '::'

ID пользователя "Диспетчер задач" получим следующим образом:

select @UserID = SystemRobotID from Settings where CustomerID = 1

Наконец, сделаем вызов процедуры:

exec tc_ws_UpdateExtParamsInTasks
  @TaskID = 15678,
  @Str = @str,
  @SessionUserID = @userid

warning_icon Обратите внимание:

чтобы сохранить символы '::'  внутри значения ДП – поставьте перед ними обратный слеш '\::'

чтобы поместить слеш в конце значения ДП – продублируйте его '\\::'

Пример работы с таблицей

Пусть в ДП "Таблица" с ID=999 колонки 11 и 33 заполняются, а колонка 22 остается пустой.

set @str = '#n999#v' + @str
declare @str as varchar (1000) = '+[{11:{"First":"Текст1111"},22:{"First":""},33:{"First":"Текст3333"}}]'

Полезные ссылки