/** * <p>Метод добавляет новое значение свойства к заказу на основании параметров arFields. Метод динамичный.</p> * * * @param array $arFields Ассоциативный массив параметров значения свойства, ключами в * котором являются названия параметров значения свойства, а * значениями - соответствующие значения.<br><br> Допустимые ключи:<ul> * <li> <b>ORDER_ID</b> - код заказа (обязательное);</li> <li> <b>ORDER_PROPS_ID</b> - код * свойства (обязательное);</li> <li> <b>NAME</b> - название свойства * (обязательное);</li> <li> <b>VALUE</b> - значение свойства;</li> <li> <b>CODE</b> - * символьный код свойства.</li> </ul> * * @return int <p>Метод возвращает код добавленного значения свойства или <i>false</i> * в случае ошибки.</p> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "ORDER_ID" => 124859, * "ORDER_PROPS_ID" => 15, * "NAME" => "Адрес доставки", * "CODE" => "ADDRESS", * "VALUE" => "ул. Строителей, дом 88, кв. 15" * ); * * CSaleOrderPropsValue::Add($arFields); * ?> * * * //метод класса, который добавляет свойство (код/значение) к заказу, динамически узнавая идентификатор свойства: * public static function AddOrderProperty($code, $value, $order) { * if (!strlen($code)) { * return false; * } * if (CModule::IncludeModule('sale')) { * if ($arProp = CSaleOrderProps::GetList(array(), array('CODE' => $code))->Fetch()) { * return CSaleOrderPropsValue::Add(array( * 'NAME' => $arProp['NAME'], * 'CODE' => $arProp['CODE'], * 'ORDER_PROPS_ID' => $arProp['ID'], * 'ORDER_ID' => $order, * 'VALUE' => $value, * )); * } * } * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsvalue/csaleorderpropsvalue__add.af505780.php * @author Bitrix */ public static function Add($arFields) { if (!self::CheckFields('ADD', $arFields, 0)) { return false; } // if ($arFields['VALUE'] && ($oldProperty = CSaleOrderProps::GetById($arFields['ORDER_PROPS_ID']))) // { // $oldProperty['VALUE'] = $arFields['VALUE']; // $arFields['VALUE'] = CSaleOrderPropsAdapter::convertOldToNew($oldProperty, 'VALUE', true); // } // location ID to CODE, VALUE is always present if ((string) $arFields['VALUE'] != '') { $arFields['VALUE'] = self::translateLocationIDToCode($arFields['VALUE'], $arFields['ORDER_PROPS_ID']); } return Internals\OrderPropsValueTable::add(array_intersect_key($arFields, CSaleOrderPropsValueAdapter::$allFields))->getId(); }
/** @return Entity\Result */ public function save() { $value = self::getValueForDB($this->fields->get('VALUE')); if ($valueId = $this->getId()) { if ($value == $this->savedValue) { $result = new Entity\UpdateResult(); } else { $result = Internals\OrderPropsValueTable::update($valueId, array('VALUE' => $value)); if ($result->isSuccess()) { $this->savedValue = $value; } } } else { if ($value !== null) { $property = $this->property; $result = Internals\OrderPropsValueTable::add(array('ORDER_ID' => $this->getParentOrderId(), 'ORDER_PROPS_ID' => $property['ID'], 'NAME' => $property['NAME'], 'VALUE' => $value, 'CODE' => $property['CODE'])); if ($result->isSuccess()) { $this->savedValue = $value; $this->setFieldNoDemand('ID', $result->getId()); } } else { $result = new Entity\AddResult(); } } return $result; }