Клево. Переделал код так: <?php class OperationCreateProcessor extends modObjectCreateProcessor {

/* 
 * Процессор создает "Операции" для управления финансами
 * Операция - это расход, приход или перевод со счета на счет
 */
 
public $classKey = 'Operation';
public $objectType = 'object';

public function beforeSet() {
    $amount = $this->getProperty('amount');
    switch ($this->getProperty('type')) {
        case 'charge':
            $this->setProperty('amount', -1 * $amount);
            break;
        case 'income': 
            $this->setProperty('amount', 1 * $amount);
            break;
        case 'transfer':
            $this->object->Related = $this->modx->newObject('Operation');
            $this->object->Related->fromArray($this->getProperties());
            $this->object->Related->set('amount', 1 * $amount);
            $this->object->Related->set('account', $this->getProperty('to'));
            $this->object->Related->set('relation_type', $this->getProperty('type'));

            $this->setProperty('amount', -1 * $amount);
            $this->setProperty('account', $this->getProperty('from'));
            $this->setProperty('related', $secondOp->id);
            $this->setProperty('relation_type', $this->getProperty('type'));
            break;
        default:
            $this->modx->error->addField('type', 'Unknown type');
            return false;
    }
    return true;
}

public function afterSave() {
    if ($this->getProperty('type') == 'transfer') {
        if ($this->object->Related) {
            $this->object->Related->set('related', $this->object->id);
            $this->object->Related->save();
        }
    }
    
    return true;
}

}

return 'OperationCreateProcessor'; И вот здесь опять вопрос. Вот есть строка, где связанные объекты сохраняются второй раз и в них передаются ключи основного объекта для сохранения связи. Однако у меня без блока afterSave у связанного объекта поле related оказывается незаполненным. Вот описание связи: // ... 'Related' => array ( 'class' => 'Operation', 'local' => 'related', 'foreign' => 'id', 'cardinality' => 'one', 'owner' => 'foreign', ), // ... По идее должно работать. Но почему-то не хочет…