Розробка системи шаблонів договорів Бітрікс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 місяці лише на економії часу. Плюс зникають помилки ручного копіювання реквізитів — а це репутаційні ризики при підписанні договорів із некоректними даними.







