Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Шаблоны документов - заготовки



Модификаторы для шаблонов  - https://dev.1c-bitrix.ru/api_d7/bitrix/documentgenerator/modifiers.php
Про шаблоны - https://helpdesk.bitrix24.ru/open/7622241/
Пример от битрикса генерации документа https://dev.1c-bitrix.ru/api_d7/bitrix/documentgenerator/example.php

Примеры работы с шаблонами через апи:
Кастомизация полей при генерации генерации документов
Сгенерировать автоматом файл по шаблону и положить его в поле в сделки
{TotalBeforeDiscount} - Сумма без скидки и налогов
{TotalDiscount} - Сумма скидки
{TotalSum} - Общая сумма

Модификаторы для "денег"
  • WZ - сокращение от With Zeros. Если WZ=Y, то в сумме всегда будут показаны незначащие нули, независимо от выбранного формата валюты.
  • NS - сокращение от No Sign. Если NS=Y, то сумма будет отображаться без символа валюты, если NS=N, то наоборот символ валюты будет показан.
  • W - сокращение от Words. Если W=Y и валюта одна из списка (рубль, белорусский рубль, гривна, тенге), то сумма будет написана прописью.

Это поле отдается только в рамках CRM, поэтому в других модулях его нельзя будет использовать. Этот же тип поля используется для численных значений (поля количества товаров, количества строк), но там по умолчанию NS=Y Также все денежные значения возвращают этот тип, в том числе пользовательские поля типа "Деньги".
Пример:
1200.00руб. - {TotalSum~WZ=N, NS=N}
1200.00 - {TotalSum~WZ=N, NS=Y}
1200руб. - {TotalSum~WZ=Y, NS=N}
1200 - {TotalSum~WZ=Y, NS=Y}
Одна тысяча двести рублей 00 копеек {TotalSum~W=Y}

Для счета
{RequisiteHomeAddressText} - адрес регистрации
{RequisiteRegisteredAddressText} - юридический адрес

Поставщик: {MyCompanyRequisiteRqCompanyName}, ИНН {MyCompanyRequisiteRqInn}, КПП {MyCompanyRequisiteRqKpp}, {MyCompanyRequisiteRegisteredAddressText}, тел.: {MyCompanyPhone}
Покупатель (физ лицо):  {ContactLastName} {ContactName} {ContactSecondName}
Покупатель (юр лицо): {RequisiteName}, ИНН {RequisiteRqInn}

Товары
{ProductsIndex} - №
{ProductsProductName} - Товары (работы, услуги)
{ProductsProductQuantity} - Кол-во
{ProductsProductMeasureName} - Единица
{ProductsProductPriceRaw~WZ=Y} - Цена
{ProductsProductPriceRawSum~WZ=Y} - Сумма
{ProductsProductDiscountTotal~WZ=N } - Сумма скидки в товаре

Доставка для заказа
{PriceDelivery~WZ=X}

Дата
для форматирования даты https://www.php.net/manual/ru/datetime.format.php
{DocumentCreateTime~d.m.Y} > 07.10.2021
{DocumentCreateTime~”j” F Y}г. > "7" октября 2021г.

