Запрос построения отчета и его отправки на почтовые адреса в СПИК

В СПИК предусмотрена возможность заказа отчетов на почту. Отчет может быть заказан, если пользователю доступен хотя бы один шаблон отчета. Шаблон отчета содержит настройки отчета, необходимые для его построения и отображения. С контрактами данных, используемыми для построения отчетов, можно ознакомиться здесь.

Для того, чтобы заказать отчет на почту, необходимо выполнить следующие действия:

  1. Пройти авторизацию в системе СКАУТ (если не пройдена).
  2. Запросить доступные пользователю отчеты и их шаблоны (путем вызова метода GetAvailableReports сервиса SpicReportsService; метод возвращает объект типа SpicReportInfoCollection).
  3. Составить запрос на построение отчета, указав необходимые данные (запрос должен иметь тип SpicReportRequest).
  4. Отправить запрос на построение в СПИК (необходимо вызвать метод 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;