Цитата |
---|
Антон Горбылев написал: В обработчике события onBeforeProcessDocument нельзя подменить шаблон. |
Обидно, досадно, но ладно...
Цитата |
---|
Антон Горбылев написал: Для реализации такой логики вам лучше сделать создание документа через активити "Создание документа CRM". |
да, с самого начала так хотел, но заказчик хочет, чтобы процесс генерации документа проходил через штатный функционал, с показом документа в слайдере.
А если реализовать это через активити, то такого не сделаешь с использованием БП. Или я не прав? Тогда поподробнее можно логику?
Цитата |
---|
Антон Горбылев написал: Другой вариант - подсовывать какую-то свою логику на js. |
Да пришлось так и сделать.
вот код, может кому пригодится:
Код |
---|
w4aGetQuote: function(){
let w4aDefaultTemplateId = 3; // на всяк случай имеем шаблон по умолчанию
let ownerID = 13;
let templateId = 3; // standard (with delivery time & comments)
// templateId = 10; // without comments & delivery time
// templateId = 11; //with comments
// templateId = 12; // with delivery time
if(this.w4aQuoteTemplateId !== 0)
templateId = this.w4aQuoteTemplateId; // calculate template (эта переменная рассчитывается после сохранения товаров в таблицу через AJAX)
let link = '/bitrix/components/bitrix/crm.document.view/slider.php';
link += '?providerClassName=Bitrix\\Crm\\Integration\\DocumentGenerator\\DataProvider\\Deal';
link += '&templateId='+templateId+'&value='+ownerID+'&analyticsLabel=generateDocument&templateCode=null';
let img = '/bitrix/components/bitrix/crm.document.view/templates/.default/images/document_view.svg';
// сама функция вызова слайдера генератора документов.
BX.DocumentGenerator.Document.onBeforeCreate(link, {}, img)
} |
==================================
Антон Горбылев, следующий пул вопросов с которым столкнулся при решении данной задачи:
1. Чтобы использовать вышеописанную логику, я сначала попытался перехватить событие через JS штатного вызова генератора документов, но что-то пошло не так. Сколько не пытался, слайдер игнорил мои перехваты, и открывался с теми параметрами, которые указаны на линке штатного вызова.
2. потом попытался написать локальное приложение, чтобы вызов меню сделать из Placements-CRM_DEAL_DETAIL_TOOLBAR, но столкнулся со следующей проблемой:
BX - недоступен из приложения, а аналог в BX24 я не нашел.
3. В итоге рабочее решение нашел: посадил кнопку в кастомный компонент:
bitrix::crm.product_row.list (local/components/w4a.bitrix/crm.product_row.list)
и там запускаю генерирование.
ACHTUNG!!! Вопросы:1. можно ли как-то переопределять штатные события вызова генератора через JS?
2. Есть ли аналог BX.DocumentGenerator.Document.onBeforeCreate в BX24?
3. А если реализовать это через активити, то такого не сделаешь с использованием БП. Или я не прав? Тогда поподробнее можно логику?