Get a List of Order Properties crm.productrow.list

Choose a tool for developing with an AI agent:

  • use Alaio Vibecode to build an app for Bitrix24 from a task description without knowing any programming language. The agent writes the code and deploys the app to a server, with no manual hosting setup
  • use the MCP server to develop a REST API integration in your own project. The agent refers to the official REST documentation

Scope: crm

Who can execute the method: any user

DEPRECATED

The development of this method has been halted. Please use crm.item.productrow.list.

This method returns a list of product rows based on a filter. It is an implementation of the list method for product rows. The owner of the product rows is determined by the required fields OWNER_TYPE and OWNER_ID, where OWNER_TYPE is a one-character code indicating the type ("D" - deal, "L" - lead), and OWNER_ID is the identifier.

Method Parameters

See the description of list methods

Code Examples

How to Use Examples in Documentation

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"filter":{"OWNER_TYPE":"D","OWNER_ID":"1"}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.productrow.list
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"filter":{"OWNER_TYPE":"D","OWNER_ID":"1"},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.productrow.list
        
// callListMethod: Retrieves all data at once. Use only for small selections (< 1000 items) due to high memory load.
        
        var ownerType = prompt("Enter owner type (D, L)");
        var ownerId = prompt("Enter owner ID");
        
        try {
          const response = await $b24.callListMethod(
            'crm.productrow.list',
            {
              filter: {
                "OWNER_TYPE": ownerType,
                "OWNER_ID": ownerId
              }
            },
            (progress) => { 
              if(progress.error())
                console.error(progress.error());
              else
              {
                console.dir(progress.data());
                if(progress.more())
                  progress.next();
              }
            }
          );
        } catch (error) {
          console.error('Request failed', error);
        }
        
        // fetchListMethod: Retrieves data in parts using an iterator. Use for large volumes of data for efficient memory consumption.
        
        var ownerType = prompt("Enter owner type (D, L)");
        var ownerId = prompt("Enter owner ID");
        
        try {
          const generator = $b24.fetchListMethod('crm.productrow.list', {
            filter: {
              "OWNER_TYPE": ownerType,
              "OWNER_ID": ownerId
            }
          }, 'ID');
          for await (const page of generator) {
            for (const entity of page) { 
              console.log('Entity:', entity);
            }
          }
        } catch (error) {
          console.error('Request failed', error);
        }
        
        // callMethod: Manual control of pagination through the start parameter. Use for precise control over request batches. Less efficient for large data than fetchListMethod.
        
        var ownerType = prompt("Enter owner type (D, L)");
        var ownerId = prompt("Enter owner ID");
        
        try {
          const response = await $b24.callMethod('crm.productrow.list', {
            filter: {
              "OWNER_TYPE": ownerType,
              "OWNER_ID": ownerId
            }
          }, 0);
          const result = response.getData().result || [];
          for (const entity of result) { 
            console.log('Entity:', entity);
          }
        } catch (error) {
          console.error('Request failed', error);
        }
        
$ownerType = readline("Enter owner type (D, L): ");
        $ownerId = readline("Enter owner ID: ");
        
        try {
            $response = $b24Service
                ->core
                ->call(
                    'crm.productrow.list',
                    [
                        'filter' => [
                            'OWNER_TYPE' => $ownerType,
                            'OWNER_ID'   => $ownerId,
                        ],
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            if ($result->error()) {
                error_log($result->error());
            } else {
                echo 'Data: ' . print_r($result->data(), true);
                if ($result->more()) {
                    $result->next();
                }
            }
        
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error: ' . $e->getMessage();
        }
        
var ownerType = prompt("Enter owner type (D, L)");
        var ownerId = prompt("Enter owner ID");
        BX24.callMethod(
            "crm.productrow.list",
            {
                filter:
                {
                    "OWNER_TYPE": ownerType,
                    "OWNER_ID": ownerId
                }
            },
            function(result)
            {
                if(result.error())
                    console.error(result.error());
                else
                {
                    console.dir(result.data());
                    if(result.more())
                        result.next();
                }
            }
        );
        
require_once('crest.php');
        
        $ownerType = 'D'; // Replace 'D' with the desired owner type
        $ownerId = 1; // Replace 1 with the actual owner ID
        
        $result = CRest::call(
            'crm.productrow.list',
            [
                'filter' =>
                [
                    'OWNER_TYPE' => $ownerType,
                    'OWNER_ID' => $ownerId
                ]
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        
// client and ctx are already created — see the Go SDK section
        res, err := client.Core().Call(ctx, "crm.productrow.list", b24.Params{
        	"filter": b24.Params{
        		"OWNER_TYPE": "D",
        		"OWNER_ID":   "1",
        	},
        }, b24.WithIdempotent())
        if err != nil {
        	return fmt.Errorf("crm.productrow.list: %w", err)
        }
        
        // The response arrives as json.RawMessage — unmarshal it
        // into a struct matching the response shape shown below on this page.
        fmt.Printf("%s\n", res.Result)