documentgenerator.document.add
Создать новый документ на основании шаблона
Описание
Метод documentgenerator.document.add создает новый документ на основании шаблона.
Параметры
templateId
integer
обязательный
Идентификатор шаблона.
Получить идентификатор шаблона можно после создания шаблона или методом получения списка шаблонов
providerClassName
string
необязательный
Класс провайдера данных.
При вызове через REST всегда используется Bitrix\DocumentGenerator\DataProvider\Rest: переданное значение игнорируется, поэтому параметр можно не указывать
value
string
обязательный
Внешний идентификатор объекта, для которого формируется документ.
Формат value задается интеграцией. Используйте единый формат в рамках вашего приложения, чтобы искать и фильтровать документы.
Рекомендуемый формат: <ТИП_ОБЪЕКТА>_<ID>, где:
- <ТИП_ОБЪЕКТА> — строковый код типа объекта в верхнем регистре
- <ID> — числовой или строковый идентификатор объекта во внешней системе
Примеры значений value для CRM-объектов:
- лид — LEAD_123
- контакт — CONTACT_45
- компания — COMPANY_78
- сделка — DEAL_901
- коммерческое предложение — QUOTE_55
- счет — INVOICE_12
Примеры значений value для другие объектов:
- заказ — ORDER_1024
- договор поставки — SUPPLY_CONTRACT_2026_015
- запись внешней системы — ERP_DOC_A-7741
values
object
необязательный
Значения полей документа вида {"КодПоля":"Значение"}
stampsEnabled
integer
необязательный
Режим печатей и подписей:
- 1 — включить
- 0 — выключить
По умолчанию берется значение из шаблона
fields
object
необязательный
Описание того, как интерпретировать и форматировать значения из values (подробное описание).
Ключ объекта fields должен совпадать с кодом поля из шаблона.
Если передаете только обычный текст, параметр можно не указывать.
Пример структуры fields:
{
"CurrentDate": {
"TYPE": "DATE",
"FORMAT": {
"format": "d.m.Y"
},
"TITLE": "Дата договора"
}
}Параметр fields
TYPE
string
необязательный
Тип поля.
Типы, для которых можно указать форматирование:
- DATE — дата или дата-время
- NAME — ФИО
FORMAT
object
необязательный
Параметры формата для типа поля.
FORMAT не фиксирован одним значением, его нужно выбирать под ваш шаблон и требования к выводу.
Для DATE значение format задается в формате модификаторов даты генератора документов. Пример: {"format":"d.m.Y"}
Для NAME:
- format задает шаблон вывода частей имени, например #NAME# #LAST_NAME#
- case задает падеж
Пользовательская документация
PROVIDER
string
необязательный
Класс провайдера
TITLE
string
необязательный
Название поля
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"templateId":53,"value":"SUPPLY_CONTRACT_2026_015","values":{"DocumentNumber":"ДГ-2026-001","CurrentDate":"2026-03-18T00:00:00+03:00","ClientName":"ООО Ромашка","ClientPhone":"+7 999 123-45-67","Total":"125000","Comment":"Оплата в течение 5 рабочих дней после подписания","UserName":"Иван Петров"},"fields":{"CurrentDate":{"TYPE":"DATE","FORMAT":{"format":"d.m.Y"},"TITLE":"Дата договора"}},"stampsEnabled":1}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/documentgenerator.document.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"templateId":53,"value":"SUPPLY_CONTRACT_2026_015","values":{"DocumentNumber":"ДГ-2026-001","CurrentDate":"2026-03-18T00:00:00+03:00","ClientName":"ООО Ромашка","ClientPhone":"+7 999 123-45-67","Total":"125000","Comment":"Оплата в течение 5 рабочих дней после подписания","UserName":"Иван Петров"},"fields":{"CurrentDate":{"TYPE":"DATE","FORMAT":{"format":"d.m.Y"},"TITLE":"Дата договора"}},"stampsEnabled":1,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/documentgenerator.document.add
// 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, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type DocumentAddResult = {
document: {
id: number
title: string
number: string
templateId: string
provider: string
value: string
values: Record<string, unknown>
stampsEnabled: boolean
downloadUrl: string
downloadUrlMachine: string
publicUrl: string | null
isTransformationError: boolean
pullTag: string
emailDiskFile: number
createTime: ISODate
updateTime: ISODate
createdBy: number
updatedBy: number | null
}
}
try {
const response = await $b24.actions.v2.call.make<DocumentAddResult>({
method: 'documentgenerator.document.add',
params: {
templateId: 53,
value: 'SUPPLY_CONTRACT_2026_015',
values: {
DocumentNumber: 'DG-2026-001',
CurrentDate: '2026-03-18T00:00:00+03:00',
ClientName: 'Romashka LLC',
ClientPhone: '+7 999 123-45-67',
Total: '125000',
Comment: 'Payment within 5 business days after signing',
UserName: 'Ivan Petrov',
},
fields: {
CurrentDate: {
TYPE: 'DATE',
FORMAT: {
format: 'd.m.Y',
},
TITLE: 'Contract date',
},
},
stampsEnabled: 1,
},
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('Created document id:', result.document.id, 'title:', result.document.title)
}
} 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 addDocument() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'documentgenerator.document.add',
params: {
templateId: 53,
value: 'SUPPLY_CONTRACT_2026_015',
values: {
DocumentNumber: 'DG-2026-001',
CurrentDate: '2026-03-18T00:00:00+03:00',
ClientName: 'Romashka LLC',
ClientPhone: '+7 999 123-45-67',
Total: '125000',
Comment: 'Payment within 5 business days after signing',
UserName: 'Ivan Petrov',
},
fields: {
CurrentDate: {
TYPE: 'DATE',
FORMAT: {
format: 'd.m.Y',
},
TITLE: 'Contract date',
},
},
stampsEnabled: 1,
},
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('Created document id:', result.document.id, 'title:', result.document.title)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addDocument)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.documentgenerator.document.add(
template_id=53,
value="SUPPLY_CONTRACT_2026_015",
values={
"DocumentNumber": "ДГ-2026-001",
"CurrentDate": "2026-03-18T00:00:00+03:00",
"ClientName": "ООО Ромашка",
"ClientPhone": "+7 999 123-45-67",
"Total": "125000",
"Comment": "Оплата в течение 5 рабочих дней после подписания",
"UserName": "Иван Петров",
},
fields={
"CurrentDate": {
"TYPE": "DATE",
"FORMAT": {
"format": "d.m.Y",
},
"TITLE": "Дата договора",
},
},
stamps_enabled=1,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service->core->call(
'documentgenerator.document.add',
[
'templateId' => 53,
'value' => 'SUPPLY_CONTRACT_2026_015',
'values' => [
'DocumentNumber' => 'ДГ-2026-001',
'CurrentDate' => '2026-03-18T00:00:00+03:00',
'ClientName' => 'ООО Ромашка',
'ClientPhone' => '+7 999 123-45-67',
'Total' => '125000',
'Comment' => 'Оплата в течение 5 рабочих дней после подписания',
'UserName' => 'Иван Петров',
],
'fields' => [
'CurrentDate' => [
'TYPE' => 'DATE',
'FORMAT' => [
'format' => 'd.m.Y',
],
'TITLE' => 'Дата договора',
]
],
'stampsEnabled' => 1,
]
);
$result = $response->getResponseData()->getResult();
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
}
BX24.callMethod(
'documentgenerator.document.add',
{
templateId: 53,
value: 'SUPPLY_CONTRACT_2026_015',
values: {
DocumentNumber: 'ДГ-2026-001',
CurrentDate: '2026-03-18T00:00:00+03:00',
ClientName: 'ООО Ромашка',
ClientPhone: '+7 999 123-45-67',
Total: '125000',
Comment: 'Оплата в течение 5 рабочих дней после подписания',
UserName: 'Иван Петров'
},
fields: {
CurrentDate: {
TYPE: 'DATE',
FORMAT: {
format: 'd.m.Y'
},
TITLE: 'Дата договора'
}
},
stampsEnabled: 1
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'documentgenerator.document.add',
[
'templateId' => 53,
'value' => 'SUPPLY_CONTRACT_2026_015',
'values' => [
'DocumentNumber' => 'ДГ-2026-001',
'CurrentDate' => '2026-03-18T00:00:00+03:00',
'ClientName' => 'ООО Ромашка',
'ClientPhone' => '+7 999 123-45-67',
'Total' => '125000',
'Comment' => 'Оплата в течение 5 рабочих дней после подписания',
'UserName' => 'Иван Петров',
],
'fields' => [
'CurrentDate' => [
'TYPE' => 'DATE',
'FORMAT' => [
'format' => 'd.m.Y',
],
'TITLE' => 'Дата договора',
]
],
'stampsEnabled' => 1,
]
);
print_r($result);
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "documentgenerator.document.add", b24.Params{
"templateId": 53,
"value": "SUPPLY_CONTRACT_2026_015",
"values": b24.Params{
"DocumentNumber": "ДГ-2026-001",
"CurrentDate": "2026-03-18T00:00:00+03:00",
"ClientName": "ООО Ромашка",
"ClientPhone": "+7 999 123-45-67",
"Total": "125000",
"Comment": "Оплата в течение 5 рабочих дней после подписания",
"UserName": "Иван Петров",
},
"fields": b24.Params{
"CurrentDate": b24.Params{
"TYPE": "DATE",
"FORMAT": b24.Params{
"format": "d.m.Y",
},
"TITLE": "Дата договора",
},
},
"stampsEnabled": 1,
})
if err != nil {
return fmt.Errorf("documentgenerator.document.add: %w", err)
}
// Метод заворачивает ответ в объект с ключом "document".
raw, ok := b24.Unwrap(res.Result, "document")
if !ok {
return fmt.Errorf("в ответе нет ключа document")
}
var item struct {
DownloadUrl string `json:"downloadUrl"`
Title string `json:"title"`
Number string `json:"number"`
ID b24.ID `json:"id"`
CreateTime string `json:"createTime"`
CreatedBy int `json:"createdBy"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.DownloadUrl, item.Title)
Ответ
HTTP-статус: 200
{
"result": {
"document": {
"downloadUrl": "/bitrix/services/main/ajax.php?action=documentgenerator.api.document.getfile&SITE_ID=s1&id=51&ts=1773844068",
"publicUrl": null,
"title": "SUPPLY_CONTRACT Template 1773843147554 ДГ-2026-001",
"number": "ДГ-2026-001",
"id": 51,
"createTime": "2026-03-18T17:27:48+03:00",
"createdBy": 503,
"updateTime": "2026-03-18T17:27:48+03:00",
"updatedBy": null,
"stampsEnabled": true,
"isTransformationError": false,
"value": "SUPPLY_CONTRACT_2026_015",
"values": {
"productsTableVariant": "",
"_creationMethod": "rest",
"stampsEnabled": true,
"DocumentNumber": "ДГ-2026-001",
"CurrentDate": "2026-03-18T00:00:00+03:00",
"ClientName": "ООО Ромашка",
"ClientPhone": "+7 999 123-45-67",
"Total": "125000",
"Comment": "Оплата в течение 5 рабочих дней после подписания",
"UserName": "Иван Петров"
},
"templateId": "53",
"provider": "Bitrix\\DocumentGenerator\\DataProvider\\Rest",
"pullTag": "TRANSFORMDOCUMENT51",
"emailDiskFile": 5569,
"downloadUrlMachine": "https://**put_your_bitrix24_address**/rest/documentgenerator.api.document.getfile.json?auth=a0bfba690000071b00000844000001f7f0f1075f240da39bb5ea0e42c08c5fa182f3ed&token=documentgenerator%7CYWN0aW9uPWRvY3VtZW50Z2VuZXJhdG9yLmFwaS5kb2N1bWVudC5nZXRmaWxlJlNJVEVfSUQ9czEmaWQ9NTEmdHM9MTc3Mzg0NDA2OCZfPXZMVUFDSGMwQkY1QVpRbGQzTlNhV2ZIemNzMW5IZ1lM%7CImRvY3VtZW50Z2VuZXJhdG9yLmFwaS5kb2N1bWVudC5nZXRmaWxlfGRvY3VtZW50Z2VuZXJhdG9yfFlXTjBhVzl1UFdSdlkzVnRaVzUwWjJWdVpYSmhkRzl5TG1Gd2FTNWtiMk4xYldWdWRDNW5aWFJtYVd4bEpsTkpWRVZmU1VROWN6RW1hV1E5TlRFbWRITTlNVGMzTXpnME5EQTJPQ1pmUFhaTVZVRkRTR013UWtZMVFWcFJiR1F6VGxOaFYyWkllbU56TVc1SVoxbE18YTBiZmJhNjkwMDAwMDcxYjAwMDAwODQ0MDAwMDAxZjdmMGYxMDc1ZjI0MGRhMzliYjVlYTBlNDJjMDhjNWZhMTgyZjNlZCI%3D.6lsKyiThwQT0n4UyMQfXdyS%2BnBVTG08%2FpGguggYNGLE%3D"
}
},
"time": {
"start": 1773844068,
"finish": 1773844068.572038,
"duration": 0.572037935256958,
"processing": 0,
"date_start": "2026-03-18T17:27:48+03:00",
"date_finish": "2026-03-18T17:27:48+03:00",
"operating_reset_at": 1773844668,
"operating": 0.9536302089691162
}
}
Возвращаемые данные
result
object
Корневой элемент ответа (подробное описание)
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "0",
"error_description": "Cannot create document on deleted template"
}
| Код | Описание | Значение |
|---|---|---|
400 |
100 |
Bitrix\DocumentGenerator\Template constructor must be is public |
400 |
0 |
Empty required parameter "value" |
400 |
0 |
Cannot create document on deleted template |
400 |
0 |
Шаблон не найден |
400 |
0 |
Cannot create document |
400 |
0 |
You do not have permissions to view documents |
400 |
0 |
Maximum count of documents has been reached |
403 |
DOCGEN_ACCESS_ERROR |
Access denied |

