Блог Горошко Андрея Bitrix24,SQL Создать датасет biconnector.dataset.add

Создать датасет biconnector.dataset.add

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Создать датасет biconnector.dataset.add», проанализируем лучшие практики и покажем, как правильно использовать biconnector.dataset.add в реальных задачах.

Создать датасет biconnector.dataset.add

> Scope: biconnector
>
> Кто может выполнять метод: пользователь с доступом к разделу «Рабочее место аналитика»

Метод biconnector.dataset.add создает новый датасет, связанный с источником данных.

Параметры метода

Название
тип
Описание
fields
object
Объект, содержащий данные для создания нового датасета. Формат объекта:

{
    "field_1": "value_1",
    "field_2": "value_2",
    ...,
    "field_n": "value_n"
}

— field_n — название поля
— value_n — значение поля

Подробное описание ниже

Параметр fields {#fields}

Название
тип
Описание
name
string
Название датасета. Название должно начинаться с буквы, можно использовать только строчные латинские буквы a-z, цифры и знак _. Максимальная длина названия 230 символа
externalName
string
Название датасета во внешнем источнике, в приложении
externalCode
string
Уникальный код датасета во внешнем источнике, используется при выборке данных
sourceId
integer
Идентификатор источника, можно получить методами biconnector.source.list или biconnector.source.add
description
string
Описание датасета
fields
array
Список полей датасета, (Подробное описание)

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{
        "fields": {
            "sourceId": 3,
            "name": "rest_dataset",
            "externalName": "extranalName",
            "externalCode": "extrnalCode",
            "description": "Описание датасета",
            "fields": [
                { "type": "int", "name": "ID", "externalCode": "ID" },
                { "type": "string", "name": "NAME", "externalCode": "NAME" },
                { "type": "string", "name": "SURNAME", "externalCode": "SURNAME" },
                { "type": "double", "name": "SCORE", "externalCode": "SCORE" },
                { "type": "date", "name": "DATA", "externalCode": "DATA" },
                { "type": "datetime", "name": "TIME", "externalCode": "TIME" }
            ]
        }
    }' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/biconnector.dataset.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{
        "fields": {
            "sourceId": 3,
            "name": "rest_dataset",
            "externalName": "extranalName",
            "externalCode": "extrnalCode",
            "description": "Описание датасета",
            "fields": [
                { "type": "int", "name": "ID", "externalCode": "ID" },
                { "type": "string", "name": "NAME", "externalCode": "NAME" },
                { "type": "string", "name": "SURNAME", "externalCode": "SURNAME" },
                { "type": "double", "name": "SCORE", "externalCode": "SCORE" },
                { "type": "date", "name": "DATA", "externalCode": "DATA" },
                { "type": "datetime", "name": "TIME", "externalCode": "TIME" }
            ]
        },
        "auth": "**put_access_token_here**"
    }' \
    https://**put_your_bitrix24_address**/rest/biconnector.dataset.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'biconnector.dataset.add',
    		{
    			fields: {
    				"sourceId": 3,
    				"name": "rest_dataset",
    				"externalName": "extranalName",
    				"externalCode": "extrnalCode",
    				"description": "Описание датасета",
    				"fields": [
    					{ "type": "int", "name": "ID", "externalCode": "ID" },
    					{ "type": "string", "name": "NAME", "externalCode": "NAME" },
    					{ "type": "string", "name": "SURNAME", "externalCode": "SURNAME" },
    					{ "type": "double", "name": "SCORE", "externalCode": "SCORE" },
    					{ "type": "date", "name": "DATA", "externalCode": "DATA" },
    					{ "type": "datetime", "name": "TIME", "externalCode": "TIME" }
    				]
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	result.error()
    		? console.error(result.error())
    		: console.info(result);
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'biconnector.dataset.add',
                [
                    'fields' => [
                        'sourceId'      => 3,
                        'name'          => 'rest_dataset',
                        'externalName'  => 'extranalName',
                        'externalCode'  => 'extrnalCode',
                        'description'   => 'Описание датасета',
                        'fields'        => [
                            ['type' => 'int', 'name' => 'ID', 'externalCode' => 'ID'],
                            ['type' => 'string', 'name' => 'NAME', 'externalCode' => 'NAME'],
                            ['type' => 'string', 'name' => 'SURNAME', 'externalCode' => 'SURNAME'],
                            ['type' => 'double', 'name' => 'SCORE', 'externalCode' => 'SCORE'],
                            ['type' => 'date', 'name' => 'DATA', 'externalCode' => 'DATA'],
                            ['type' => 'datetime', 'name' => 'TIME', 'externalCode' => 'TIME'],
                        ],
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        if ($result->error()) {
            error_log($result->error());
            echo 'Error: ' . $result->error();
        } else {
            echo 'Success: ' . print_r($result->data(), true);
        }
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding dataset: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'biconnector.dataset.add',
        {
            fields: {
                "sourceId": 3,
                "name": "rest_dataset",
                "externalName": "extranalName",
                "externalCode": "extrnalCode",
                "description": "Описание датасета",
                "fields": [
                    { "type": "int", "name": "ID", "externalCode": "ID" },
                    { "type": "string", "name": "NAME", "externalCode": "NAME" },
                    { "type": "string", "name": "SURNAME", "externalCode": "SURNAME" },
                    { "type": "double", "name": "SCORE", "externalCode": "SCORE" },
                    { "type": "date", "name": "DATA", "externalCode": "DATA" },
                    { "type": "datetime", "name": "TIME", "externalCode": "TIME" }
                ]
            }
        },
        (result) => {
            result.error()
                ? console.error(result.error())
                : console.info(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'biconnector.dataset.add',
        [
            'fields' => [
                'sourceId' => 3,
                'name' => 'rest_dataset',
                'externalName' => 'extranalName',
                'externalCode' => 'extrnalCode',
                'description' => 'Описание датасета',
                'fields' => [
                    [ 'type' => 'int', 'name' => 'ID', 'externalCode' => 'ID' ],
                    [ 'type' => 'string', 'name' => 'NAME', 'externalCode' => 'NAME' ],
                    [ 'type' => 'string', 'name' => 'SURNAME', 'externalCode' => 'SURNAME' ],
                    [ 'type' => 'double', 'name' => 'SCORE', 'externalCode' => 'SCORE' ],
                    [ 'type' => 'date', 'name' => 'DATA', 'externalCode' => 'DATA' ],
                    [ 'type' => 'datetime', 'name' => 'TIME', 'externalCode' => 'TIME' ]
                ]
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
      "id": 10
    },
    "time": {
        "start": 1725013197.635808,
        "finish": 1725013198.580873,
        "duration": 0.9450650215148926,
        "processing": 0.6822988986968994,
        "date_start": "2024-08-30T12:19:57+02:00",
        "date_finish": "2024-08-30T12:19:58+02:00",
        "operating": 0
    }
}

Возвращаемые данные

Название
тип
Описание
result
integer
Корневой элемент ответа, содержит идентификатор созданного датасета
time
time
Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 200

{
    "error": "VALIDATION_FIELDS_NOT_PROVIDED",
    "error_description": "Fields not provided."
}

Возможные коды ошибок

КодОписаниеЗначение
VALIDATION_FIELDS_NOT_PROVIDEDFields not provided.Поля не переданы в запросе
VALIDATION_UNKNOWN_PARAMETERSUnknown parameters: #LIST_OF_PARAMS#Обнаружены неизвестные параметры: перечень
VALIDATION_REQUIRED_FIELD_MISSINGField «#TITLE#» is required.Обязательное поле #TITLE# не передано
VALIDATION_READ_ONLY_FIELDField «#TITLE#» is read only.Поле #TITLE# доступно только для чтения и не может быть изменено
VALIDATION_IMMUTABLE_FIELDField «#TITLE#» is immutable.Поле #TITLE# неизменяемое
VALIDATION_INVALID_FIELD_TYPEField «#TITLE#» must be of type #TYPE#.Поле #TITLE# должно быть типа #TYPE#
SOURCE_NOT_FOUNDSource was not found.Источник не найден
DATASET_ALREADY_EXISTDataset with this name already exists.Датасет с таким именем уже существует
VALIDATION_DATASET_NAME_INVALIDDataset name has to start with a lowercase Latin character. Possible entry includes lowercase Latin characters (a-z), numbers (0-9) and underscores.Неправильный формат названия датасета. Название должно начинаться с буквы, можно использовать только строчные латинские буквы (a-z), цифры и знак _
VALIDATION_DATASET_NAME_TOO_LONGDataset name must not exceed 230 characters.Название датасета не должно превышать 230 символов
VALIDATION_DUPLICATE_FIELD_CODEDuplicate values found in the «code» parameter: #LIST_CODES#Обнаружены дубликаты в параметре externalCode полей датасета
VALIDATION_DUPLICATE_FIELD_NAMEDuplicate values found in the «name» parameter: #LIST_NAMES#Обнаружены дубликаты в параметре name полей датасета
VALIDATION_FIELD_MISSING_REQUIRED_PARAMETERSField must include the required parameters: «name», «externalCode» and «type».Поле должно включать параметры name, externalCode и type
VALIDATION_FIELD_NAME_INVALID_FORMATField «name» has to start with an uppercase Latin character. Possible entry includes uppercase Latin characters (A-Z), numbers (0-9) and underscores.Неправильный формат названия поля. Название должно начинаться с буквы, можно использовать только заглавные латинские буквы (A-Z), цифры и знак _
VALIDATION_FIELD_NAME_TOO_LONGField «name» must not exceed 32 characters.Название поля не должно превышать 32 символов
VALIDATION_FIELD_INVALID_TYPEInvalid field type.Некорректный тип поля
-Error adding datasetОшибка добавления датасета
  • [](./biconnector-dataset-fields)
  • [](./biconnector-dataset-update)
  • [](./biconnector-dataset-fields-update)
  • [](./biconnector-dataset-get)
  • [](./biconnector-dataset-list)
  • [](./biconnector-dataset-delete)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Создать датасет biconnector.dataset.add» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

При инициализации звонка OnVoximplantCallInitПри инициализации звонка OnVoximplantCallInit

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «При инициализации звонка OnVoximplantCallInit». Вы узнаете экспертные методики работы с инициализации звонка и

Удалить перевод названия типа цены catalog.priceTypeLang.deleteУдалить перевод названия типа цены catalog.priceTypeLang.delete

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Удалить перевод названия типа цены catalog.priceTypeLang.delete», разберем архитектурные

Получить список статусов обзвона crm.calllist.statuslistПолучить список статусов обзвона crm.calllist.statuslist

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить список статусов обзвона crm.calllist.statuslist». Вы узнаете экспертные методики работы с crm.calllist.statuslist и