Объявление глобальной переменной, работает в любой части кода
Объявление переменной, в которой выполняется SQL-запрос, возвращает таблицу
Вывод результата
Цикл на основании полученного результата (построчная обработка полученных данных)
Объявление таблицы
Объявление глобальных переменных
Выполняем действие по отправке комментария
|
|
Заполнение Таблицы с колонкой "Мультифайл"
|
Обработка исключений и ошибок выполнения LUA-скриптов
Для безопасного выполнения кода, который может вызвать ошибки, используйте функцию pcall. Оберните критические участки кода в pcall, а затем настройте логирование ошибок, например, запись в файл или добавление комментария в задачу. Пример поиска ошибок при создании задачи: local IdQ = CONTEXT.Id local params = UTILS:json_decode(CONTEXT.Data) local logId = math.floor(SQL:scalar([[ INSERT INTO [dbo].[cm_GATELog] ([PERIOD_DATE] ,[DOC_ID] ,[DEPARTMENT_ID] ,[DATE_BEGIN] ,[DATE_END] ,[tabstring] ,[mqID]) VALUES ( @PERIOD_DATE ,@DOC_ID ,@DEPARTMENT_ID ,@DATE_BEGIN ,@DATE_END ,@tabstring ,@mqID) SELECT IDENT_CURRENT('dbo.cm_GATELog') ]], { PERIOD_DATE = params.ep88931, DOC_ID = params.ep89001, DEPARTMENT_ID = params.ep89011, DATE_BEGIN = params.ep89021, DATE_END = params.ep89031, tabstring = params.tabstring, mqID = IdQ } ))
function createTask (performerId, newtaskextparams, dateto, text) res = SMART:execute_action("CreateTask", nil, "task", { Owner = 3, Subcat = 39651, TaskText = text, CreateLink = false, CreateSubtask = true, Performers = performerId, DueTime = dateto, TaskStartTime = nil, ExtParams = newtaskextparams, NewTaskCopySubscribers = false, CreateCopyFiles = false, CopyParentText = false, Priority = 1, Notify = nil, UsersToSubscribe = nil, CreateCopiesForEachPerformer = false, LinkFiles = nil, AssignLetterWithTask = nil, Confidentiality = nil, LinkAsUser = nil } ) return res end
local epString = { {ExtParamId = 88931, FixedValue = params.ep88931}, {ExtParamId = 89001, FixedValue = params.ep89001}, {ExtParamId = 89011, FixedValue = params.ep89011}, {ExtParamId = 89021, FixedValue = params.ep89021}, {ExtParamId = 89031, FixedValue = params.ep89031}, {ExtParamId = 88981, FixedValue = params.tabstring} }
local success = true local returnValue = '' success, returnValue = pcall(createTask, 3, epString, nil, nil)
if not success then SQL:scalar( [[ update [cm_GATELog] set ErrorMsg = @error where ID = @logId ]], {logId=logId, error = tostring(returnValue.InnerException)}) else SQL:scalar( [[ update [cm_GATELog] set TaskID = @TaskID where ID = @logId ]], {logId=logId, TaskID = returnValue[0]}) end |
Функция pcall (f, arg1, …) вызывает запрошенную функцию в защищенном режиме. Если какая-то ошибка возникает в функции f, она не выдает ошибку, а возвращает статус ошибки. Возвращается два значения: status (true — если функция f выполнилась без ошибок, false — если с ошибкой) и retval (результат функции f или сообщение об ошибке)
|
|
|
Создание задач на основании SQL-выборки
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Подсчет трудозатрат + отправка комментария
|
"Первая Форма" поддерживает следующие утилиты для преобразования XML-файлов в lua-таблицу: •UTILS:xml_to_json() — Принимает xml-строку, возвращает json-строку •UTILS:json_to_xml() — Принимает json-строку, возвращает xml-строку •UTILS:xml_serialize() — Принимает lua-таблицу, отдает xml-строку (внутри делает json_encode -> json_to_xml) •UTILS:xml_deserialize() — Принимает xml-строку, отдает lua-таблицу (внутри делает xml_to_json -> json_decode) •FILES:get_file_content(fileId, versionId) — Получить контент файла •FILES:get_file_content_string(fileId, versionId, encoding) — Получить контент файла в виде строки в кодировке (по умолчанию UTF-8) Пример работы парсинга xml:
|