# Методы table



# table.createItem()

### Создание записи

```JavaScript
table.createItem(string $tableName, array|object $data)
```

##### Описание:

Создает запись в таблице и возвращает значение этой записи, как объект.

##### Атрибуты:

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-tab" style="border-collapse: collapse; width: 100%; height: 94.9844px;"><tbody><tr style="background-color: #ced4d9; height: 29.7969px;"><td style="width: 33.2909%; height: 29.7969px;">Имя</td><td style="width: 33.2909%; height: 29.7969px;">Тип</td><td style="width: 33.2948%; height: 29.7969px;">Описание</td></tr><tr style="height: 35.3906px;"><td style="width: 33.2909%; height: 35.3906px;">tableName

</td><td style="width: 33.2909%; height: 35.3906px;">string</td><td style="width: 33.2948%; height: 35.3906px;">Наименование таблицы, в которой будет создана запись</td></tr><tr style="height: 29.7969px;"><td style="width: 33.2909%; height: 29.7969px;">data</td><td style="width: 33.2909%; height: 29.7969px;">array | object ( json{} )</td><td style="width: 33.2948%; height: 29.7969px;">Значения | значение записи</td></tr></tbody></table>

##### Возвращает:

**ScriptCustomTableItem** - все значения полей записи в формате объекта.

##### Пример:

Добавление данных в кастомную таблицу **regions**:

```JavaScript
var region = {
  "name": "Юго-Восточный",
  "comment": "Cоздано через v8"
};
var newRegion = table.createItem('regions', region);
```

# table.find()

### Поиск записей

```JavaScript
table.find(string $tableName, array|object $columns = [], array|object $where = [], array|object $orderBy = [], ?int $limit = null, ?int $offset = null): array
```

##### Описание:

Ищет записи в таблице и возвращает их в виде массива объектов.

##### Атрибуты:

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-tab-0" style="border-collapse: collapse; width: 100%; height: 94.9844px;"><tbody><tr style="background-color: #ced4d9; height: 29.7969px;"><td style="width: 33.2909%; height: 29.7969px;">Имя</td><td style="width: 33.2909%; height: 29.7969px;">Тип</td><td style="width: 33.2948%; height: 29.7969px;">Описание</td></tr><tr><td style="width: 33.2909%;">tableName</td><td style="width: 33.2909%;">string</td><td style="width: 33.2948%;">Наименование таблицы, в которой будет найдена запись</td></tr><tr><td style="width: 33.2909%;">columns

</td><td style="width: 33.2909%;">array | object ( json{} )</td><td style="width: 33.2948%;">Столбцы которые будут возвращены в ответе. При поиске из основной таблицы указывается только наименование поля, при поиске в связанной таблице указывается в формате: **алиас.поле**. Если нужно тянуть несколько полей с одинаковыми именами, то указываем алиас результирующего поля, например: 'products.id as product\_id'</td></tr><tr><td style="width: 33.2909%;">where

</td><td style="width: 33.2909%;">array | object ( json{} )</td><td style="width: 33.2948%;">Условие, которое будет проверяться при поиске</td></tr><tr><td style="width: 33.2909%;">orderBy

</td><td style="width: 33.2909%;">array | object ( json{} )</td><td style="width: 33.2948%;">Устанавливает в какой последовательности будут возвращены выходные значения</td></tr><tr><td style="width: 33.2909%;">limit

</td><td style="width: 33.2909%;">int</td><td style="width: 33.2948%;">Устанавливает максимальное количество возвращенных значений</td></tr><tr><td style="width: 33.2909%;">offset

</td><td style="width: 33.2909%;">int</td><td style="width: 33.2948%;">Устанавливает смещение</td></tr></tbody></table>

<p class="callout warning">Чтобы обратится к display field, который автоматически тянется из RELATION в v8 необходимо указать {алиасТаблицы}\_{имяПоля}.  
Например, если в RELATION указан алиас **products** и в display field указано поле **name,** то в результирующую выборку это поле попадает под именем **products\_name**.</p>

##### Возвращает:

**array** - массив объектов (найденных записей).

##### Примеры:

Получение **всех** регионов (лимит 100):

```JavaScript
let items = table.find('regions');
let regions = [];
for(let i = 0; i < items.length; i++) { // добавление поочередно всех записей в объект regions
  let item = items[i];
  regions.push({"id": item.id, "name": item.name, "comment": item.comment}); 
}
```

Получение **трех** значений поля **region** с **id больше двух**:

```JavaScript
let columns = ['region'];
let where = [["id", ">", 2]];
let orderBy = [];
let limit = 3;
let offset = 0;

let items = table.find('regions', columns, where, orderBy, limit, offset);
```

Получение данных из связанной таблицы **leads**:


```JavaScript
let columns = ['leads.person_id'];
let where = [["leads.id", ">", 2]];

let items = table.find('orders', columns, where);

let items2 = table.find('orders')
debug(items2[0].products_name)
```

Использование оператора **IN**:

```JavaScript
 ["stage_code", "IN", ["planned", "active", "submission"]]
```

# table.count()

### Подсчет количества записей

```JavaScript
table.count(string $tableName, array|object $where = [])
```

##### Описание:

Ищет записи соответствующие условию метода в таблице и возвращает их количество.

