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

crm.item.productrow.list

Scope: crm Права на выполнение: для всех

crm.item.productrow.list({order: ?{} = null, filter: {}, start: ?number = 0})

Метод вернет массив товарных позиций

{
	"productRows": []
}

где каждый элемент массива — это структура, аналогичная результату метода crm.item.productrow.get.

В каждой строке результата есть поле type, которое означает следующее:

TYPE_PRODUCT = 1; // Простой товар
TYPE_SET = 2; // Комплект 
TYPE_SKU = 3; // Товар с торговыми предложениями
TYPE_OFFER = 4; // Торговое предложение
TYPE_FREE_OFFER = 5; // Торговое предложение, у которого нет товара (не указан или удален)
TYPE_EMPTY_SKU = 6; // Специфический тип, означает невалидный товар с торговыми предложениями

С товаром можно работать через crm.product.*. С вариациями - только через catalog.product.* (Можно и с товарами использовать.) При этом, catalog.product.get требует только id товара/вариации. (В выдаче отличаются по iblockId для товара и по наличию parentId для вариации.) А вот catalog.product.list уже требует указания в фильтре iblockId, который чаще всего в облаке 25 - товары, 27 - вариации. (Необходимо проверять в каждом конкретном случае).

Получить значение ownerType для смарт-процесса можно с помощью crm.enum.ownertype - значение SYMBOL_CODE_SHORT.

Параметры

Параметр Описание С версии
order Список для сортировки, где ключ — поле, а значение - ASC или DESC.
filter Список для фильтрации. Примеры фильтров ниже. Ключи =ownerType и =ownerId являются обязательными.
start Сдвиг для постраничной навигации.

Примеры

Найти все товарные позиции, привязанные к предложению с идентификатором 1

{
	"filter": {
		"=ownerType": "Q",
		"=ownerId": 1
	}
}

Найти все товарные позиции, привязанные к смарт-процессу с entityTypeId = 128 и с идентификатором 9, у которых скидка больше 10% или цена ниже 1000

{
	"filter": {
		"=ownerType": "T80",
		"=ownerId": 9,
		"0": {
			"logic": "OR",
			"0": {
				">discountRate": 10
			},
			"1": {
				"<price": 1000
			}
		}
	}
}

Найти все товарные позиции, привязанные к предложению с идентификатором 2, которые привязаны к товарам из каталога

{
	"filter": {
		"=ownerType": "Q",
		"=ownerId": 2,
		"!=productId": 0
	}
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Miller Miller
Сообщение не промодерировано, возможны ошибки и неточности.
На php:
Код
'=ownerType' => 'T'.strtoupper(dechex(_YOUR_ID_))
0
Евгений
Сообщение не промодерировано, возможны ошибки и неточности.
Всем привет! Подскажите плиз что это за синтаксис: "    $result = CRest::call('crm.productrow.list', {{query[params][PARAMS]}});   " - то есть мы вроде обращаемся к методу класса а что значат фигурные скобки двойные в параметрах функции? весь день лопатил php на эту тему и не могу найти ничего подобного (https://www.php.net/manual/ru/functions.arguments.php#functions.variable-arg-list - по крайнее мере здесь нет). или хотя бы поделитесь ссылкой - где это прочитать можно?
0
Иван Спицын
Сообщение не промодерировано, возможны ошибки и неточности.
Почему через crm.item.productrow.get можно получить товарную позицию только по id без "=ownerType" и "=ownerId", а в crm.item.productrow.list обязательно нужны "=ownerType" и "=ownerId"?
0
Игорь Шевчик
Сообщение не промодерировано, возможны ошибки и неточности.
Все типы описаны bitrix/modules/crm/lib/producttype.php \Bitrix\Crm\ProductType
0
Игорь Шевчик
Сообщение не промодерировано, возможны ошибки и неточности.
Для поля type есть еще TYPE_SERVICE = 7
Обозначает услугу
11
Анатолий Елизаренко
Чтобы в фильтре работал ownerType, нужно typeId преобразовывать:
T + HEX цифрового id

Например:
typeId = 128 нужно указывать как "T80".
typeId = 139 нужно указывать как "T8B".
© «Битрикс», 2001-2024, «1С-Битрикс», 2024