# Складні кейси Custom Data

Custom Data дозволяє не лише створювати прості таблиці (магазини, рейтинги, заявки), але й налаштовувати складні моделі: приховувати технічні поля, додавати валідацію, графіки, кольорову підсвітку рядків, карту або слайдер фото у модальному вікні. Ця стаття пояснює, **коли** варто використовувати такі можливості та **які кейси** вони покривають.

**Для кого:** інтегратори та адміністратори, які проектують моделі під складні бізнес-процеси.

---

## Коли потрібні складні налаштування

**Прості моделі** — достатньо базових типів полів (текст, число, дата, зв'язок). Приклади: список магазинів, C-SAT після діалогу, заявки на зворотний дзвінок.

**Складні моделі** — потрібні додаткові опції, якщо:

- Є технічні поля, які не повинні засмічувати таблицю або бути видимими операторам
- Потрібна валідація (обов'язкові поля, формат email, умовна доступність полів)
- Потрібні графіки (кількість заявок по статусах, сума продажів по категоріях)
- Потрібна візуалізація: карта, слайдер фото, кольорова підсвітка рядків за статусом
- Потрібні підсумки в таблиці або завантаження файлів
- Потрібно запускати процеси сценарію бота прямо з таблиці (макроси) — наприклад, відправити нагадування клієнту

---

## Типові складні кейси

### 1. Приховати технічні поля

**Кейс:** Модель інтегрується з зовнішньою системою. Поле `external_system_id` потрібне для синхронізації, але операторам воно не потрібно.

**Рішення:** `hidden_all` — поле приховане скрізь (таблиця, модальне вікно, фільтри).

**Інший варіант:** `hidden_in_table` — колонка прихована у виборі колонок, але користувач може увімкнути її для експорту.

---

### 2. Валідація та умовна доступність

**Кейс:** Модель «Зміни» — час закінчення недоступний, поки не вказано час початку. Email обов'язковий і має бути валідним.

**Рішення:** `rules: ["required", "email"]` для email; `validate.required_field_empty` для часу закінчення — поле активне тільки якщо заповнене поле «Час початку».

---

### 3. Графіки статистики

**Кейс:** Модель «Заявки» — потрібно швидко побачити, скільки заявок у кожному статусі. Модель «Продажі» — сума по менеджерах.

**Рішення:** `statistics_json` — графік «Кількість по статусах» (measure: count, group_by: status_id) або «Сума по менеджерах» (measure: sum, group_by: manager_id, sum_field: amount).

---

### 4. Кольорова підсвітка рядків

**Кейс:** Модель «Заявки» — рядки зі статусом «Прострочено» червоні, «Виконано» — зелені. Оператор швидко орієнтується в таблиці.

**Рішення:** `front_json.table_stylization.colorize` — підсвітка рядка кольором з поля статусу. Або `highlight_rules` — порівняння двох полів (наприклад, фактичний час vs плановий).

---

### 5. Модальне вікно з картою та слайдером

**Кейс:** Модель «Торгові точки» — при відкритті запису потрібна карта з адресою та слайдер фото магазину.

**Рішення:** `front_json.modal_entity` — type: MAP для карти, type: SLIDER для зображень з пов'язаної моделі.

---

### 6. Підсумки в таблиці

**Кейс:** Модель «Продажі» — внизу таблиці потрібна сума по колонці «Сума».

**Рішення:** `total_sum: true` для поля + `front_json.table_stylization.total_row`.

---

### 7. Завантаження файлів

**Кейс:** Модель «Заявки» — вкладені документи (договори, фото). Модель «Магазини» — логотип.

**Рішення:** Один файл — STRING + `edit_type: file_upload`. Кілька файлів — JSON + `file_upload: true`.

---

### 8. Запуск процесів з таблиці (макроси)

**Кейс:** Оператор бачить таблицю заявок і потребує швидко відправити клієнту нагадування або створити тикет у зовнішній системі — без переходу в інший розділ.

**Що таке макроси:** Макроси — це секції сценарію бота, позначені як процеси (is_macro). Вони з'являються у списку для вибору. У сценарії можна створити кілька макросів: «Відправити нагадування», «Створити тикет» тощо.

**Рішення:** У `front_json.macros` моделі задати `bot_id` (ID бота з макросами) та `single: true` (кнопка в кожному рядку). У таблиці з'являється кнопка-блискавка. Оператор натискає → обирає макрос зі списку → відкривається віджет з ботом, дані запису (id, поля) передаються в сценарій як контекст. Опція `multiple: true` — кнопка для масового запуску по обраних записах.

**Де налаштовувати:** Create/Update → JSON моделі → `front_json.macros`. Детальніше: [довідник розширених налаштувань](/uk/customdata/reference/advanced-model-options-reference.md).

---

## Прості vs складні моделі

| Аспект | Прості моделі | Складні моделі |
|--------|---------------|----------------|
| **Приклад** | Магазини, C-SAT, заявки | Заявки з графіками, торгові точки з картою |
| **Поля** | Базові типи (текст, число, дата, зв'язок) | + приховування, валідація, умовна доступність |
| **Таблиця** | Стандартне відображення | + зображення, посилання, підсумки, підсвітка |
| **Модальне вікно** | Стандартна форма | + карта, слайдер, графік, секції |
| **Статистика** | Немає або експорт | Графіки в інтерфейсі |
| **Дії з таблиці** | — | Макроси — кнопки запуску процесів бота |

---

## З чого почати

1. **Спочатку просте** — створіть модель з базовими полями. Переконайтеся, що структура відповідає бізнес-потребам.
2. **Потім додайте складність** — якщо потрібно приховати поля, додати валідацію або графіки, зверніться до [довідника розширених налаштувань](/uk/customdata/reference/advanced-model-options-reference.md).
3. **Ask AI (Instance Agent)** — на екрані створення моделі опишіть текстом, що потрібно (наприклад, «графік по статусах»); агент запропонує структуру через MCP. Потім уточніть опції в редакторі.

---

## Пов'язані документи

- [Довідник розширених налаштувань](/uk/customdata/reference/advanced-model-options-reference.md) — повний перелік опцій
- [Патерни та приклади Custom Data](/uk/customdata/explanation/custom-data-patterns-and-examples.md) — типові сценарії (CRUD, довідники, імпорт)
- [Що таке Custom Data](/uk/customdata/explanation/what-is-custom-data.md) — основні концепції
- [Інтегратор — Custom Data](/uk/customdata/integrator-hub.md) — навігація по всіх інструкціях