Форматирование имени
{FormattedName~Format=#TITLE# #LAST_NAME# #NAME# #SECOND_NAME#}
  • #TITLE# - обращение;
  • #NAME# - имя;
  • #LAST_NAME# - фамилия;
  • #SECOND_NAME# - отчество;
  • #NAME_SHORT# - первая буква имени с точкой;
  • #LAST_NAME_SHORT# - первая буква фамилии с точкой;
  • #SECOND_NAME_SHORT# - первая буква отчества с точкой.
{ContactFormattedName} - контакт
{AssignedFormattedName} - ответственный

Падежи
{FormattedName~Case=0} выведет имя в родительном падеже.
  • Case=-1 - именительный;
  • Case=0 - родительный;
  • Case=1 - дательный;
  • Case=2 - винительный;
  • Case=3 - творительный;
  • Case=4 - предложный
Адрес
{Address~Format=3,Separator=3}

Format (формата адреса,  принятый в стране)

  • Format=1 - Европа;
  • Format=2 - Великобритания;
  • Format=3 - Северная Америка;
  • Format=4 - Россия (улица -> страна);
  • Format=5 - Россия (страна -> улица).

Separator (разделитель строк)

  • Separator=1 - запятая;
  • Separator=2 - без разделителя;
  • Separator=3 - перевод строки.
Телефон

{ClientPhone~format=E.164}

  • format=E.164  +79535851309
  • format=International  +7 953 585-13-09
  • format=National  8 (953) 585-13-09
Множественные поля
Важно! Шаблоны документов не поддерживают множественные поля с типом Файл и Привязка к элементам CRM.
Телефон, Почта, Мессенджер или любое пользовательское поле со свойством Множественное.
{MyField~mfirst=n}
  • mfirst=y - выводить только первое значение
  • mfirst=n - выводить все значения

Для договора с ООО

{MyCompanyRequisiteRqCompanyFullName}, именуемое в дальнейшем «Лицензиар»,
в лице директора {MyCompanyRequisiteRqDirector~Format=#LAST_NAME# #NAME# #SECOND_NAME#,Case=0}, действующего на основании
Устава, с одной стороны, и {RequisiteName}, именуемое в дальнейшем «Лицензиат», в лице {UfCrm1614686800} {ContactFormattedName~Format=#LAST_NAME# #NAME# #SECOND_NAME#,Case=0},  действующего на основании {UfCrm1614513805}, с другой стороны,
заключили настоящий Договор о нижеследующем

Для договора с ИП

{MyCompanyRequisiteRqCompanyFullName}, именуемое в дальнейшем «Лицензиар», в лице директора {MyCompanyRequisiteRqDirector~Format=#LAST_NAME# #NAME# #SECOND_NAME#,Case=0}, действующего на основании Устава, с одной стороны, и {RequisiteName}, именуемое в дальнейшем «Лицензиат», с другой стороны, заключили настоящий Договор о нижеследующем

Реквизиты в договоре с ООО

 
Лицензиар
 
Лицензиат
 
{MyCompanyRequisiteRqCompanyName}
ИНН {MyCompanyRequisiteRqInn},
КПП   {MyCompanyRequisiteRqKpp},
Адрес: {MyCompanyRequisiteRegisteredAddressText},  
Р/с {MyCompanyBankDetailRqAccNum}
{MyCompanyBankDetailRqBankName}
БИК {MyCompanyBankDetailRqBik}
Корр.счет {MyCompanyBankDetailRqCorAccNum}
тел.:   {MyCompanyPhone}
                                                                                         
 
     
 
{RequisiteName}
ИНН {CompanyRequisiteRqInn},  
КПП {CompanyRequisiteRqKpp},  
Адрес:{CompanyRequisiteRegisteredAddressText}
Р/с   {CompanyBankDetailRqAccNum}
{CompanyBankDetailRqBankName}
БИК {CompanyBankDetailRqBik}
Корр.счет   {CompanyBankDetailRqCorAccNum}
тел.: {ClientPhone}

 
_________________________ /{MyCompanyRequisiteRqDirector~Format=#LAST_NAME#   #NAME_SHORT# #SECOND_NAME_SHORT#}/
М.П.
 
_______________/{ContactFormattedName~Format=#LAST_NAME#   #NAME_SHORT# #SECOND_NAME_SHORT#}/
М.П.

Реквизиты в договоре с ИП

 
Лицензиар
 
Лицензиат
 
{MyCompanyRequisiteRqCompanyName}
ИНН {MyCompanyRequisiteRqInn},
КПП   {MyCompanyRequisiteRqKpp},
Адрес: {MyCompanyRequisiteRegisteredAddressText},  
Р/с {MyCompanyBankDetailRqAccNum}
{MyCompanyBankDetailRqBankName}
БИК {MyCompanyBankDetailRqBik}
Корр.счет {MyCompanyBankDetailRqCorAccNum}
тел.:   {MyCompanyPhone}
                                                                                         
 
     
 
{RequisiteName}
ИНН {CompanyRequisiteRqInn},  
Адрес:{CompanyRequisiteRegisteredAddressText}
Р/с   {CompanyBankDetailRqAccNum}
{CompanyBankDetailRqBankName}
БИК   {CompanyBankDetailRqBik}
Корр.счет   {CompanyBankDetailRqCorAccNum}
тел.: {ClientPhone}

 
_________________________ /{MyCompanyRequisiteRqDirector~Format=#LAST_NAME#   #NAME_SHORT# #SECOND_NAME_SHORT#}/
М.П.
 
_______________/{RequisiteName}/
М.П.

Обработчик для коробки, который заполняет поля в предложении для шаблона КП
Есть поля-константы, которые должны периодически заполняться менеджером по качеству. Например, "количество внедренных проектов". Данные поля используются в нескольких видах КП. Править вручную все шаблоны не хочется.
тут как кастомизировать генерацию документов https://dev.1c-bitrix.ru/api_d7/bitrix/documentgenerator/customization.php
  1. Сделала нужные поля в Предложении, указала их в шаблонах
  2. Сделала предложение-шаблон  с заполненными данными полями.
  3. Завела глобальную переменную в БП с указанием ID данного предложения-шаблона
  4. Сделала БП с php-кодом, которая при создании Предложения запускает функцию  FillingCP,
  5. Сделала фукнцию FillingCP в init.php, которая проставляет в новом предложении значения из предложения-шаблона
function FillingCP($id,$idSample){

   if(!empty($id)&& !empty($idSample) && ($id !=$idSample) && CModule::IncludeModule('crm')){
      $arFilter = array(
         "ID"=>$idSample, //выбираем определенную сделку по ID
         "CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
      );            
      $arSelect = array(
         "ID",         
         "UF_CRM_QUOTE_1634559317377", // постоянных клиентов
         "UF_CRM_QUOTE_1634559336425", //возраст компании
         "UF_CRM_QUOTE_1634559363042", //количество сертификатов         
         "UF_CRM_QUOTE_1634559439169",//количество специалистов компании
         "UF_CRM_QUOTE_1634562568132",//положительных отзывов
         "UF_CRM_QUOTE_1634567328573",//внедренных решений  
      );            

      $res = CCrmQuote::GetList(Array(), $arFilter,false,false, $arSelect);
      if($arQuote = $res->Fetch()){
         unset($arQuote["ID"]);         
         $quote = new CCrmQuote(false);         
         $arOptions = array("CURRENT_USER"=> 1); //из под кого обновляем         
         $upRes = $quote->Update($id, $arQuote, true, true, $arOptions); 
         
      }      
   }
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!