Как скопировать значение одного свойства инфоблока и подставить в другое свойство этого же инфоблока?

При работе с 1С-Bitrix можно скопировать значение одного свойства инфоблока и подставить его в другое свойство этого же инфоблока используя API 1C-Bitrix и язык PHP.

Для начала, необходимо подключить необходимые модули, которые отвечают за работу с инфоблоками:

<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
?>

Далее, нужно определить идентификаторы инфоблока и свойств, в которых нужно скопировать значение:

<?
$sourceIblockId = 1; // идентификатор исходного инфоблока
$sourcePropertyCode = "SOURCE_PROPERTY"; // символьный код исходного свойства

$destinationIblockId = 2; // идентификатор целевого инфоблока
$destinationPropertyCode = "DESTINATION_PROPERTY"; // символьный код целевого свойства
?>

Затем, можно считать значение исходного свойства:

<?
$sourceElements = CIBlockElement::GetList(
    false,
    array("IBLOCK_ID" => $sourceIblockId),
    false,
    false,
    array("ID", $sourcePropertyCode)
);

while ($sourceElement = $sourceElements->Fetch()) {
    $sourcePropertyValue = $sourceElement[$sourcePropertyCode];
    // Добавьте здесь код для обработки значения, если нужно
?>

После этого, можно обновить значения целевого свойства:

<?
    $destinationElement = new CIBlockElement;
    $destinationElement->Update(
        $sourceElement["ID"],
        array($destinationPropertyCode => $sourcePropertyValue),
        false,
        false
    );
}
?>

В данном примере мы используем метод CIBlockElement::GetList для получения списка элементов и их свойств. Затем, мы обновляем значения целевого свойства с помощью метода CIBlockElement::Update, передавая идентификатор элемента, массив с обновляемым свойством и логическое значение false для обновления индекса поиска (если необходимо).

Обратите внимание, что в коде надо заменить SOURCE_PROPERTY и DESTINATION_PROPERTY на символьные коды реальных свойств. Также учтите, что данная реализация копирует значения из всех элементов исходного инфоблока в целевое свойство. Если требуется выполнить копирование только для определенных элементов, необходимо добавить соответствующие фильтры в вызов CIBlockElement::GetList.

Надеюсь, этот ответ помог! Если у вас возникнут вопросы, буду рад на них ответить.