Значения свойств заказа в 1С-Битрикс
Получение
Работа с объектами
$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);
}
Получение конкретного значения
$propertyValue = $collection->getItemByOrderPropertyCode($code);
Работа со свойствами, как с коллекцией
$propertyCollection = $order->getPropertyCollection();
foreach ($propertyCollection as $popertyObj) {
if ($popertyObj->getField('CODE') == "CODE1") $someValue1 = $popertyObj->getValue();
if ($popertyObj->getField('CODE') == "CODE2") $popertyObj->setValue($someValue2);
}
Обновление
$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();
Получение конкретного значения
$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);
Получение информации о свойстве, значение которого хранится в заказе
Работа с массивом
$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 группы
Источник: https://dev.1c-bitrix.ru/api_d7/bitrix/sale/technique/property.php