Отображает результат как форму с блоками.
Если в результате больше одной строки, то для каждой будет отрисована своя форма.

Форма является контейнером для полей с данными, а так же для других представлений - на одной форме можно разместить несколько вложенных таблиц, канбан-досок, таймлайнов, а также добавить отображения графиков, карт и прочих компонентов с помощью iframes.
SELECT
@type = 'form',
@title = 'Отчет',
@block_sizes = array[
6, 6
],
SUM(amount) as sum_amount @{
caption = 'Сумма (за все время)',
form_block = 0
},
{
ref: &crm.sales_report_table,
args: {
date_from: $$transaction_time - '1 month'::interval,
date_to: $$transaction_time
}
} as sales @{
control = 'user_view',
form_block = 1,
},
FROM crm.sales
block_sizes buttons create_buttons create_link disable_auto_save export_to_csv extra_actions help_embedded_page_name help_page lazy_load max_width panel_buttons post_create_link show_argument_button show_argument_editor title typecaption control_height form_block visiblecell_color cell_variant control default_value extra_select_views fraction_digits link number_format options_view referenced_entity select_view show_seconds soft_disabled text_align text_typeОбозначения:
⚠️ - атрибут устарел (deprecated) и больше не поддерживаетсяИспользование:
Атрибуты представления и атрибуты строк начинаются с@и могут быть указаны в любом месте блокаSELECT
Атрибуты колонок и ячеек указываются после поля в блокеSELECTв форматеfield_name @{ attribute = value }
block_sizes[]// отображение в две строки по три колонки
@block_sizes = array[
4, 4, 4,
4, 4, 4
]
// отображение в две строки, на первой две колонки, на второй - одна во всю ширину
@block_sizes = array[
4, 8,
12
]
buttons@buttons = [
{
caption: 'Сгенерировать действия',
action: {
schema: 'crm',
name: 'gerenate_actions'
},
args: {
id: $id,
type: 'Звонок'
},
icon: 'flag',
display: 'desktop',
variant: 'info'
}
]
create_buttonscreate_link). Добавляет выпадающий список с кнопками в шапку таблицы и "кебаб-меню".@create_buttons = [
{
caption: 'Новый Человек',
new: true,
ref: &base.person_form,
default_values: {
is_client: true
},
icon: 'person_add_alt_1'
},
{
caption: 'Новая Организация',
ref: &base.organization_form,
new: true,
default_values: {
is_client: true
},
icon: 'add_business'
]
create_link@create_link = {
ref: &base.person_form,
default_values: {
is_client: true
}
}
disable_auto_savefalse@disable_auto_save = true,
export_to_csvfalse@export_to_csv = true,
Подробнее: Экспорт в csv в ozma.io
extra_actions ⚠️buttons).help_embedded_page_name ⚠️help_page).help_page).help_pagefunapp.embedded_pages).@help_page = {
schema: 'admin',
name: 'help__admin__main'
},
Подробнее: Справки, туториалы и поддержка
lazy_loadтребуется обновление страницы браузера после установки нового значения lazy_load
// разбивает данные на страницы по 10 записей.
@lazy_load = {
pagination: {
per_page: 10
}
}
max_widthpx), либо строкой с числом и %. Примеры: 500, '500', '500px' (ширина 500 пикселей), '100%' (ширина экрана).'1140px'// 500 пикселей
@max_width = 500,
-- @max_width = '500',
-- @max_width = '500px',
// ширина экрана
@max_width = '100%',
Подробнее: Задание ширины формы с помощью
@max_width
panel_buttons ⚠️buttons).buttons)post_create_link@post_create_link = &pm.action_additional_form,
Подробнее: Открытие другого представления после сохранения новой записи
show_argument_buttonfalse@show_argument_button = true,
Подробнее: Редактор аргументов
show_argument_editorfalse@show_argument_editor = true,
Подробнее: Редактор аргументов
title@title = 'Сделки',
type'type' | 'table', 'form', 'board', 'menu', 'timeline', 'multiselect']'table'captionname @{
caption = 'Имя'
}
control_heightnotes @{
text_type = 'multiline',
control_height = 300
},
form_block0status @{
form_block = 1
}
visibledefault_value позволяет задать значения по умолчанию для создаваемых строк, которые скрыты от пользователя.truecreated_on @{
visible = false,
}
cell_color ⚠️cell_variant)cell_variant@cell_variant в качестве атрибута cтрок, окрашиваются все ячейки строк.// окрашивает все строки
@cell_variant = 'secondary',
status @{
// окрашивает ячейку со статусом Завершено
cell_variant = CASE WHEN status = 'done' THEN 'success' END
}
Подробнее: Цветовые варианты и настройка тем ozma.io
control'user_view' | 'iframe')user_view вместо ячейки отображается вложенное отображение, соответствующее значению ячейки, интерпретированному как ссылка с идентификатором.iframe вместо ячейки отображается айфрейм, и значение передаётся в него.// user_view
{
ref: &admin.users_table,
args: { }
} as users @{
control = 'user_view'
}
// iframe
( SELECT full_name, amount FROM crm.clients ) as clients_amount @{
control = 'iframe',
iframe_markup = {
schema: 'admin',
name: 'stacked_multibar_chart'
}
}
default_valuedefault для колонки в её определении.extra_select_views"name": 'Название действия'.client @{
extra_select_views = [
{ name: 'Человек', new: true, ref: &crm.person_form },
{ name: 'Организация', new: true, ref: &crm.organization_form }
]
}
fraction_digitsnumber_format. Указывает, сколько цифр после запятой отображать. Не работает на формах для редактируемых полей.SUM(amount) as sum_amount @{
number_format = 'ru',
fraction_difits = 2
}
linkuser @{
link = &admin.user_form
}
number_formatauto, en, ruint и decimal. При значении auto формат выберется на основе языка браузера пользователя. // 'ru': 123 456,789
SUM(amount) as sum_amount @{
number_format = 'ru',
fraction_digits = 3
}
// 'en': 123,456.789
SUM(amount) as sum_amount @{
number_format = 'en',
fraction_digits = 3
}
options_viewvalue (значения в которой равны id сущностей, которые можно выбрать) и pun, содержащую строки-лейблы, используемые для отображения опций вместо главной колонки сущности.responsible_person @{
options_view = &base.employees_view
}
// base.employees_view
SELECT id as value, __main as pun
FROM base.people
WHERE is_client
ORDER BY __main
referenced_entity ⚠️options_view.select_viewextra_select_views. Кнопка для выбора связанной сущности из отображения. Удобна, когда не требуется кастомизация надписи на кнопке и кнопка только одна.client @{
select_view = {
ref: &base.client_form,
new: true,
default_values: {
is_client: true
}
}
}
show_secondsdatetime.falsecreated_on @{
show_seconds = true
}
soft_disabledtrue, то ячейку нельзя редактировать.
falseorders.delivery_date @{
soft_disabled = (orders.status = 'on_delivery')
}
text_alignleft | center | right]right,leftamount @{
text_align = 'left'
},
name @{
text_align = 'center'
}
text_typeactions.description @{
text_type = 'markdown'
}
Подробнее: Как включить форматирование текста в ozma.io
-- Для отображения одной записи на форме необходимо передать в нее
-- идентификатор записи $id и обработать выборку этой записи условием в блоке WHERE
(
$id reference(public.entities)
):
SELECT
@type = 'form', -- Как отображать результат
@title = 'Entity: ' || $id=>name,
@block_sizes = array[ -- Разметка блоков на форме
4, 8,
12
],
@disabled_auto_save = true,
@max_width = '100%',
@buttons = [{
name: 'Архивировать',
icon: 'edit',
action: &admin.archive_record,
visible: NOT $id=>is_archived,
args: {
id: $id,
is_archived: true
},
display: 'desktop'
}, {
name: 'Убрать из архива',
icon: 'edit',
action: &admin.archive_record,
visible: $id=>is_archived,
args: {
id: $id,
is_archived: false
},
display: 'desktop'
}, {
name: 'История изменений',
icon: 'change_history',
ref: &admin.change_history,
args: {
schema: 'public', name: 'entities', id: $id
}
}],
schema_id @{
form_block = 0, -- Индекс блока, в котором расположить поле-инпут
soft_disabled = $id=>is_archived,
cell_variant = CASE WHEN $id=>is_archived THEN 'light' END
},
name @{
form_block = 0,
soft_disabled = $id=>is_archived,
cell_variant = CASE WHEN $id=>is_archived THEN 'light' END
},
main_field @{
form_block = 1,
soft_disabled = $id=>is_archived,
cell_variant = CASE WHEN $id=>is_archived THEN 'light' END
},
-- Вложенные представления на форме
{
ref: &admin.unique_constraints_table,
args: { id: $id }
} as unique_constraints @{
control = 'user_view',
form_block = 0,
-- Указание caption в родительской форме заменит title из вложенного представления.
-- Значение caption будет отображаться и на форме создания, и на форме редактирования---- записи.
caption = 'Unique Constraints'
},
{
ref: &admin.column_fields_table,
args: { id: $id }
} as column_fields @{
control = 'user_view',
form_block = 1,
caption = 'Column Fields'
},
FROM
public.entities
WHERE
id = $id
FOR INSERT INTO
public.entities