Get crm.documentgenerator.template.getfields Document Template Fields

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: a user with "modify" access permission for Document Generator templates

The method crm.documentgenerator.template.getfields returns a card of template fields: which fields are available, their current values, default values, and service indicators.

Method Parameters

Required parameters are marked with *

Name
type

Description

id*
integer

Identifier of the template

entityTypeId*
integer

Identifier of the CRM object type. Needed to select the data provider

entityId
integer

Identifier of the CRM object whose data will be used to compute field values

values
object

Object format:

{
            field_1: value_1,
            field_2: value_2,
            ...,
            field_n: value_n,
        }
        

where:

  • field_n — field name
  • value_n — field value

values are temporary substitutions over the CRM data. The method takes data by entityTypeId and entityId, then applies values from values and recalculates the template fields.

This allows checking the result without changing the data in CRM. For example, if you pass values.DocumentNumber = "2026-001", the DocumentNumber field will return this value in the response.

If values is not passed, the method will return the card of fields based on the original CRM data and template logic

Parameter Values

The composition of the values keys is determined by the template, data provider, and context (entityTypeId, entityId), so it may vary in different scenarios.

Name
type

Description

MyCompanyRequisiteRqCompanyName
string

Short name of the organization

MyCompanyRequisiteRegisteredAddressText
string

Full address

MyCompanyPhone
string

Phone

MyCompanyEmail
string

E-mail

MyCompanyWeb
string

Website

MyCompanyUfLogo
string | null

Logo

RequisiteRqCompanyName
string

Short name of the organization

RequisiteRegisteredAddressText
string

Full address

ClientPhone
string

Phone

ClientEmail
string

Email

ClientWeb
string

Website

DocumentNumber
string

Number

DocumentCreateTime
string

Generation date

ProductsIndex
string

Current number

ProductsProductName
array | string

Name

ProductsProductQuantity
array | string

Quantity

ProductsProductMeasureName
array | string

Units of measure

ProductsProductPriceRaw
array | string

Original price

ProductsProductPriceRawSum
array | string

Total original price

TotalRaw
string

Total original prices

TaxesTaxTitle
array | string

Heading

TaxesTaxRate
array | string

Rate

TaxesTaxValue
array | string

Amount

TotalSum
string

Total amount

MyCompanyAssignedName
string

First Name

MyCompanyAssignedLastName
string

Last Name

MyCompanyAssignedPersonalPhone
string

Phone

MyCompanyAssignedEmail
string

E-Mail

DocumentTitle
string

Document name

MY_COMPANY
array

My company

Code Examples

How to Use Examples in Documentation

Example of retrieving document template fields, where:

  • template identifier — 1
  • CRM object type identifier — 2 (deal)
  • CRM object identifier — 123
  • field value DocumentNumber2026-001
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":1,"entityTypeId":2,"entityId":123,"values":{"DocumentNumber":"2026-001"}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.documentgenerator.template.getfields
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":1,"entityTypeId":2,"entityId":123,"values":{"DocumentNumber":"2026-001"},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.documentgenerator.template.getfields
        