##### Атрибуты:

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-tab-1" style="border-collapse: collapse; width: 100%; height: 106.188px;"><tbody><tr style="background-color: #ced4d9; height: 29.7969px;"><td style="width: 33.2909%; height: 29.7969px;">Имя</td><td style="width: 33.2909%; height: 29.7969px;">Тип</td><td style="width: 33.2948%; height: 29.7969px;">Описание</td></tr><tr style="height: 46.5938px;"><td style="width: 33.2909%; height: 46.5938px;">tableName</td><td style="width: 33.2909%; height: 46.5938px;">string</td><td style="width: 33.2948%; height: 46.5938px;">Наименование таблицы, в которой будет создана запись</td></tr><tr style="height: 29.7969px;"><td style="width: 33.2909%; height: 29.7969px;">where</td><td style="width: 33.2909%; height: 29.7969px;">array | object ( json{} )</td><td style="width: 33.2948%; height: 29.7969px;">Условие, которое будет проверяться при поиске</td></tr></tbody></table>

##### Возвращает:

**int** - количество записей в формате числа.

##### Примеры:

Получение количества **всех** записей в таблице:

```JavaScript
var regionsCount = table.count("regions");
memory.setAttr('regionsCount', regionsCount);
```

Получение количества записей с **id больше 2**:

```JavaScript
var countRegionIdsGreather2 = table.count("regions", [["id", ">", 2]]);
memory.setAttr('countRegionIdsGreather2', countRegionIdsGreather2);
```

# table.sum()

### Подсчет суммы по полю

```JavaScript
table.sum(string $tableName, string $column, array|object $where = [])
```

##### Описание:

Ищет записи соответствующие условию метода в таблице и возвращает сумму их значений.

##### Атрибуты:

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-tab-2" style="border-collapse: collapse; width: 100%; height: 94.9844px;"><tbody><tr style="background-color: #ced4d9; height: 29.7969px;"><td style="width: 33.3745%; height: 29.7969px;">Имя</td><td style="width: 33.3745%; height: 29.7969px;">Тип</td><td style="width: 33.3745%; height: 29.7969px;">Описание</td></tr><tr><td style="width: 33.3745%; height: 46.5938px;">tableName</td><td style="width: 33.3745%; height: 46.5938px;">string</td><td style="width: 33.3745%; height: 46.5938px;">Наименование таблицы, в которой будет создана запись</td></tr><tr><td style="width: 33.3745%;">column</td><td style="width: 33.3745%;">string</td><td style="width: 33.3745%;">Наименование поля из которого будут браться значения</td></tr><tr><td style="width: 33.3745%; height: 29.7969px;">where</td><td style="width: 33.3745%; height: 29.7969px;">array | object ( json{} )</td><td style="width: 33.3745%; height: 29.7969px;">Условие, которое будет проверяться при поиске</td></tr></tbody></table>

##### Возвращает:

**int** - сумма всех значений поля в виде числа.

##### Примеры:

Подсчет суммы **всех** значений записей поля **id** в таблице **regions:**

```JavaScript
var sumRegionIds = table.sum("regions", 'id');
memory.setAttr('sumRegionIds', sumRegionIds);
```

Подсчет суммы значений записей поля **id** в таблице **regions** с **id больше нуля**:

```JavaScript
var sumRegionIds = table.sum("regions", 'id', [["id", ">", 0]]);
memory.setAttr('sumRegionIds', sumRegionIds);
```

# table.max()

### Поиск максимального значения по полю

```
table.max(string $tableName, string $column, array|object $where = [])
```

##### Описание:

Ищет записи соответствующие условию метода в таблице и возвращает наибольшее по значению из них.

##### Атрибуты:

<table border="1" id="bkmrk-%D0%98%D0%BC%D1%8F-%D0%A2%D0%B8%D0%BF-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-tab-3" style="border-collapse: collapse; width: 100%; height: 94.9844px;"><tbody><tr style="background-color: #ced4d9; height: 29.7969px;"><td style="width: 33.3745%; height: 29.7969px;">Имя</td><td style="width: 33.3745%; height: 29.7969px;">Тип</td><td style="width: 33.3745%; height: 29.7969px;">Описание</td></tr><tr><td style="width: 33.3745%; height: 46.5938px;">tableName</td><td style="width: 33.3745%; height: 46.5938px;">string</td><td style="width: 33.3745%; height: 46.5938px;">Наименование таблицы, в которой будет создана запись</td></tr><tr><td style="width: 33.3745%;">column</td><td style="width: 33.3745%;">string</td><td style="width: 33.3745%;">Наименование поля из которого будут браться значения</td></tr><tr><td style="width: 33.3745%; height: 29.7969px;">where</td><td style="width: 33.3745%; height: 29.7969px;">array | object ( json{} )</td><td style="width: 33.3745%; height: 29.7969px;">Условие, которое будет проверяться при поиске</td></tr></tbody></table>

##### Возвращает:

**mixed** - максимальное среди всех значений поля в том же типе, что в таблице

или

**null** - если максимальное значение не было найдено.

##### Примеры:

Нахождение максимального значения в поле **id** в таблице **regions:**

```JavaScript
var maxRegionId = table.max("regions", 'id');
memory.setAttr('maxRegionId', maxRegionId);
```

Нахождение максимального значения в поле **id** в таблице **regions** с **id больше нуля**:

```JavaScript
var maxRegionId = table.max("regions", 'id', [["id", ">", 0]]);
memory.setAttr('maxRegionId', maxRegionId);
```