Запрос построения отчета и его отправки на почтовые адреса в СПИК
В СПИК предусмотрена возможность заказа отчетов на почту. Отчет может быть заказан, если пользователю доступен хотя бы один шаблон отчета. Шаблон отчета содержит настройки отчета, необходимые для его построения и отображения. С контрактами данных, используемыми для построения отчетов, можно ознакомиться здесь.
Для того, чтобы заказать отчет на почту, необходимо выполнить следующие действия:
- Пройти авторизацию в системе СКАУТ (если не пройдена).
- Запросить доступные пользователю отчеты и их шаблоны (путем вызова метода GetAvailableReports сервиса SpicReportsService; метод возвращает объект типа SpicReportInfoCollection).
- Составить запрос на построение отчета, указав необходимые данные (запрос должен иметь тип SpicReportRequest).
- Отправить запрос на построение в СПИК (необходимо вызвать метод BuildReports сервиса SpicReportsService, передав в параметр запрос на построение, сделанный в пункте выше; метод вернет объект типа SpicOperationResult).
Пример на C#:
public void BuildReport(SpicSoapReportsServiceClient client)
{
// Запрос доступных отчетов и шаблонов
var reportsInfo = client.GetAvailableReports();
// Создание запроса
var reportTypeId = reportsInfo.ReportInfos[0].Id;
var reportTemplateId =
reportsInfo.TemplateInfos.FirstOrDefault(reportTemplate => reportTemplate.ReportId == reportTypeId).Id;
var reportRequest = new SpicReportRequest
{
BeginDateTime = DateTime.Now.AddDays(-1),
EndDateTime = DateTime.Now,
ReportTargetCardinalityType = new SpicReportTargetCardinality {Value = "Many"},
ReportTargetType = new SpicReportTargetType {Value = "Unit"},
ReportTemplateId = reportTemplateId,
ReportType = reportTypeId,
Targets = new[] {235, 456, 219},
Emails = new[] {"some_email@asdf.com", "helloworld@helloworld.net"},
OutputFormat = new SpicSchedulingReportFormat {Value = "pdf"}
};
// Отправка запроса на построение
client.BuildReports(reportRequest);
}
Пример на JS:
var baseUrl = ’http://localhost:8081/spic/reports/rest/’;
var getAvailableReportsUrl = baseUrl + ’GetAvailableReports’;
var buildReportsUrl = baseUrl + ’BuildReports’;
var provider = new HttpJsonRequestProvider();
// Запрос доступных отчетов и шаблонов
var reportsInfo = getAvailableReports();
// Создание запроса
var reportTypeId = reports.ReportInfos[0].Id;
var reportTemplateId = null;
for (var i = 0; i < reportsInfo.TemplateInfos.length; i++) {
if (reportsInfo.TemplateInfos[i].ReportId == reportTypeId.toString()) {
reportTemplateId = reportsInfo.TemplateInfos[i].Id;
break;
}
}
var now = new Date();
var reportRequest = {
BeginDateTime: new Date(now.getTime() - 24 * 3600 * 1000),
EndDateTime: now,
ReportTargetCardinalityType: { Value: "Many" },
ReportTargetType: { Value: "Unit" },
ReportTemplateId: reportTemplateId,
ReportType: reportTypeId,
Targets: [235, 456, 219],
Emails: ["some_email@asdf.com", "helloworld@helloworld.net"],
OutputFormat: { Value: "pdf" }
};
// Отправка запроса на построение
buildReports(reportRequest);
// Метод получения доступных отчетов и шаблонов
function getAvailableReports() {
return provider.GETAuthorized(getAvailableReportsUrl,
null,
getAuthorizationToken()).response;
}
// Метод построения отчетов
function buildReports(reportsRequest) {
return provider.POSTAuthorized(buildReportsUrl,
reportsRequest,
getAuthorizationToken()).response;