documentgenerator.template.add
Загрузить шаблон
Описание
Метод documentgenerator.template.add добавляет новый шаблон документа.
Параметры
fields
object
обязательный
Набор полей шаблона (подробное описание)
Параметр fields
name
string
обязательный
Название шаблона
fileId
integer
обязательный
Идентификатор ранее загруженного файла шаблона с Диска.
Получить идентификатор файла можно двумя способами.
Использовать один из методов загрузки файла:
- disk.storage.uploadfile
- disk.folder.uploadfile
Использовать один из методов получения списка файлов:
- disk.storage.getchildren
- disk.folder.getchildren
file
file
обязательный
Файл шаблона, если его нужно загрузить. Используется вместо параметра fileId.
Файл можно передать тремя способами:
- строкой base64
- массивом ["имя_файла.docx","base64_контент"]
- как файл multipart/form-data
Частые кейсы и сценарии
numeratorId
integer
обязательный
Идентификатор нумератора.
Получить идентификатор можно после создания нумератора или методом получения списка нумераторов
region
string
обязательный
Регион шаблона, например, ru
code
string
необязательный
Символьный код шаблона
users
array
необязательный
Пользователи, у которых будет доступ к шаблону.
Возможные значения:
U{id}— пользовательG{id}— группа пользователейAU— все авторизованные пользователиUA— все пользователиD{id}— отделDR{id}— отдел с подотделамиSG{id}— рабочая группа или проектSG{id}_A— владелец рабочей группы или проектаSG{id}_E— модераторы рабочей группы или проектаSG{id}_K— все члены рабочей группы или проекта
Если не передан, автоматически добавляется текущий пользователь
active
char
необязательный
Активность шаблона. Возможные значения:
- Y — активен
- N — не активен
По умолчанию Y
withStamps
char
необязательный
Подставлять печати и подписи. Возможные значения:
- Y — да
- N — нет
По умолчанию N
sort
integer
необязательный
Индекс сортировки
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"name":"SUPPLY_CONTRACT Template","fileId":5641,"numeratorId":1,"region":"ru","code":"REST_TEMPLATE","users":["UA"],"active":"Y","withStamps":"N","sort":500}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/documentgenerator.template.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"name":"SUPPLY_CONTRACT Template","fileId":5641,"numeratorId":1,"region":"ru","code":"REST_TEMPLATE","users":["UA"],"active":"Y","withStamps":"N","sort":500},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/documentgenerator.template.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 TemplateAddResult = {
template: {
id: string
name: string
region: string
code: string
download: string
downloadMachine: string
active: 'Y' | 'N'
moduleId: string
numeratorId: string
withStamps: 'Y' | 'N'
providers: Record<string, string>
users: Record<string, string>
isDeleted: 'Y' | 'N'
sort: string
createTime: ISODate
updateTime: ISODate
}
}
try {
const response = await $b24.actions.v2.call.make<TemplateAddResult>({
method: 'documentgenerator.template.add',
params: {
fields: {
name: 'SUPPLY_CONTRACT Template',
fileId: 5641,
numeratorId: 1,
region: 'ru',
code: 'REST_TEMPLATE',
users: ['UA'],
active: 'Y',
withStamps: 'N',
sort: 500,
},
},
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('Added template:', result.template.id, result.template.name)
}
} 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 addTemplate() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'documentgenerator.template.add',
params: {
fields: {
name: 'SUPPLY_CONTRACT Template',
fileId: 5641,
numeratorId: 1,
region: 'ru',
code: 'REST_TEMPLATE',
users: ['UA'],
active: 'Y',
withStamps: 'N',
sort: 500,
},
},
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('Added template:', result.template.id, result.template.name)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addTemplate)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
template_fields = {
"name": "SUPPLY_CONTRACT Template",
"fileId": 5641,
"numeratorId": 1,
"region": "ru",
"code": "REST_TEMPLATE",
"users": [
"UA",
],
"active": "Y",
"withStamps": "N",
"sort": 500,
}
try:
bitrix_response = client.documentgenerator.template.add(
fields=template_fields,
).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.template.add',
[
'fields' => [
'name' => 'SUPPLY_CONTRACT Template',
'fileId' => 5641,
'numeratorId' => 1,
'region' => 'ru',
'code' => 'REST_TEMPLATE',
'users' => ['UA'],
'active' => 'Y',
'withStamps' => 'N',
'sort' => 500,
],
]
);
$result = $response->getResponseData()->getResult();
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
}
BX24.callMethod(
'documentgenerator.template.add',
{
fields: {
name: 'SUPPLY_CONTRACT Template',
fileId: 5641,
numeratorId: 1,
region: 'ru',
code: 'REST_TEMPLATE',
users: ['UA'],
active: 'Y',
withStamps: 'N',
sort: 500
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'documentgenerator.template.add',
[
'fields' => [
'name' => 'SUPPLY_CONTRACT Template',
'fileId' => 5641,
'numeratorId' => 1,
'region' => 'ru',
'code' => 'REST_TEMPLATE',
'users' => ['UA'],
'active' => 'Y',
'withStamps' => 'N',
'sort' => 500,
],
]
);
print_r($result);
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "documentgenerator.template.add", b24.Params{
"fields": b24.Params{
"name": "SUPPLY_CONTRACT Template",
"fileId": 5641,
"numeratorId": 1,
"region": "ru",
"code": "REST_TEMPLATE",
"users": []string{"UA"},
"active": "Y",
"withStamps": "N",
"sort": 500,
},
})
if err != nil {
return fmt.Errorf("documentgenerator.template.add: %w", err)
}
// Метод заворачивает ответ в объект с ключом "template".
raw, ok := b24.Unwrap(res.Result, "template")
if !ok {
return fmt.Errorf("в ответе нет ключа template")
}
var item struct {
ID b24.ID `json:"id"`
Name string `json:"name"`
Region string `json:"region"`
Code string `json:"code"`
Download string `json:"download"`
Active string `json:"active"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.Name)
Ответ
HTTP-статус: 200
{
"result": {
"template": {
"id": "57",
"name": "SUPPLY_CONTRACT Template",
"region": "ru",
"code": "REST_TEMPLATE",
"download": "https://mysite.ru/bitrix/services/main/ajax.php?action=documentgenerator.api.template.download&SITE_ID=s1&id=57&ts=0",
"active": "Y",
"moduleId": "rest",
"numeratorId": "1",
"withStamps": "N",
"providers": {
"bitrix\\documentgenerator\\dataprovider\\rest": "bitrix\\documentgenerator\\dataprovider\\rest"
},
"users": {
"UA": "UA"
},
"isDeleted": "N",
"sort": "500",
"createTime": "2026-03-23T16:51:25+03:00",
"updateTime": "2026-03-23T16:51:25+03:00",
"downloadMachine": "https://mysite.ru/rest/documentgenerator.api.template.download.json?auth=6d53c1690000071b00000844000001f7f0f1075612a492ef6fe0b4127e521b543e4376&token=documentgenerator%7CYWN0aW9uPWRvY3VtZW50Z2VuZXJhdG9yLmFwaS50ZW1wbGF0ZS5kb3dubG9hZCZTSVRFX0lEPXMxJmlkPTU3JnRzPTAmXz1IeG56TmtsQklGNjRsQlBkNkNiekNwd1U2bnduQk40Mw%3D%3D%7CImRvY3VtZW50Z2VuZXJhdG9yLmFwaS50ZW1wbGF0ZS5kb3dubG9hZHxkb2N1bWVudGdlbmVyYXRvcnxZV04wYVc5dVBXUnZZM1Z0Wlc1MFoyVnVaWEpoZEc5eUxtRndhUzUwWlcxd2JHRjBaUzVrYjNkdWJHOWhaQ1pUU1ZSRlgwbEVQWE14Sm1sa1BUVTNKblJ6UFRBbVh6MUllRzU2VG10c1FrbEdOalJzUWxCa05rTmlla053ZDFVMmJuZHVRazQwTXc9PXw2ZDUzYzE2OTAwMDAwNzFiMDAwMDA4NDQwMDAwMDFmN2YwZjEwNzU2MTJhNDkyZWY2ZmUwYjQxMjdlNTIxYjU0M2U0Mzc2Ig%3D%3D.vtTu%2B9Ac%2BT5VgeyDm1jiVBGsmCQagvrqjACd%2BNgDigA%3D"
}
},
"time": {
"start": 1774273885,
"finish": 1774273885.843453,
"duration": 0.8434529304504395,
"processing": 0,
"date_start": "2026-03-23T16:51:25+03:00",
"date_finish": "2026-03-23T16:51:25+03:00",
"operating_reset_at": 1774274485,
"operating": 0
}
}
Возвращаемые данные
result
object
Корневой элемент ответа (подробное описание)
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "0",
"error_description": "Empty required fields: numeratorId"
}
| Код | Описание | Значение |
|---|---|---|
400 |
100 |
Could not find value for parameter {fields} |
400 |
100 |
Invalid value to match with parameter {fields}. Should be value of type array |
400 |
0 |
Empty required fields: name, numeratorId, region |
400 |
0 |
Missing file content |
400 |
0 |
You do not have permissions to modify templates |

