Разработка системы шаблонов договоров Битрикс24
Подготовка договора вручную — это 30–60 минут копипасты данных из CRM в Word, правки реквизитов, пересохранения и пересылки. Умноженное на 50 договоров в месяц — это полная ставка сотрудника. Система шаблонов договоров в Битрикс24 сокращает генерацию договора до 2 минут.
Встроенная функциональность: генератор документов CRM
Битрикс24 имеет встроенный модуль CRM → Документы с генерацией документов из шаблонов. Шаблоны создаются в формате DOCX с метками-переменными, которые заменяются данными из карточки CRM.
Встроенные переменные для сделки:
{=Document.TITLE} - Название сделки
{=Document.OPPORTUNITY} - Сумма сделки
{=Document.CONTACT.NAME} - Имя контакта
{=Document.COMPANY.TITLE} - Название компании
{=Document.UF_CRM_XXXXX} - Пользовательское поле
Ограничения встроенного модуля: нет условного форматирования (разный текст в зависимости от типа договора), нет циклов по товарным позициям, нет сложных вычислений.
Расширенная система через внешний генератор
Для серьёзных требований к договорам (несколько типов, условные блоки, спецификации) нужен внешний генератор — PHP-скрипт или сервис, который формирует DOCX/PDF по шаблону с расширенной логикой.
Стек для генерации DOCX: PhpWord (открытая библиотека) + кастомный препроцессор шаблонов.
use PhpOffice\PhpWord\TemplateProcessor;
function generateContract($dealId, $templatePath) {
// Получаем данные сделки из Битрикс24
$deal = CRest::call('crm.deal.get', ['id' => $dealId])['result'];
$contact = CRest::call('crm.contact.get',
['id' => $deal['CONTACT_ID']])['result'];
$company = CRest::call('crm.company.get',
['id' => $deal['COMPANY_ID']])['result'];
$template = new TemplateProcessor($templatePath);
// Подстановка данных
$template->setValue('CONTRACT_NUMBER', generateContractNumber($dealId));
$template->setValue('CONTRACT_DATE', date('d.m.Y'));
$template->setValue('CLIENT_NAME', $company['TITLE']);
$template->setValue('CLIENT_INN', $company['UF_CRM_INN']);
$template->setValue('AMOUNT', number_format($deal['OPPORTUNITY'], 2, '.', ' '));
$template->setValue('AMOUNT_WORDS', amountToWords($deal['OPPORTUNITY']));
// Условный блок: НДС или без НДС
if ($deal['UF_CRM_VAT'] === 'Y') {
$template->setValue('VAT_BLOCK', 'в том числе НДС 20%: ' .
number_format($deal['OPPORTUNITY'] * 0.2, 2));
} else {
$template->setValue('VAT_BLOCK', 'НДС не облагается');
}
$outputPath = '/tmp/contract_' . $dealId . '.docx';
$template->saveAs($outputPath);
return $outputPath;
}
Интеграция с карточкой CRM
Кнопка «Сформировать договор» в карточке сделки — через placement-приложение:
// JS SDK Битрикс24 в placement CRM_DEAL_TOOLBAR
BX24.callMethod('crm.deal.get', {id: currentDealId}, function(result) {
const deal = result.data();
// Вызов вашего endpoint генерации
fetch('/api/generate-contract', {
method: 'POST',
body: JSON.stringify({dealId: deal.ID, templateId: selectedTemplate})
})
.then(r => r.blob())
.then(blob => {
// Сохраняем готовый документ обратно в сделку
uploadFileToDeal(blob, deal.ID);
});
});
После генерации файл прикрепляется к сделке через crm.deal.update с полем UF_CRM_FILES и одновременно создаётся активность «Договор сформирован» в таймлайне.
Электронная подпись и согласование
Следующий шаг после генерации — процесс согласования и подписания. Два варианта:
Внутреннее согласование через бизнес-процесс: юрист → финансовый директор → гендиректор. Запускается автоматически при смене статуса договора в CRM.
Электронная подпись через интеграцию с СБИС, Контур.Подпись или DocuSign. Договор отправляется клиенту на подпись, статус (подписан/отклонён) синхронизируется обратно в CRM.
Система шаблонов окупается за 2–3 месяца только на экономии времени. Плюс исчезают ошибки ручного копирования реквизитов — а это репутационные риски при подписании договоров с некорректными данными.







