# Поля в таблицах могут быть следующих типов:
number - число
date - дата/время
text - текст
select - выбор из списка
link - связь с записью другой таблицы
file - файл
image - изображение
user - пользователь CRM
group - группа пользователей CRM
id - идентификатор записи
userid - пользователь CRM, создавший запись
status - статус записи
addtime - время добавления записи

У каждого типа поля есть свои специфические свойства.

# В каждой таблице автоматически создаются следующие системные поля с такими названиями:
"ID" - поле типа id, свойство uniq_field = 1
"Кто добавил" - поле типа userid, свойство default_value = "{current}"
"Статус" - поле типа status
"Время добавления" - поле типа addtime, свойство default_value = "{cur.time}"

ВАЖНО! Тебе не нужно создавать системные поля, они создаются автоматически.


# Формат JSON, описывающий общие для всех полей свойства. 

В массиве access, у объектов у всех свойств кроме group_id значение 0 или 1.

```json
{
    "operation": "update или create или delete - заполняй это поле, если ты передаешь поле для изменения",
    "type": "FIELD",
    "id": "идентификатор поля. Если передаешь operation=create, это поле не нужно",
    "name": "название поля. Выводится только в сокращенной информации об объекте, если передаешь объект для изменения это свойство не учитывается - нужно передавать name_field внутри props",
    "props": {
        "table_id": "идентификатор таблицы, к которой относится поле",
        "field_num": "порядковый номер поля. При создании поля не передавай этот параметр, он будет заполнен автоматически.",
        "int_name": "внутреннее название поля, которое используется при обращении к полю. При создании поля указывать это свойство не нужно.",
        "name_field": "название поля",
        "type_field": "тип поля: number, date, text и т.д.",
        "default_value": "значение поля по-умолчанию",
        "javascript": "служебное поле, заполнять не нужно",
        "help": "описание поля для пользователя CRM",
        "main": "0 или 1 - обязательное для заполнения",
        "uniq_field": "0 или 1 - значения должны быть уникальными",
        "fast_edit": "0 или 1 - значение поля можно редактировать в списке записей (а не только на странице записи)",
        "width": "число - ширина поля в пикселях, можно не указывать",
        "fix_search_on": "0 или 1 - выводить поиск по полю на фиксированной панели поиска в списке записей",
        "fix_search_mult": "0 или 1 - выводить поиск по полю на фиксированной панели поиска в списке записей в виде диапазона",
        "prefix": "текст, который будет выводиться перед значением поля",
        "postfix": "текст, который будет выводиться после значения поля",
        "owner_id": "служебное поле, ставь всегда 0",
        "last_value": "последнее значение поля, указанное в записи. При создании поля заполнять не нужно."
    },
    "access": [
        {
            "group_id": "Идентификатор группы пользователей, для которой задаются права доступа. В системе всегда есть группа доступа group_id = 1, Администраторы, для которой нужно задавать полные права при создании поля.",
            "VIEW_IN_TABLE": "Отображать значение в списке записей",
            "VIEW": "Отображать значение в режиме просмотра",
            "EDIT": "Редактировать значение при редактировании записи",
            "ADD": "Редактировать значение при добавлении записи",
            "EXPORT": "Выдавать значение при экспорте записи",
            "IMPORT": "Сохранять значение при импорте записи",
            "VIEW_IN_SUBTABLE": "Отображать значение при просмотре записей в режиме подтаблицы"
        }
    ]    
}
```

# Специфические свойства объекта props для каждого типа поля.

## Тип number
"all_dig": "число, количество знаков числа (целая и дробная части)",
"dec_dig": "число, количество знаков в дробной части числа",
"min_dig": "минимальное число выводимых цифр - если в числе меньше цифр, будет дополнено нулями слева",
"summa": "0 или 1 - при выводе списка записей таблицы внизу будет отображаться сумма по этому полю",
"average": "0 или 1 - при выводе списка записей таблицы внизу будет отображаться среднее значение по этому полю",
"autonumber": "число, автонумерация начиная с этого числа. Если автонумерация не нужна, указываем 0"

## Тип date
"display_time": "0 или 1 - отображать время"

## Тип text
"mult_value": "0 или 1 - многострочное поле для редактирования текста",
"full_value_table": "0 или 1 - не сокращать текст при выводе значения в списке записей",
"view_html": "0 или 1 - выводить значение поля с учетом HTML-форматирования (не экранировать теги)",
"html_editor": "0 или 1 - выводить для редактирования визуальный HTML-редактор",
"hyperlink": "0 или 1 - выводить содержимое поля как гиперссылку (предполагается что значение поля содержит URL, на который будет вести ссылка)",
"extra_large_size": "0 или 1 - использовать формат хранения для очень больших текстов",
"template": "маска ввода для значения поля, задается в формате КБ",
"split_templ_mask": "служебное поле, оставляем пустым"

## Тип select
"list_values": "массив, варианты для выбора",
"mult_value": "0 или 1 - возможность выбрать несколько вариантов",

## Тип link
"s_table_id": "число, идентификатор таблицы к которой привязано поле (запись из которой будет привязана к записи)",
"s_field_id": "число, идентификатор поля в привязанной таблице, значение которого будет выводиться в качестве значения поля. При создании поля, выбирай для этого свойства поля привязанной таблицы с осмысленным содержимым (Название, Описание, и т.п.). Не используй здесь поле 'ID'.",
"mult_value": "0 или 1 - возможность привязать несколько записей",
"s_filter_id": "служебное поле, оставляем пустым",
"links_also_show":  "массив, идентификаторы дополнительных полей связанной таблицы, значения которых будут выводиться рядом со значением поля",
"s_show_field_name": "0 или 1, выводить названия дополнительных полей рядом со значениями",
"s_show_field_inline": "0 или 1, выводить дополнительные поля в одну строку",
"links_also_show_ico": "число, идентификатор поля типа image из привязанной таблицы, содержащего иконку для вывода в списке значений"

## Тип file
"file_types": "массив, расширения файлов разрешенных для загрузки",
"max_size": "число, максимальный размер файла в килобайтах, разрешенный для загрузки",
"show_file: "0 или 1, открывать файл в браузере а не выдавать на скачивание"

## Тип image
"img_size_x": "число, ширина превью изображения в пикселях",
"img_size_y": "число, высота превью изображения в пикселях",
"max_size": "число, максимальный размер файла в килобайтах, разрешенный для загрузки",
"orientation": "0 или 1, автоматический поворот изображения исходя из параметров файла",
"maximum_size": "число, процент качества до которого нужно сжимать изображение (от 10 до 100 с шагом 10). Оставить пустым если сжимать не нужно.",
"max_height": "число, высота до которой сжимать изображение. Оставить пустым если сжимать не нужно.",
"max_width": "число, ширина до которой сжимать изображение. Оставить пустым если сжимать не нужно.",
"not_crop_preview": "0 или 1, не обрезать превью для сохранения пропорций превью"

## Тип user
"mult_value": "0 или 1 - возможность выбрать несколько пользователей",
"groupe": "массив, идентификаторы групп из которых можно выбирать пользователей. Оставить пустым, если можно из всех групп."

## Тип group
"mult_value": "0 или 1 - возможность выбрать несколько групп",
"display_groups": "массив, идентификаторы групп которые нужно предлагать для выбора. Оставить пустым, если нужно предлагать все группы."