// This snippet is an ES module: top-level await requires type="module" or a bundler.
        // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
        import { Text } from '@bitrix24/b24jssdk'
        import type { B24Frame } from '@bitrix24/b24jssdk'
        
        declare const $b24: B24Frame
        
        // Shape of the payload returned in result (match the "response handling" section of the page)
        type GetFieldsResult = {
          templateFields: Record<string, TemplateField>
        }
        
        type TemplateField = {
          title: string
          value: string | string[] | null
          default?: string | null
          required?: string
          type?: string
          group: string[]
          chain?: string
        }
        
        try {
          const response = await $b24.actions.v2.call.make<GetFieldsResult>({
            method: 'crm.documentgenerator.template.getfields',
            params: {
              id: 1,
              entityTypeId: 2,
              entityId: 123,
              values: {
                DocumentNumber: '2026-001',
              },
            },
            requestId: Text.getUuidRfc4122()
          })
        
          // The payload is available only on a successful response
          if (!response.isSuccess) {
            console.error(response.getErrorMessages().join('; '))
          } else {
            const result = response.getData()!.result
            console.info('Template fields:', Object.keys(result.templateFields))
          }
        } catch (error) {
          // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
          console.error(error)
        }
        
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
        <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
        <script>
          async function getTemplateFields() {
            try {
              // Initialize the SDK inside a Bitrix24 frame
              const $b24 = await B24Js.initializeB24Frame()
        
              const response = await $b24.actions.v2.call.make({
                method: 'crm.documentgenerator.template.getfields',
                params: {
                  id: 1,
                  entityTypeId: 2,
                  entityId: 123,
                  values: {
                    DocumentNumber: '2026-001',
                  },
                },
                requestId: B24Js.Text.getUuidRfc4122()
              })
        
              // The payload is available only on a successful response
              if (!response.isSuccess) {
                console.error(response.getErrorMessages().join('; '))
                return
              }
        
              const result = response.getData().result
              console.info('Template fields:', Object.keys(result.templateFields))
            } catch (error) {
              // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
              console.error(error)
            }
          }
        
          document.addEventListener('DOMContentLoaded', getTemplateFields)
        </script>
        

        from b24pysdk.errors import BitrixAPIError, BitrixSDKException
        
        try:
            bitrix_response = client.crm.documentgenerator.template.getfields(
                bitrix_id=1,
                entity_type_id=2,
                entity_id=123,
                values={
                    "DocumentNumber": "2026-001",
                },
            ).response
            result = bitrix_response.result
            print(result)
        except BitrixAPIError as error:
            print(
                "Bitrix API Error",
                f"error: {error.error}",
                f"error_description: {error.error_description}",
                sep="\n",
            )
        except BitrixSDKException as error:
            print(f"Bitrix SDK Error: {error.message}")
        except Exception as error:
            print(f"Unexpected error: {error}")
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'crm.documentgenerator.template.getfields',
                    [
                        'id' => 1,
                        'entityTypeId' => 2,
                        'entityId' => 123,
                        'values' => [
                            'DocumentNumber' => '2026-001',
                        ],
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo '<pre>';
            print_r($result);
            echo '</pre>';
        
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error getting template fields: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'crm.documentgenerator.template.getfields',
            {
                id: 1,
                entityTypeId: 2,
                entityId: 123,
                values: {
                    DocumentNumber: '2026-001',
                },
            },
            (result) => {
                result.error()
                    ? console.error(result.error())
                    : console.info(result.data())
                ;
            },
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'crm.documentgenerator.template.getfields',
            [
                'id' => 1,
                'entityTypeId' => 2,
                'entityId' => 123,
                'values' => [
                    'DocumentNumber' => '2026-001',
                ],
            ]
        );
        
        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.documentgenerator.template.getfields", b24.Params{
        	"id":           1,
        	"entityTypeId": 2,
        	"entityId":     123,
        	"values": b24.Params{
        		"DocumentNumber": "2026-001",
        	},
        }, b24.WithIdempotent())
        if err != nil {
        	return fmt.Errorf("crm.documentgenerator.template.getfields: %w", err)
        }
        
        // The method wraps the response in an object with the "templateFields" key.
        raw, ok := b24.Unwrap(res.Result, "templateFields")
        if !ok {
        	return fmt.Errorf("no templateFields key in the response")
        }
        
        fmt.Printf("%s\n", raw)
        

Response Handling

HTTP status: 200

{
            "result": {
                "templateFields": {
                    "DocumentNumber": {
                        "title": "Number",
                        "value": "2026-001",
                        "required": "Y",
                        "group": [
                            "Document"
                        ],
                        "chain": "this.DOCUMENT.DOCUMENT_NUMBER",
                        "default": "2026-001"
                    },
                    "MyCompanyUfLogo": {
                        "title": "Logo",
                        "value": null,
                        "type": "IMAGE",
                        "group": [
                            "Document",
                            "My Company"
                        ],
                        "chain": "this.SOURCE.MY_COMPANY.UF_LOGO",
                        "default": null
                    },
                    "MY_COMPANY": {
                        "title": "My Company",
                        "value": [
                            {
                                "value": "340",
                                "title": "Wheel of Fortune",
                                "selected": true
                            },
                            {
                                "value": "358",
                                "title": "Bitrix Development",
                                "selected": false
                            }
                        ],
                        "group": [
                            "Document",
                            "My Company"
                        ]
                    }
                }
            },
            "time": {
                "start": 1773821944,
                "finish": 1773821944.196063,
                "duration": 0.19606304168701172,
                "processing": 0,
                "date_start": "2026-03-18T11:19:04+03:00",
                "date_finish": "2026-03-18T11:19:04+03:00",
                "operating_reset_at": 1773822544,
                "operating": 0
            }
        }
        

