Документация для разработчиков

Значения свойств заказа

Внимание! Необходимо выполнять сохранение через заказ: \Bitrix\Sale\Order::save(). Помимо всего этого, в одной из ближайших версий вызов \Bitrix\Sale\PropertyValueCollection::save() либо \Bitrix\Sale\PropertyValue::save() будет генерировать ошибку уровня E_WARNING.

  • Получение значений свойств:
  • Получение конкретного значения свойства
  • Добавление нового свойства
  • Обновление значения свойства
  • Удаление значения свойства
  • Получение информации о свойстве, значение которого хранится в заказе:
  • Получение значений свойств:

    • Работа с объектами
      $collection = $order->getPropertyCollection();
      foreach ($collection as $item)
      {
      	// $item - объект класса \Bitrix\Sale\PropertyValue
      }
      
    • Работа с массивами

      Помимо объектов есть возможность напрямую обращаться к базе через метод \Bitrix\Sale\PropertyValueCollection::getList($parameters), либо \Bitrix\Sale\PropertyValue::getList($parameters). Оба этих метода работают аналогично.

      Методы всегда возвращают объект Bitrix\Main\DB\Result, из которого можно получить данные с помощью метода fetch().

      Параметр Описание С версии
      $parameters Массив, структура которого полностью соответствует структуре ORM'ного getList.
      // получение списка свойств для заказа с ID 123
      $dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
      	'select' => ['*'],
      	'filter' => [
      		'=ORDER_ID' => 123, 
      	]
      ]);
      
      while ($item = $dbRes->fetch())
      {
      	var_dump($item);
      }
      

    Получение конкретного значения свойства

    $collection = $order->getPropertyCollection();
    
    • по ID
      $propertyValue = $collection->getItemById($id);
      
    • по внутреннему индексу
      $propertyValue = $collection->getItemByIndex($index);
      
    • по ID самого свойства
      $propertyValue = $collection->getItemByOrderPropertyId($propertyId);
      
    • геттеры для значений ключевых свойств(телефон, email, имя, адрес и т.д.)
      $propertyValue = $collection->getAddress();
      $propertyValue = $collection->getPhone();
      $propertyValue = $collection->getProfileName();
      $propertyValue = $collection->getTaxLocation();
      $propertyValue = $collection->getDeliveryLocationZip();
      $propertyValue = $collection->getDeliveryLocation();
      $propertyValue = $collection->getPayerName();
      $propertyValue = $collection->getUserEmail();
      

    Добавление нового свойства

    • Вариант 1:
      $propertyValue = $collection->createItem([
      	'ID' => 1,
      	'NAME' => 'Новое свойство',
      	'TYPE' => 'STRING',
      	'CODE' => 'NEW_PROP',
      ]);
      
      $propertyValue->setField('VALUE', 'Y');
      
    • Вариант 2:
      $propertyValue = \Bitrix\Sale\PropertyValue::create($collection, [
      	'ID' => 1,
      	'NAME' => 'Новое свойство',
      	'TYPE' => 'STRING',
      	'CODE' => 'NEW_PROP',
      ]);
      
      $propertyValue->setField('VALUE', 'Свойство_3');
      $collection->addItem($propertyValue);
      

    Обновление значения свойства

    $order = \Bitrix\Sale\Order::load(123);
    
    $collection = $order->getPropertyCollection();
    	
    $propertyValue = $collection->getItemById(123);
    $r = $propertyValue->setField('VALUE', 'Новое значение');
    if (!$r->isSuccess())
    {
    	var_dump($r->getErrorMessages());
    }
    	
    $order->save();
    

    Доступное для редактирования поле:

    "VALUE", // значение свойства
    

    Удаление значения свойства

    $order = \Bitrix\Sale\Order::load(123);
    
    $collection = $order->getPropertyCollection();
    
    $propertyValue = $collection->getItemById(123);
    $propertyValue->delete();
    
    $order->save();
    

    Получение информации о свойстве, значение которого хранится в заказе:

    • Работа с массивом
      $propertyInfo = $propertyValue->getProperty();
      

      Результатом является массив с ключами:

      'ID', // ID свойства
      'PERSON_TYPE_ID', // ID типа плательщика, к которому оно привязано
      'NAME', // Название свойства
      'TYPE', // Тип
      'REQUIRED', // Флаг обязательности
      'DEFAULT_VALUE', // Значение по умолчанию
      'SORT', // Сортировка
      'USER_PROPS', // Входит ли в профиль
      'IS_LOCATION', // Является ли местоположением
      'PROPS_GROUP_ID', // ID группы
      'DESCRIPTION',  // Описание
      'IS_EMAIL', // Является ли почтой
      'IS_PROFILE_NAME', // Является ли названием профиля пользователя
      'IS_PAYER', // Используется ли как имя плательщика 
      'IS_LOCATION4TAX', // Используется ли как местоположение для налогов
      'IS_FILTERED', // Доступно ли в фильтре по заказам
      'CODE', // Код
      'IS_ZIP', // Используется ли как почтовый индекс
      'IS_PHONE', // Является ли телефоном
      'IS_ADDRESS', // Является ли адресом
      'ACTIVE', // Флаг активности
      'UTIL', // Флаг служебности
      'INPUT_FIELD_LOCATION', 
      'MULTIPLE',// Флаг множественности
      'MINLENGTH', // Минимальная длина строки
      'MAXLENGTH', // Максимальная длина строки
      'PATTERN', // Регулярное выражение для проверки
      'MULTILINE', // Много строк
      'SIZE', // Количество видимых символов
      
    • Работа с объектом
      $property = $propertyValue->getPropertyObject();
      

      Любое значение можно получить, используя метод:

      $property->getField('SIZE');
      

      Для некоторых наиболее популярных полей реализованы геттеры:

      $property->getId(); // ID свойства
      $property->getPersonTypeId(); // ID типа плательщика, к которому оно привязано
      $property->isUtil(); // является ли служебным
      $property->isRequired(); // является ли обязательным
      $property->getType(); // тип 
      $property->getDescription(); // описание
      $property->getRelations(); // связи
      $property->getName(); // название
      $property->getGroupId(); // ID группы
      
    © «Битрикс», 2001-2019, «1С-Битрикс», 2019
    Наверх