Отображает результат как форму с блоками.
Если в результате больше одной строки, то для каждой будет отрисована своя форма.
Форма является контейнером для полей с данными, а так же для других представлений - на одной форме можно разместить несколько вложенных таблиц, канбан-досок, таймлайнов, а также добавить отображения графиков, карт и прочих компонентов с помощью 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
type
caption
control_height
form_block
visible
cell_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_buttons
create_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_save
false
@disable_auto_save = true,
export_to_csv
false
@export_to_csv = true,
Подробнее: Экспорт в csv в ozma.io
extra_actions
⚠️buttons
).help_embedded_page_name
⚠️help_page
).help_page
).help_page
funapp.embedded_pages
).@help_page = {
schema: 'admin',
name: 'help__admin__main'
},
Подробнее: Справки, туториалы и поддержка
lazy_load
требуется обновление страницы браузера после установки нового значения lazy_load
// разбивает данные на страницы по 10 записей.
@lazy_load = {
pagination: {
per_page: 10
}
}
max_width
px
), либо строкой с числом и %
. Примеры: 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_button
false
@show_argument_button = true,
Подробнее: Редактор аргументов
show_argument_editor
false
@show_argument_editor = true,
Подробнее: Редактор аргументов
title
@title = 'Сделки',
type
'type'
| 'table'
, 'form'
, 'board'
, 'menu'
, 'timeline'
, 'multiselect'
]'table'
caption
name @{
caption = 'Имя'
}
control_height
notes @{
text_type = 'multiline',
control_height = 300
},
form_block
0
status @{
form_block = 1
}
visible
default_value
позволяет задать значения по умолчанию для создаваемых строк, которые скрыты от пользователя.true
created_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_value
default
для колонки в её определении.extra_select_views
"name": 'Название действия'
.client @{
extra_select_views = [
{ name: 'Человек', new: true, ref: &crm.person_form },
{ name: 'Организация', new: true, ref: &crm.organization_form }
]
}
fraction_digits
number_format
. Указывает, сколько цифр после запятой отображать. Не работает на формах для редактируемых полей.SUM(amount) as sum_amount @{
number_format = 'ru',
fraction_difits = 2
}
link
user @{
link = &admin.user_form
}
number_format
auto
, en
, ru
int
и 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_view
value
(значения в которой равны 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_view
extra_select_views
. Кнопка для выбора связанной сущности из отображения. Удобна, когда не требуется кастомизация надписи на кнопке и кнопка только одна.client @{
select_view = {
ref: &base.client_form,
new: true,
default_values: {
is_client: true
}
}
}
show_seconds
datetime
.false
created_on @{
show_seconds = true
}
soft_disabled
true
, то ячейку нельзя редактировать.
false
orders.delivery_date @{
soft_disabled = (orders.status = 'on_delivery')
}
text_align
left
| center
| right
]right
,left
amount @{
text_align = 'left'
},
name @{
text_align = 'center'
}
text_type
actions.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