Returned Data

Name
type

Description

result
object

Root element of the response. Contains the templateFields object

time
time

Information about the request execution time

Result Type

Name
type

Description

templateFields
object

Object of template fields, where the key is the field code and the value is the templateField structure

templateField Type

Name
type

Description

title
string

Field name

value
string | array

Current field value

default
string

Default field value

required
char

Field mandatory indicator: Y or N

type
string

Field type, e.g., IMAGE

group
array

Groups to which the field belongs

chain
string

Path of the field in the data provider, e.g., this.SOURCE.MY_COMPANY.UF_LOGO

Error Handling

HTTP status: 400

{
            "error": "DOCGEN_ACCESS_ERROR",
            "error_description": "Access denied"
        }
        

Name
type

Description

error
string

String error code. It consists of digits, Latin letters, and underscores. It may arrive empty — in that case only error_description shows the reason

error_description
string

Error message for the developer. Do not show it to the end user without processing

Possible Error Codes

Code

Description

Value

DOCGEN_ACCESS_ERROR

Access denied

No access to the template or insufficient rights to work with document generator templates

0

Template not found

Template with the specified id not found or unavailable

100

Bitrix\DocumentGenerator\Template constructor must be is public

A required parameter was not provided

Empty value

Cannot get fields from deleted template

Cannot get fields from a deleted template

Empty value

You do not have permissions to modify templates

Insufficient permissions to modify document generator templates

Empty value

Module documentgenerator is not installed

The documentgenerator module is not available

Statuses and System Error Codes

HTTP Status: 4xx, 5xx

The errors described below are returned by the REST API itself, not by the logic of a specific method. They can arrive in response to any method.

Status

Code
Error Message

Description

500

INTERNAL_SERVER_ERROR
Internal server error

An internal server error has occurred. Retry the call, and if the error persists, contact the server administrator or Bitrix24 technical support

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

The server returned an unexpected response. Retry the call, and if the error persists, contact the server administrator or Bitrix24 technical support

503

QUERY_LIMIT_EXCEEDED
Too many requests

The request intensity limit has been exceeded

429

OPERATION_TIME_LIMIT
Method is blocked due to operation time limit

The method is blocked because the request resource intensity limit has been exceeded. The block is lifted automatically once the accumulated execution time of the method no longer exceeds the limit

401

NO_AUTH_FOUND
Wrong authorization data

The request contains no authorization data: neither an access token nor a webhook code was passed

401

INVALID_REQUEST
Https required

Methods are called over the HTTPS protocol only

401

OVERLOAD_LIMIT
REST API is blocked due to overload

The REST API is blocked due to overload. This is a manual individual block. To have it lifted, contact Bitrix24 technical support

401

ACCESS_DENIED
REST is available only on commercial plans

REST API access is not active for this account. In Bitrix24 Cloud, check the current plan or trial status: Vibe+ plans include REST API access, while Essentials plans do not. A webhook receives a different error message — REST is available only by subscription

401

INVALID_CREDENTIALS
Invalid request credentials

No active webhook with the specified user identifier and secret code was found

404

ERROR_METHOD_NOT_FOUND
Method not found!

No method with this name was found. The name is misspelled, the method does not exist in the REST API, or it is unavailable without the required scope

401

insufficient_scope
The request requires higher privileges than provided by the webhook token

The request requires broader permissions than the token has: for a webhook these are the permissions granted to it, for an application it is the scope. For an application, the error message ends with provided by the access token

401

expired_token
The access token provided has expired

The access token has expired

401

user_access_error
The user does not have access to the application

The application is installed, but the Bitrix24 administrator has granted access to it only to specific users

403

PORTAL_DELETED
Portal was deleted

The public part of the site is closed. To open it on an on-premise installation, disable the "Temporary closure of the public part of the site" option. Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site

Continue Learning