Перейти к содержанию

Формирование отчета

Рассмотрим пример по формированию отчета напрямую из скрипта. Скрипты позволяют программно генерировать документы, извлекать данные, а также настраивать выходные форматы для последующего использования.

Пример:
Необходимо формировать отчет при записи значения в тег, а также в соответствии с расписанием в 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)