/** * <p>Метод изменяет параметры статуса заказа с кодом ID. Метод динамичный.</p> * * * @param string $ID Код статуса. * * @param array $arFields Ассоциативный массив новых параметров статуса. Ключами в массиве * являются названия параметров статуса, а значениями - * соответствующие значения.<br> Допустимые ключи: <ul> <li> <b>ID</b> - код * статуса (обязательный);</li> <li> <b>SORT</b> - индекс сортировки;</li> <li> * <b>LANG</b> - массив ассоциативных массивов языкозависимых параметров * статуса с ключами: <ul> <li> <b>LID</b> - язык;</li> <li> <b>NAME</b> - название * статуса на этом языке;</li> <li> <b>DESCRIPTION</b> - описание статуса;</li> </ul> * </li> <li> <b>PERMS</b> - массив ассоциативных массивов прав на доступ к * изменению заказа в данном статусе с ключами: <ul> <li> <b>GROUP_ID</b> - * группа пользователей;</li> <li> <b>PERM_TYPE</b> - тип доступа (S - разрешен * перевод заказа в данный статус, M - разрешено изменение заказа в * данном статусе).</li> </ul> </li> </ul> * * @return string <p>Возвращается код добавленного статуса или <i>false</i> в случае * ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalestatus/csalestatus__update.145077bd.php * @author Bitrix */ public static function Update($statusId, $arFields) { if (!self::CheckFields('UPDATE', $arFields, $statusId)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeStatusUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($statusId, &$arFields)) === false) { return false; } } StatusTable::update($statusId, array_intersect_key($arFields, self::$statusFields)); if (isset($arFields['LANG']) && is_array($arFields['LANG']) && !empty($arFields['LANG'])) { StatusLangTable::deleteByStatus($statusId); self::addLanguagesBy($statusId, $arFields['LANG']); } if (isset($arFields['PERMS']) && is_array($arFields['PERMS']) && !empty($arFields['PERMS'])) { StatusGroupTaskTable::deleteByStatus($statusId); self::addTasksBy($statusId, $arFields['PERMS']); } foreach (GetModuleEvents("sale", "OnStatusUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($statusId, $arFields)); } return $statusId; }
$errors[] = Loc::getMessage('ERROR_NO_NAME') . " [{$languageId}] " . htmlspecialcharsbx($languageName); } } // prepare & check group tasks foreach ($groups as $groupId => $groupName) { $taskId = $_REQUEST['TASK' . $groupId]; $groupTasks[$groupId] = array('STATUS_ID' => $sid, 'GROUP_ID' => $groupId, 'TASK_ID' => $taskId); if (!$tasks[$taskId]) { $errors[] = Loc::getMessage('SSEN_INVALID_TASK_ID_FOR') . ' ' . $groupName; } } // add or update status if (!$errors) { // update status, delete translations and group tasks if (!$isNew) { $result = StatusTable::update($statusId, $status); if ($result->isSuccess()) { StatusLangTable::deleteByStatus($statusId); StatusGroupTaskTable::deleteByStatus($statusId); } else { $errors = $result->getErrorMessages(); } } else { $result = StatusTable::add($status); if ($result->isSuccess()) { $statusId = $status['ID']; } else { $errors = $result->getErrorMessages(); } } }