~2 минуты, Опубликовано 01.08.2023

Работа со свойством Битрикс D7 типа “Деньги”

Работа со свойством Битрикс D7 типа “Деньги”

Для обновления значения свойства типа “Деньги” (Money) у товара в “1С: Битрикс” (Bitrix) с использованием D7 (Data Access Layer) API, вы можете воспользоваться соответствующими методами ORM (Object-Relational Mapping). Вам нужно найти свойство товара по его коду (или ID), а затем обновить его значение.

Предположим, что у вас есть свойство типа “Деньги” с кодом “PRICE” (код может отличаться в вашем случае). Вот пример обновления значения этого свойства у товара:

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

use Bitrix\Catalog\Model\Product;
use Bitrix\Main\Loader;

// Проверяем, что модуль инфоблоков загружен
if (!Loader::includeModule('catalog')) {
    die('Модуль "catalog" не установлен');
}

$productId = 123; // ID товара, у которого нужно обновить значение свойства "PRICE"
$propertyCode = "PRICE"; // Код свойства типа "Деньги"

try {
    // Получаем объект товара по его ID
    $product = Product::getById($productId);

    if ($product) {
        // Получаем свойство товара по его коду (можно использовать также ID свойства)
        $property = $product->getPropertyByCode($propertyCode);

        if ($property) {
            // Обновляем значение свойства типа "Деньги"
            $newPriceValue = 100.50; // Новое значение цены (тип double/float)
            $property->setUserTypeSettings(array('PRECISION' => 2)); // Устанавливаем точность значения (2 знака после запятой)
            $property->setValue($newPriceValue);
            $product->save();

            echo "Значение свойства \"{$propertyCode}\" успешно обновлено для товара с ID {$productId}.";
        } else {
            echo "Свойство с кодом \"{$propertyCode}\" не найдено у товара с ID {$productId}.";
        }
    } else {
        echo "Товар с ID {$productId} не найден.";
    }
} catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

Обратите внимание, что в данном примере мы используем метод getPropertyByCode() для получения объекта свойства товара по его коду. Затем мы используем метод setValue() для установки нового значения свойства типа “Деньги”. Метод setUserTypeSettings() используется для установки точности значения (количество знаков после запятой) для свойства типа “Деньги”.

Убедитесь, что у пользователя, под которым выполняется данный код, есть права на редактирование свойств товаров в каталоге.

Читайте также  Что делать, если забыл пароль от админки Битрикс?

Это пример для D7 API. Если у вас другая версия Битрикса или требуется использование другого API, обратитесь к документации, соответствующей вашей версии, для получения более подробной информации.


Категории: Bitrix Bitrix D7