Рецепты
Отчёт СКД с нуля
Цель — собрать отчёт на СКД с нуля за шесть-семь вызовов. Объект отчёта, схема компоновки, набор данных из запроса с автоматическими полями, ресурс, группировка и заголовок в варианте настроек. Проверка — открыть отчёт и сверить данные в базе.
Предпосылки
- Действует ключ или бесплатный доступ.
- Отчёт создаётся в конфигурации, открытой для изменения, или в расширении. Имя отчёта в примерах —
<Отчет>, подставьте своё. - Запрос в примере читает остатки регистра
ТоварыНаСкладах. Если в вашей конфигурации поля называются иначе, шаг 2 это покажет.
Шаги
1. Снапшот и объект отчёта
{ "operation": "create", "label": "до отчёта по остаткам" }{ "project": "УТ2020", "operation": "create", "fqn": "Report.<Отчет>" }Ответ: 🟢 committed. Какие ещё свойства отчёта можно задать в definition — metadata_read с адресом Report.<Отчет>#help.
2. Проверить запрос до записи
{
"project": "УТ2020",
"query": "ВЫБРАТЬ Остатки.Склад КАК Склад, Остатки.Номенклатура КАК Номенклатура, Остатки.КоличествоОстаток КАК Количество ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки"
}С параметром project проверка идёт не только по синтаксису: таблицы и поля сверяются с конфигурацией, как в конструкторе запроса EDT. Несуществующее поле — ошибка с позицией. Валидный запрос дополнительно проходит ревью по стандартам ИТС: советы приходят в секции Recommendations и не меняют зелёный кружок.
3. Схема компоновки
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных",
"definition": {}
}Создаётся макет-схема, она становится основной схемой отчёта; источник данных и вариант настроек Основной добавляются автоматически.
4. Набор данных из запроса
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных.DataSet.Остатки",
"definition": {
"type": "Query",
"query_text": "ВЫБРАТЬ Остатки.Склад КАК Склад, Остатки.Номенклатура КАК Номенклатура, Остатки.КоличествоОстаток КАК Количество ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки",
"auto_fields": true
}
}auto_fields: true создаёт поля набора из псевдонимов запроса вместе с их типами. Если типы определить не удалось, поля всё равно создаются, а в Warnings об этом сказано.
5. Ресурс
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных.TotalField",
"definition": [ { "name": "Количество", "expression": "Сумма(Количество)" } ]
}Коллекционный адрес TotalField и массив — пакетная запись; так же в одном вызове создаются несколько ресурсов.
6. Настройки варианта: поля, группировка, заголовок
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных.SettingsVariant.Основной.Settings.Selection",
"definition": { "field": "Номенклатура" }
}Повторите для поля Количество. Группировка по складу:
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных.SettingsVariant.Основной.Settings.Structure",
"definition": { "field": "Склад" }
}Заголовок отчёта:
{
"project": "УТ2020",
"operation": "create",
"fqn": "Report.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных.SettingsVariant.Основной.Settings.OutputParameter.Заголовок",
"definition": { "value": "Остатки товаров по складам", "use": true }
}Контракт каждой секции настроек — composition_settings_read с адресом секции и гранью #help, например …Settings.Filter#help.
Проверка
dcs_readс адресомReport.<Отчет>.Template.ОсновнаяСхемаКомпоновкиДанных— обзор схемы: набор, поля, ресурс, вариант.composition_settings_readс адресом…SettingsVariant.Основной.Settings— выбранные поля, группировка и параметры вывода с индексами[i]для правок.validateсfqn: "Отчет.<Отчет>"— ошибок нет.- Данные в базе:
runtime_readвыполняет тот же запрос в живой базе и возвращает первые строки — пустой отчёт сразу отличим от пустого регистра. Инструмент выключен по умолчанию, его включение описано на страницеruntime_read.
Откат
{ "operation": "restore", "snapshot_id": "<идентификатор снапшота из шага 1>" }Удалить только настройку — composition_settings_write с операцией delete и адресом элемента с индексом, например …Settings.Structure[0].