Блог Горошко Андрея Bitrix24,PHP Добавить свойство товаров crm.product.property.add

Добавить свойство товаров crm.product.property.add

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Добавить свойство товаров crm.product.property.add». Вы узнаете экспертные методики работы с crm.product.property.add и научитесь избегать типичных ошибок начинающих разработчиков.

Добавить свойство товаров crm.product.property.add

> Scope: crm
>
> Кто может выполнять метод: администратор, пользователь с правом «Разрешить изменять настройки» в CRM

Метод crm.product.property.add продолжает работать, но у него есть более актуальный аналог catalog.productProperty.add.

Метод crm.product.property.add создает новое свойство товара.

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

Название
тип
Описание
fields
array
Значения полей для создания свойства товара.

Чтобы узнать требуемый формат полей, выполните метод crm.product.property.fields и посмотрите формат пришедших значений этих полей

Примеры кода

Пример 1

  • JS
    try
    {
        const getCatalogId = async () =>
        {
            try
            {
                const catalogListResponse = await $b24.callMethod(
                    "crm.catalog.list",
                    {filter: {"ORIGINATOR_ID": "", "ORIGIN_ID": ""}}
                );
    
                if (catalogListResponse.error())
                {
                    console.error(catalogListResponse.error());
                }
                else
                {
                    let catalogId = 0;
                    if (catalogListResponse.total() !== 1)
                    {
                        catalogId = 0;
                    }
                    else
                    {
                        const data = catalogListResponse.getData().result;
                        if (data && data instanceof Array && typeof(data[0]) === "object" && data[0]["ID"])
                        {
                            catalogId = parseInt(data[0]["ID"]);
                        }
                    }
                    if (catalogId <= 0)
                    {
                        console.error("Не удалось получить идентификатор товарного каталога CRM");
                    }
                    else
                    {
                        await addPropertyExample(catalogId);
                    }
                }
            }
            catch (error)
            {
                console.error(error);
            }
        };
    
        const addPropertyExample = async (catalogId) =>
        {
            try
            {
                const propertyAddResponse = await $b24.callMethod(
                    "crm.product.property.add",
                    {
                        fields: {
                            "ACTIVE": "Y",
                            "IBLOCK_ID": catalogId,
                            "NAME": "Свойство - HTML/текст",
                            "SORT": 500,
                            "DEFAULT_VALUE": {
                                "TYPE": "html",
                                "TEXT": "<u><b>Вкусные</b> \"<span style=\"color: #00a650;\">африканские бананы</span>\"</u>"
                            },
                            "USER_TYPE_SETTINGS": {
                                "HEIGHT": 300
                            },
                            "USER_TYPE": "HTML",
                            "PROPERTY_TYPE": "S"
                        }
                    }
                );
    
                const result = propertyAddResponse.getData().result;
                console.dir(result);
            }
            catch (error)
            {
                console.error(error);
            }
        };
    
        const start = async () =>
        {
            await getCatalogId();
        };
    
        start();
    }
    catch (error)
    {
        console.error(error);
    }
  • PHP
    try {
        $responseCatalog = $b24Service
            ->core
            ->call(
                'crm.catalog.list',
                [
                    'filter' => ['ORIGINATOR_ID' => '', 'ORIGIN_ID' => ''],
                ]
            );
    
        $catalogId = 0;
        $resultCatalog = $responseCatalog
            ->getResponseData()
            ->getResult();
    
        if ($resultCatalog->total() !== 1) {
            $catalogId = 0;
        } else {
            $data = $resultCatalog->data();
            if ($data && is_array($data) && is_object($data[0]) && isset($data[0]["ID"])) {
                $catalogId = (int)$data[0]["ID"];
            }
        }
    
        if ($catalogId <= 0) {
            throw new Exception("Не удалось получить идентификатор товарного каталога CRM");
        } else {
            $responseProperty = $b24Service
                ->core
                ->call(
                    'crm.product.property.add',
                    [
                        'fields' => [
                            'ACTIVE'          => 'Y',
                            'IBLOCK_ID'       => $catalogId,
                            'NAME'            => 'Свойство - HTML/текст',
                            'SORT'            => 500,
                            'DEFAULT_VALUE'   => [
                                'TYPE' => 'html',
                                'TEXT' => '<u><b>Вкусные</b> "<span style="color: #00a650;">африканские бананы</span>"</u>',
                            ],
                            'USER_TYPE_SETTINGS' => [
                                'HEIGHT' => 300,
                            ],
                            'USER_TYPE'       => 'HTML',
                            'PROPERTY_TYPE'   => 'S',
                        ],
                    ]
                );
    
            $resultProperty = $responseProperty
                ->getResponseData()
                ->getResult();
    
            echo 'Success: ' . print_r($resultProperty, true);
            // Нужная вам логика обработки данных
            processData($resultProperty);
        }
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding product property: ' . $e->getMessage();
    }
  • BX24.js
    // Создание свойства пользовательского типа S:HTML
    function addPropertyExample(catalogId)
    {
        BX24.callMethod(
            "crm.product.property.add",
            {
                fields: {
                    "ACTIVE": "Y",
                    "IBLOCK_ID": catalogId,
                    "NAME": "Свойство - HTML/текст",
                    "SORT": 500,
                    "DEFAULT_VALUE": {
                        "TYPE": "html",
                        "TEXT": "<u><b>Вкусные</b> \"<span style=\"color: #00a650;\">африканские бананы</span>\"</u>"
                    },
                    "USER_TYPE_SETTINGS": {
                        "HEIGHT": 300
                    },
                    "USER_TYPE": "HTML",
                    "PROPERTY_TYPE": "S"
                }
            },
            function(result)
            {
                if(result.error())
                    console.error(result.error());
                else
                    console.dir(result.data());
            }
        );
    }

    function getCatalogId()
    {
        BX24.callMethod(
            "crm.catalog.list",
            {filter: {"ORIGINATOR_ID": "", "ORIGIN_ID": ""}},
            function(result)
            {
                if(result.error())
                {
                    console.error(result.error());
                }
                else
                {
                    var catalogId = 0;
                    if (result.total() !== 1)
                    {
                        catalogId = 0
                    }
                    else
                    {
                        data = result.data();
                        if (data && data instanceof Array && typeof(data[0]) === "object" && data[0]["ID"])
                        {
                            catalogId = parseInt(data[0]["ID"]);
                        }
                    }
                    if (catalogId <= 0)
                    {
                        console.error("Не удалось получить идентификатор товарного каталога CRM");
                    }
                    else
                    {
                        addPropertyExample(catalogId);
                    }
                }
            }
        );
    }

    function start()
    {
        getCatalogId();
    }

    start();
  • PHP CRest
    require_once('crest.php');

    // Function to add a custom property
    function addPropertyExample($catalogId) {
        $result = CRest::call(
            'crm.product.property.add',
            [
                'fields' => [
                    'ACTIVE' => 'Y',
                    'IBLOCK_ID' => $catalogId,
                    'NAME' => 'Свойство - HTML/текст',
                    'SORT' => 500,
                    'DEFAULT_VALUE' => [
                        'TYPE' => 'html',
                        'TEXT' => '<u><b>Вкусные</b> "<span style="color: #00a650;">африканские бананы</span>"</u>'
                    ],
                    'USER_TYPE_SETTINGS' => [
                        'HEIGHT' => 300
                    ],
                    'USER_TYPE' => 'HTML',
                    'PROPERTY_TYPE' => 'S'
                ]
            ]
        );

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

    // Function to get catalog ID
    function getCatalogId() {
        $result = CRest::call(
            'crm.catalog.list',
            ['filter' => ['ORIGINATOR_ID' => '', 'ORIGIN_ID' => '']]
        );

        if ($result['error']) {
            echo 'Error: ' . $result['error_description'];
        } else {
            $catalogId = 0;
            if ($result['total'] !== 1) {
                $catalogId = 0;
            } else {
                $data = $result['result'];
                if ($data && is_array($data) && isset($data[0]['ID'])) {
                    $catalogId = intval($data[0]['ID']);
                }
            }
            if ($catalogId <= 0) {
                echo "Не удалось получить идентификатор товарного каталога CRM";
            } else {
                addPropertyExample($catalogId);
            }
        }
    }

    // Start the process
    getCatalogId();

Пример 2

  • JS
    try
    {
        const getCatalogId = async () =>
        {
            try
            {
                const response = await $b24.callMethod(
                    "crm.catalog.list",
                    {filter: {"ORIGINATOR_ID": "", "ORIGIN_ID": ""}}
                );
    
                if(response.error())
                {
                    console.error(response.error());
                }
                else
                {
                    let catalogId = 0;
                    if (response.total() !== 1)
                    {
                        catalogId = 0;
                    }
                    else
                    {
                        const data = response.getData().result;
                        if (data && data instanceof Array && typeof(data[0]) === "object" && data[0]["ID"])
                        {
                            catalogId = parseInt(data[0]["ID"]);
                        }
                    }
                    if (catalogId <= 0)
                    {
                        console.error("Не удалось получить идентификатор товарного каталога CRM");
                    }
                    else
                    {
                        await addPropertyExample(catalogId);
                    }
                }
            }
            catch(error)
            {
                console.error(error);
            }
        };
    
        const addPropertyExample = async (catalogId) =>
        {
            try
            {
                const response = await $b24.callMethod(
                    "crm.product.property.add",
                    {
                        fields: {
                            "ACTIVE": "Y",
                            "IBLOCK_ID": catalogId,
                            "NAME": "Свойство - Список",
                            "SORT": 510,
                            "MULTIPLE": "Y",
                            "ROW_COUNT": 7,
                            "LIST_TYPE": "L",
                            "PROPERTY_TYPE": "L",
                            "VALUES": {
                                "n0": {
                                    "ID": "n0",
                                    "VALUE": "Значение списка 1",
                                    "SORT": 100,
                                    "DEF": "Y"
                                },
                                "n1": {
                                    "ID": "n1",
                                    "VALUE": "Значение списка 2",
                                    "SORT": 200,
                                    "DEF": "N"
                                },
                                "n2": {
                                    "ID": "n2",
                                    "VALUE": "Значение списка 3",
                                    "SORT": 300,
                                    "DEF": "Y"
                                },
                                "n3": {
                                    "ID": "n3",
                                    "VALUE": "Значение списка 4",
                                    "SORT": 400,
                                    "DEF": "N"
                                },
                                "n4": {
                                    "ID": "n4",
                                    "VALUE": "Значение списка 5",
                                    "SORT": 500,
                                    "DEF": "N"
                                },
                                "n5": {
                                    "ID": "n5",
                                    "VALUE": "Значение списка 6",
                                    "SORT": 600,
                                    "DEF": "N"
                                },
                                "n6": {
                                    "ID": "n6",
                                    "VALUE": "Значение списка 7",
                                    "SORT": 700,
                                    "DEF": "N"
                                },
                                "n7": {
                                    "ID": "n7",
                                    "VALUE": "Значение списка 8",
                                    "SORT": 800,
                                    "DEF": "N"
                                }
                            }
                        }
                    }
                );
    
                console.dir(response.getData().result);
            }
            catch(error)
            {
                console.error(error);
            }
        };
    
        const start = async () =>
        {
            await getCatalogId();
        };
    
        start();
    }
    catch(error)
    {
        console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.catalog.list',
                [
                    'filter' => ['ORIGINATOR_ID' => '', 'ORIGIN_ID' => ''],
                ]
            );
    
        if ($response->getError()) {
            error_log($response->getError());
            echo 'Error getting catalog list: ' . $response->getError();
        } else {
            $catalogId = 0;
            $result = $response->getResponseData()->getResult();
    
            if ($result->total() !== 1) {
                $catalogId = 0;
            } else {
                $data = $result->getData();
                if ($data && is_array($data) && is_object($data[0]) && isset($data[0]["ID"])) {
                    $catalogId = (int)$data[0]["ID"];
                }
            }
    
            if ($catalogId <= 0) {
                error_log("Не удалось получить идентификатор товарного каталога CRM");
                echo "Не удалось получить идентификатор товарного каталога CRM";
            } else {
                $response = $b24Service
                    ->core
                    ->call(
                        'crm.product.property.add',
                        [
                            'fields' => [
                                'ACTIVE'       => 'Y',
                                'IBLOCK_ID'    => $catalogId,
                                'NAME'         => 'Свойство - Список',
                                'SORT'         => 510,
                                'MULTIPLE'     => 'Y',
                                'ROW_COUNT'    => 7,
                                'LIST_TYPE'    => 'L',
                                'PROPERTY_TYPE' => 'L',
                                'VALUES'       => [
                                    'n0' => [
                                        'ID'    => 'n0',
                                        'VALUE' => 'Значение списка 1',
                                        'SORT'  => 100,
                                        'DEF'   => 'Y',
                                    ],
                                    'n1' => [
                                        'ID'    => 'n1',
                                        'VALUE' => 'Значение списка 2',
                                        'SORT'  => 200,
                                        'DEF'   => 'N',
                                    ],
                                    'n2' => [
                                        'ID'    => 'n2',
                                        'VALUE' => 'Значение списка 3',
                                        'SORT'  => 300,
                                        'DEF'   => 'Y',
                                    ],
                                    'n3' => [
                                        'ID'    => 'n3',
                                        'VALUE' => 'Значение списка 4',
                                        'SORT'  => 400,
                                        'DEF'   => 'N',
                                    ],
                                    'n4' => [
                                        'ID'    => 'n4',
                                        'VALUE' => 'Значение списка 5',
                                        'SORT'  => 500,
                                        'DEF'   => 'N',
                                    ],
                                    'n5' => [
                                        'ID'    => 'n5',
                                        'VALUE' => 'Значение списка 6',
                                        'SORT'  => 600,
                                        'DEF'   => 'N',
                                    ],
                                    'n6' => [
                                        'ID'    => 'n6',
                                        'VALUE' => 'Значение списка 7',
                                        'SORT'  => 700,
                                        'DEF'   => 'N',
                                    ],
                                    'n7' => [
                                        'ID'    => 'n7',
                                        'VALUE' => 'Значение списка 8',
                                        'SORT'  => 800,
                                        'DEF'   => 'N',
                                    ],
                                ],
                            ],
                        ]
                    );
    
                $result = $response->getResponseData()->getResult();
                echo 'Success: ' . print_r($result, true);
            }
        }
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error: ' . $e->getMessage();
    }
  • BX24.js
    function addPropertyExample(catalogId)
    {
        BX24.callMethod(
            "crm.product.property.add",
            {
                fields: {
                    "ACTIVE": "Y",
                    "IBLOCK_ID": catalogId,
                    "NAME": "Свойство - Список",
                    "SORT": 510,
                    "MULTIPLE": "Y",
                    "ROW_COUNT": 7,
                    "LIST_TYPE": "L",
                    "PROPERTY_TYPE": "L",
                    "VALUES": {
                        "n0": {
                            "ID": "n0",
                            "VALUE": "Значение списка 1",
                            "SORT": 100,
                            "DEF": "Y"
                        },
                        "n1": {
                            "ID": "n1",
                            "VALUE": "Значение списка 2",
                            "SORT": 200,
                            "DEF": "N"
                        },
                        "n2": {
                            "ID": "n2",
                            "VALUE": "Значение списка 3",
                            "SORT": 300,
                            "DEF": "Y"
                        },
                        "n3": {
                            "ID": "n3",
                            "VALUE": "Значение списка 4",
                            "SORT": 400,
                            "DEF": "N"
                        },
                        "n4": {
                            "ID": "n4",
                            "VALUE": "Значение списка 5",
                            "SORT": 500,
                            "DEF": "N"
                        },
                        "n5": {
                            "ID": "n5",
                            "VALUE": "Значение списка 6",
                            "SORT": 600,
                            "DEF": "N"
                        },
                        "n6": {
                            "ID": "n6",
                            "VALUE": "Значение списка 7",
                            "SORT": 700,
                            "DEF": "N"
                        },
                        "n7": {
                            "ID": "n7",
                            "VALUE": "Значение списка 8",
                            "SORT": 800,
                            "DEF": "N"
                        }
                    }
                }
            },
            function(result)
            {
                if(result.error())
                    console.error(result.error());
                else
                    console.dir(result.data());
            }
        );
    }

    function getCatalogId()
    {
        BX24.callMethod(
            "crm.catalog.list",
            {filter: {"ORIGINATOR_ID": "", "ORIGIN_ID": ""}},
            function(result)
            {
                if(result.error())
                {
                    console.error(result.error());
                }
                else
                {
                    var catalogId = 0;
                    if (result.total() !== 1)
                    {
                        catalogId = 0
                    }
                    else
                    {
                        data = result.data();
                        if (data && data instanceof Array && typeof(data[0]) === "object" && data[0]["ID"])
                        {
                            catalogId = parseInt(data[0]["ID"]);
                        }
                    }
                    if (catalogId <= 0)
                    {
                        console.error("Не удалось получить идентификатор товарного каталога CRM");
                    }
                    else
                    {
                        addPropertyExample(catalogId);
                    }
                }
            }
        );
    }

    function start()
    {
        getCatalogId();
    }

    start();
  • PHP CRest
    require_once('crest.php');

    function addPropertyExample($catalogId) {
        $result = CRest::call(
            'crm.product.property.add',
            [
                'fields' => [
                    'ACTIVE' => 'Y',
                    'IBLOCK_ID' => $catalogId,
                    'NAME' => 'Свойство - Список',
                    'SORT' => 510,
                    'MULTIPLE' => 'Y',
                    'ROW_COUNT' => 7,
                    'LIST_TYPE' => 'L',
                    'PROPERTY_TYPE' => 'L',
                    'VALUES' => [
                        'n0' => [
                            'ID' => 'n0',
                            'VALUE' => 'Значение списка 1',
                            'SORT' => 100,
                            'DEF' => 'Y'
                        ],
                        'n1' => [
                            'ID' => 'n1',
                            'VALUE' => 'Значение списка 2',
                            'SORT' => 200,
                            'DEF' => 'N'
                        ],
                        'n2' => [
                            'ID' => 'n2',
                            'VALUE' => 'Значение списка 3',
                            'SORT' => 300,
                            'DEF' => 'Y'
                        ],
                        // Continue for other values...
                    ]
                ]
            ]
        );

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

    function getCatalogId() {
        $result = CRest::call(
            'crm.catalog.list',
            ['filter' => ['ORIGINATOR_ID' => '', 'ORIGIN_ID' => '']]
        );

        if (isset($result['error'])) {
            echo 'Error: ' . $result['error_description'];
        } else {
            $catalogId = 0;
            if (count($result['result']) !== 1) {
                echo "Не удалось получить идентификатор товарного каталога CRM";
            } else {
                $data = $result['result'];
                if (isset($data[0]['ID'])) {
                    $catalogId = intval($data[0]['ID']);
                    addPropertyExample($catalogId);
                }
            }
        }
    }

    getCatalogId();

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

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к crm.product.property.add, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Добавить свойство товаров crm.product.property.add».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

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

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

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

Related Post

Добавить контакт к сделке crm.deal.contact.addДобавить контакт к сделке crm.deal.contact.add

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

Как использовать метод SDK crm.dealcategory.get в Битрикс24Как использовать метод SDK crm.dealcategory.get в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK crm.dealcategory.get в Битрикс24», проанализируем

Как использовать метод SDK crm.lead.details.configuration.set в Битрикс24Как использовать метод SDK crm.lead.details.configuration.set в Битрикс24

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать метод SDK crm.lead.details.configuration.set в Битрикс24». Вы узнаете экспертные методики работы с