# Для разработчиков: Генерация сертификатов

<p class="callout info">В данной статье описан процесс разработки генерации сертификатов. Про работу с шаблонами можно почитать в [отдельной статье](https://howto.stankin.ru/books/polzovatelskaya-dokumentaciya-bitriks/page/generaciya-sertifikatov-i-obnovlenie-sablonov).</p>

Для генерации сертификата необходимо создать событие, которое мы обычно называем "Генерация сертификата".

<p class="callout warning">Ответственные за сертификаты должны будут проконтролировать весь процесс генерации сертификатов на тот случай, если будут выявлены какие-либо дефекты в настройке. В связи с этим, не стоит добавлять автоматическую смену стадии сразу после генерации сертификата, лучше будет, если ответственные сначала проверят качество сгенерированных сертификатов, а уже затем самостоятельно перенесут карточки на необходимые стадии.</p>

### Редактирование шаблона бизнес-процесса

Для созданного нами события нужно настроить шаблон бизнес-процесса.

Для начала стоит продумать генерацию ФИО участника. **Есть два способа это реализовать.**

**Первый способ** - самый простой. Достаточно в шаблоне указать ключевые слова: **{ContactFormattedName}**. Тогда ФИО будет автоматически сгенерирован в сертификате и не нужно создавать дополнительные активити в шаблоне бизнес-процесса.

Если такой способ генерации ФИО не устраивает по той или иной причине и есть необходимость сделать по-своему, то для этого есть **второй способ**, он основан на бизнес-процессах и не так прост в реализации. Для начала нужно добавить активити "Выбор данных CRM". Благодаря ему мы получим доступ к контактным данным пользователя, в том числе и к ФИО. К сожалению, из-за какого-то бага просто использовать полученные данные в генерации сертификата не достаточно. Необходимо присвоить эти данные к переменным. Для того, чтобы создать переменные, нужно нажать на пункт в меню "Параметры шаблона" и перейти к пункту "Переменные".

[![image-1701157660720.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701157660720.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701157660720.png)

<p class="callout warning">Чтобы не возникло путаницы, стоит указывать одинаковые названия и идентификаторы для переменных.</p>

Чтобы присвоить данные к переменным, придется использовать активити "PHP код". Вот пример присвоения ФИО в отдельные переменные:

```PHP
//В данном примере была необходимость привести ФИО к верхнему регистру.
$str = '{=A72930_27475_91333_16056:NAME}'; //В $str помещаются данные, которые мы получили при помощи активити "Выбор данных CRM".
$firstName = mb_strtoupper($str); //При помощи mb_strtoupper() мы приводим текст к верхнему регистру.
$this->setVariable('firstName', $firstName); //Помещаем результат в созданные ранее переменные. 
$str = '{=A72930_27475_91333_16056:SECOND_NAME}';
$secondName = mb_strtoupper($str);
$this->setVariable('secondName', $secondName);
$str = '{=A72930_27475_91333_16056:LAST_NAME}';
$lastName = mb_strtoupper($str);
$this->setVariable('lastName', $lastName);
```

<p class="callout warning">Данные, которые мы получаем при помощи активити "Выбор данных CRM", мы присваиваем при помощи меню "Вставка значения", в которой нужно выбрать пункт "Дополнительные результаты". Самостоятельно вводить конструкции по типу {=A72930\_27475\_91333\_16056:NAME} не стоит! см. скриншот ниже</p>

[![image-1701160377992.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701160377992.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701160377992.png)

Перейдем к активити, который отвечает за сам процесс генерации сертификата. Он называется "Создать документ".

В нем нужно выбрать шаблон, который будет генерироваться и данные, которые в этом шаблоне должны быть подставлены. Остальные настройки делайте по вашему усмотрению.

В шаблоне должны быть указаны ключевые слова, вместо которых будут подставляться данные. Чтобы указать какие данные будут использоваться на месте ключевых слов, нужно в подменю "Поля документа" выбрать ключевые слова, которые битрикс автоматически определит, и указать поля, которые содержат необходимые данные. Если данные содержаться в переменных, то нужно добавлять их по такому методу:

[![image-1701159019018.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701159019018.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701159019018.png)

<p class="callout warning">Переменные нужно указывать при помощи меню "Вставка значения" в пункте "Переменные" см. скриншот ниже</p>

[![image-1701159348250.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701159348250.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701159348250.png)

Вероятнее всего, после того, как сертификат будет сгенерирован, его нужно будет отправить по почте. Поэтому стоит заблаговременно его сохранить в файловом поле "Генерация сертификата". Для этого стоит создать активити "Изменить элемент смарт-процесса". В нем нужно указать смарт-процесс, в котором ведется работа. В качестве фильтра указать ID равно {{ID}}, ну и ниже указать необходимое файловое поле, в котором сохраним сертификат.

[![image-1701160656991.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701160656991.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701160656991.png)

Сам сертификат можно найти в меню "Вставка значения" в пункте "Дополнительные результаты."

[![image-1701161214880.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701161214880.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701161214880.png)

### Отправка сертификата

Чтобы отправить сертификат по почте, нужно его прикрепить к письму. Для этого в активити "Отправить письмо клиенту" используется настройка "Вложения", в которой нужно указать поле, в котором мы сохранили сертификат.

[![image-1701159913167.png](https://howto.stankin.ru/uploads/images/gallery/2023-11/scaled-1680-/image-1701159913167.png)](https://howto.stankin.ru/uploads/images/gallery/2023-11/image-1701159913167.png)