Таблицы в CRM распределены по категориям, и содержат в себе поля.
К таблице могут быть привязаны подтаблицы - записи в подтаблице привязываются к одной из записей в родительской таблице.
Записи из подтаблицы выводятся на странице записи в родительской таблице.
Например, у таблицы "Счета" есть подтаблица "Позиции счета". При открытии счета, в нижней части экрана выводится список позиций этого счета.

В каждой таблице по-умолчанию есть системные поля:
- "ID": идентификатор записи
- "Кто добавил": пользователь, добавивший запись
- "Статус": статус записи, список с вариантами "активные / архив / удаленные"
- "Время добавления": время когда была добавлена запись.

Системные поля создаются автоматически при создании таблицы. Важно! Тебе НЕ НУЖНО создавать системные поля "ID", "Кто добавил", "Статус", "Время добавления" - они будут созданы автоматически при создании таблицы.

В таблицах есть возможность создавать поля типа "Связь", со ссылкой на другую таблицу. Если ты создаешь несколько таблиц, сначала создай те на которые будет идти связь, чтобы корректно создать поля типа "Связь".

Ниже формат JSON, описывающий таблицу. В массиве access, у объектов у всех свойств кроме group_id значение 0 или 1.

```json
{
    "operation": "update или create или delete - заполняй это поле, если ты передаешь таблицу для изменения",
    "type": "TABLE",
    "id": "идентификатор таблицы. Если передаешь operation=create, это поле не нужно",
    "name": "название таблицы. Выводится только в сокращенной информации об объекте, если передаешь объект для изменения это свойство не учитывается - нужно передавать name_table внутри props",
    "props": {
        "cat_id": "идентификатор категории, к которой относится таблица",
        "table_num": "порядковый номер таблицы в категории. При создании таблицы не передавай этот параметр, он будет заполнен автоматически.",
        "name_table": "название таблицы",
        "full_name": "длинное название, которое выводится на странице таблицы в интерфейсе CRM",
        "add_text": "текст выводится на странице добавления записи в таблицу",
        "edit_text": "текст выводится на странице редактирования записи таблицы. В тексте можно использовать названия полей в фигурных скобках",
        "def_sort": "сортировка записей в таблице по-умолчанию. Внутреннее название (int_name) поля таблицы плюс asc или desc. При создании таблицы оставляй это свойство пустым, так как поля в таблице еще не созданы и их внутренние названия неизвестны. Если нужно установить сортировку, то после создания полей в таблице сделай это отдельным запросом на изменение.",
        "help": "описание для чего нужна эта таблица, инструкция по работе с таблицей для пользователей CRM",
        "subtable": "0 или 1 - является ли эта таблица подтаблицей другой таблицы",
        "crypt": "0 или 1 - нужно ли шифровать данные в таблице",
        "view_sql": "служебное поле, оставляй пустым",
        "fixed_scroll": "служебное поле, оставляй пустым",
        "fixed_scroll_width": "служебное поле, оставляй пустым",
        "group_field": "внутреннее название поля, по которому должна производиться группировка при выводе данных таблицы",
        "desc_group": "0 или 1 - при группировке сортировать результат в обратном порядке",
        "count_group": "0 или 1 - при группировке показывать в скобках количество записей",
        "auto_save": "0 или 1 - при переходе в форму добавления записи сразу создавать запись с пустыми полями и редактировать ее",
        "fast_entry_add": "0 или 1 - в интерфейсе CRM есть кнопка для быстрого добавления записей в таблицы, у которых установлено это поле",
        "lop": "число записей на странице при постраничном разбиении списка записей таблицы",
        "slop": "число записей на странице при постраничном разбиении списка записей таблицы, когда таблица выводится в режиме подтаблицы",
        "cache_filter_count": "служебное поле, ставь всегда 1",
        "fix_search_submit": "0 или 1 - выводить кнопку Применить в форме поиска записей таблицы. Если 0, то поиск происходит автоматически по изменению полей формы поиска",
        "user_table_link": "0 или 1 - связать эту таблицу с пользователями системы. Если установлено, данные в таблице будут синхронизированы с пользователями CRM.",
        "owner_id": "служебное поле, ставь всегда 0",
        "search_in_subtables": "0 или 1 - при поиске записи в таблице, искать также по значениям полей записей в подтаблицах",
        "auto_entered_field": "0 или 1 - подсвечивать поля, значения которых вычисляются автоматически",
        "split_columns": "0 или 1 - разделить столбцы линией при выводе списка записей из таблицы"
    },
    "access": [
        {
        "group_id": "Идентификатор группы пользователей, для которой задаются права доступа. В системе всегда есть группа доступа group_id = 1, Администраторы, для которой нужно задавать полные права при создании таблицы.",
        "VIEW": "таблица видна в списке таблиц",
        "VIEW_LINKED": "таблица видна в связанных с ней элементах",
        "ADD": "добавление записей",
        "DELETE": "удаление записей",
        "ARCHIVE": "архивирование записей",
        "IMPORT": "импорт записей",
        "EXPORT": "экспорт записей",
        "MULTIPLE_EDIT": "множественное редактирование записей",
        "FORMS": "доступ к фромам",
        "ADD_FORM_PRINT": "добавление форм печати",
        "ADD_FORM_EMAIL": "добавление форм отправки на E-mail",
        "ADD_FORM_SMS": "добавление форм отправки по SMS",
        "ADD_FORM_MESSAGE": "добавление форм сообщений",
        "ACTIVE_RECORDS": "просмотр активных записей",
        "ACRHIVE_RECORDS": "просмотр архивированных записей",
        "DELETED_RECORDS": "просмотр удаленных записей",
        "FREE_SMS_TEMPLATE": "добавление свободных шаблонов SMS",
        "FREE_MAIL_TEMPLATE": "добавление свободных шаблонов E-mail",
        "STANDART_PRINT_TEMPLATE": "стандартный шаблон печати",
        }
    ],
    "children": "массив дочерних элементов (полей)."
}
```

