Описание:
Метод создает новый объект, копирующий существующий объект-"образец", идентификатор которого $iObjectId метод принимает на входе. Возвращает идентификатор нового объекта (integer), либо false, если клонирование произвести не удалось.
В результате применения метода создается новый объект и значения всех его свойств выставляются такими же, как и у объекта-образца.
Альтернативный способ - создать новый объект и выставить ему все свойства по отдельности, запрашивая значение каждого из них у объекта-образца. Выбор конкретного способа - клонировать в одно действие и далее заменить несколько свойств нового объекта, или создать новый и заполнять необходимые свойства "с ноля" зависит от того, какое количество свойств нового объекта отличается от образца. При большом количестве совпадений лучше применить клонирование; клонировать же ради одного свойства не стоит.
Пример кода:
<?php
/*
Данный метод клонирует объект типа "Купон" заданного образца (принимая на входе идентификатор одного из предсозданных объектов), изменяя только свойства "Серийный номер" и "Владелец"
*/
public function generateNewCoupon($iModelId) {
$iNewCoupon = umiObjectsCollection->getInstance()->cloneObject($iModelId);
if ($iNewCoupon) {
$oNewCoupon = umiObjectsCollection->getInstance()->getObject($iNewCoupon);
if ($oNewCoupon instanceof umiObject) {
$oNewCoupon->setValue('SerialNumber', uniqid(''));
$oNewCoupon->setOwnerId(cmsController::getInstance()->getModule('users')->user_id);
$oNewCoupon->commit();
}
}
}
?>