Формирование отчета
Рассмотрим пример по формированию отчета напрямую из скрипта. Скрипты позволяют программно генерировать документы, извлекать данные, а также настраивать выходные форматы для последующего использования.
Пример:
Необходимо формировать отчет при записи значения в тег, а также в соответствии с расписанием в 7:00 и 21:00.
local async = require("async")
local time = require("time")
local reportApi = require("reports")
local events = require("simp-events")
local tagApi = require("simplight.api.channels")
local function build()
async(function()
print("build")
local lEnd = time.now() -- конечная временная точка
local lStart = lEnd - 60 * 60 * 1000 -- вычисление начальной точки (за час до текущего времени)
await(tagApi.write("Report.StartTime", lStart, 0xC0)) -- запись начальной временной точки
await(tagApi.write("Report.EndTime", lEnd, 0xC0)) -- запись конечной временной точки
await(reportApi.buildReport({ -- вызов функции построения отчета с указанием пути сохранения отчета
templatePath = "УтроВечер",
actions = {
save = {
filepath = "C:/Users/User/Desktop/moringEvening.pdf",
}
},
}))
end):catch(function(err)
print("error", err)
end)
end
events.on("channelWrite", function(event) -- формирование отчета по записи в тег СформироватьОтчет
for _, w in ipairs(event.writes) do
if w.name == "СформироватьОтчет" then
build()
end
end
end)
setInterval(function() -- планирование построение отчета в 7 утра и 21 час вечера.
local parts = time.toTable(time.now())
if (parts.hour == 7 and parts.min == 0)
or (parts.hour == 21 and parts.min == 0) then
build()
end
end, 60 * 1000)