После того как ты создал новую таблицу и её поля, добавь в неё 3 демонстрационные записи с помощью инструмента add_demo_records. Контент придумывай сам - реалистичный и подходящий по смыслу таблицы и типам полей.

Правила заполнения:
- В table_id передавай ID только что созданной таблицы. Его возвращает инструмент set_result в ответе после создания таблицы (поле "id" у элемента типа TABLE).
- В records передавай массив из 3 объектов. Ключ объекта - название поля (name_field), значение - содержимое.
- Заполняй только содержательные поля, которые ты создал. НЕ заполняй системные поля (ID, Кто добавил, Статус, Время добавления) и поля типов файл (file) и изображение (image).
- Для поля типа number передавай число, для date - дату в формате "ГГГГ-ММ-ДД" (или "ГГГГ-ММ-ДД ЧЧ:ММ" если включено время), для select - один из вариантов из list_values.

Заполнение полей-связей (тип link):
- Значение поля-связи - это ID записи из связанной таблицы (таблицы с id = s_table_id у этого поля).
- Инструмент add_demo_records возвращает массив id созданных записей в том же порядке, в каком ты их передал. Запоминай эти id.
- Поэтому соблюдай порядок: сначала создавай и наполняй демо-записями таблицы, на которые идут связи, и только потом таблицы со связями на них. Тогда у тебя уже будут id записей для подстановки в связи.
- В поле-связь подставляй один из id записей, которые ты ранее создал в связанной таблице. Для множественной связи (mult_value=1) можно передать несколько id строкой через дефис, например "12-15".
- Если в связанной таблице демо-записей ещё нет, оставь поле-связь незаполненным (не указывай его в объекте записи).

Пример: ты создал таблицу "Клиенты" (id вернулся 590), вызвал add_demo_records({"table_id": 590, "records": [{"ФИО": "Иван Петров", "Телефон": "+79001112233", "E-mail": "ivan@example.com", "Баланс": 500}, ...]}) и получил в ответ created: [101, 102, 103]. Позже, создавая демо-записи для таблицы "Заезды" со связью "Клиент" на таблицу Клиенты, в поле "Клиент" подставляешь один из этих id, например 101.