Построение отчёта
В этой статье рассмотрен процесс построения отчёта из шаблона с помощью процессора отчётов FastReport Corporate Server.
Приступая к работе
Вам понадобятся следующие инструменты и возможности:
Знания по использованию API key в FastReport Corporate Server.
В этой статье будет пропущена дополнительная информация по аутентификации и авторизации.
Инструмент curl.
Подойдёт любой другой REST клиент, но примеры будут построены для curl.
Шаблон отчёта.
Как загрузить шаблон отчёта можно узнать в статье Загрузка нового шаблона.
Активная подписка FastReport.Cloud.
Доступ в интернет.
Инструкция
Вам необходим идентификатор шаблона для его построения. Сделайте
GET
запрос наhttps://fastreport.cloud/api/rp/v1/Templates/Root
для получения корневой директории.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Templates/Root" -H "accept: text/plain"
Пример ответа.
{ "name": "RootFolder", "parentId": null, "tags": [], "icon": "", "type": "Folder", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "None", "id": "5fa919f9292a8300019349b9", "createdTime": "2020-11-09T10:29:13.928Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-11-13T15:58:45.69Z", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" }
Идентификатор директории из примера выше
5fa919f9292a8300019349b9
.Для получения списка файлов в директории выполните
GET
запрос наhttps://fastreport.cloud/api/rp/v1/Templates/Folder/{id}/ListFiles?skip=0&take=10
, где вместо{id}
следует подставить идентификатор директории.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Templates/Folder/5fa919f9292a8300019349b9/ListFiles?skip=0&take=10" -H "accept: text/plain"
Пример ответа.
[ { "reportInfo": { "author": null, "created": "2020-12-04T10:58:57Z", "creatorVersion": "20.20.4.1", "description": null, "modified": "2020-12-04T11:00:20Z", "name": null, "picture": null, "previewPictureRatio": 0, "saveMode": "All", "savePreviewPicture": false, "tag": null, "version": null }, "name": "template.frx", "parentId": "5fa919f9292a8300019349b9", "tags": null, "icon": null, "type": "File", "size": 17159, "subscriptionId": "5fa919fa292a8300019349bc", "status": "Success", "id": "5fc9ece6b792c90001d94b13", "createdTime": "2020-12-04T08:01:42.708Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-04T08:01:42.708Z", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" } ]
Идентификатор шаблона из примера выше
5fc9ece6b792c90001d94b13
.Для построения отчёта вам понадобится директория, в которую можно положить отчёт. Запросите корневую директорию отчётов, для этого сделайте
GET
запрос наhttps://fastreport.cloud/api/rp/v1/Reports/Root
.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Reports/Root" -H "accept: text/plain"
Пример ответа.
{ "name": "RootFolder", "parentId": null, "tags": null, "icon": null, "type": "Folder", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "None", "id": "5fa919f9292a8300019349ba", "createdTime": "2020-11-09T10:29:13.993Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "0001-01-01T00:00:00Z", "editorUserId": null }
Идентификатор директории из примера выше
5fa919f9292a8300019349ba
.Для построения отчёта сделайте
POST
запрос наhttps://fastreport.cloud/api/rp/v1/Templates/File/{id}/Prepare
, где вместо{id}
следует подставить идентификатор шаблона.В теле запроса передайте JSON по схеме ниже.
{ "name": "string", "parentFolderId": "string", "reportParameters": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" } }
parentFolderId
— идентификатор директории куда будет помещён отчёт.name
— название результирующего файла. Добавите расширение.fpx
вручную.reportParameters
— параметры, которые указаны в самом отчёте с помощью дизайнера отчёта, в этом примере они не нужны.
Пример запроса.
curl -X POST "https://fastreport.cloud/api/rp/v1/Templates/File/5fc9ece6b792c90001d94b13/Prepare" -H "accept: text/plain" -H "Content-Type: application/json-patch+json" -d "{ \"name\": \"awesome_report.fpx\", \"parentFolderId\": \"5fa919f9292a8300019349ba\"}"
Пример ответа.
{ "templateId": "5fc9ece6b792c90001d94b13", "reportInfo": null, "name": "awesome_report.fpx", "parentId": "5fa919f9292a8300019349ba", "tags": null, "icon": null, "type": "File", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "InQueue", "id": "5fe4614bcd7c55000148e4c6", "createdTime": "2020-12-24T09:37:15.7169531+00:00", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-24T09:37:15.7169582+00:00", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" }
Обратите внимание на статус файла
InQueue
, он означает, что была создана задача на построение, она попала в очередь построителя, и уже на этом этапе отчёт получил свой идентификатор для работы5fe4614bcd7c55000148e4c6
.Следует подождать некоторое время, пока отчёт будет построен.
Для получения информации об отчёте сделайте
GET
запрос наhttps://fastreport.cloud/api/rp/v1/Reports/File/{id}
, где вместо{id}
следует указать идентификатор отчёта.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Reports/File/5fe4614bcd7c55000148e4c6" -H "accept: text/plain"
Пример ответа.
{ "templateId": "5fc9ece6b792c90001d94b13", "reportInfo": null, "name": "awesome_report.fpx", "parentId": "5fa919f9292a8300019349ba", "tags": null, "icon": null, "type": "File", "size": 16927, "subscriptionId": "5fa919fa292a8300019349bc", "status": "Success", "id": "5fe4614bcd7c55000148e4c6", "createdTime": "2020-12-24T09:37:15.716Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-24T09:37:15.716Z", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" }
Обратите внимание на статус файла
Success
. Отчёт был успешно построен.Для скачивания отчёта сделайте
GET
запрос наhttps://fastreport.cloud/download/r/{id}
, где вместо{id}
следует передать идентификатор отчёта.Пример запроса.
curl -X GET "https://fastreport.cloud/download/r/5fe4614bcd7c55000148e4c6" -H "accept: text/plain"
В ответе будет получен файл.