Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Дмитрий Несвященко написал: Подскажите как прикрепить с помощью API сгенерированный документ в список документов для карточки сделки или смарт-процесса.
сюда попадают не сгенерированные документы, а шаблоны документов. чтобы они отображались настройках шаблона установите: Привязать к разделам CRM а сгенерированные автоматом попадут в список документов.
Дмитрий Несвященко написал: Подскажите как прикрепить с помощью API сгенерированный документ в список документов для карточки сделки или смарт-процесса.
сюда попадают не сгенерированные документы, а шаблоны документов. чтобы они отображались настройках шаблона установите: Привязать к разделам CRM а сгенерированные автоматом попадут в список документов.
При привязке в качестве шаблона в стандартном окне редактирования шаблона нельзя привязать своего провайдера, а так же переместить сгенерированный автоматом файл в битрикс хранилище. Тем более документы генерируются внутри БП с использованием своего провайдера.
Дмитрий Несвященко написал: Подскажите как прикрепить с помощью API сгенерированный документ в список документов для карточки сделки или смарт-процесса.
сюда попадают не сгенерированные документы, а шаблоны документов. чтобы они отображались настройках шаблона установите: Привязать к разделам CRM а сгенерированные автоматом попадут в список документов.
При привязке в качестве шаблона в стандартном окне редактирования шаблона нельзя привязать своего провайдера, а так же переместить сгенерированный автоматом файл в битрикс хранилище. Тем более документы генерируются внутри БП с использованием своего провайдера.
а зачем вам мудрить со своим провайдером? используйте событие: onAfterProcessDocument
Дмитрий Несвященко написал: Подскажите как прикрепить с помощью API сгенерированный документ в список документов для карточки сделки или смарт-процесса.
Если вам туда надо добавить нестандартное действие, то лучше добавить его в это выпадающее меню на javascript.
При первом клике на эту кнопку содержимое выпадающего меню формируется аяксом. Надо перехватить событие аякса и подкинуть в response дополнительный пункт. Другой вариант - перехватить клик на кнопку и запустить полностью свою логику. Ещё вариант - перехватить событие показа попапа и наполнить контентом самостоятельно. В любом случае это надо делать на фронте
Дмитрий Несвященко написал: Подскажите как прикрепить с помощью API сгенерированный документ в список документов для карточки сделки или смарт-процесса.
Если вам туда надо добавить нестандартное действие, то лучше добавить его в это выпадающее меню на javascript.
При первом клике на эту кнопку содержимое выпадающего меню формируется аяксом. Надо перехватить событие аякса и подкинуть в response дополнительный пункт. Другой вариант - перехватить клик на кнопку и запустить полностью свою логику. Ещё вариант - перехватить событие показа попапа и наполнить контентом самостоятельно. В любом случае это надо делать на фронте
Антон Горбылев, здравствуйте. Сам документ уже генерируется и отлажен провайдер данных. Я хочу прикрепить сгенерированный документ (pdf) в список документов. И что бы запись о документе была на постоянно. Повторить тот же путь, что делается при стандартном создании документа по шаблону. И когда нажимаешь список документов и открывается окно списка документов, что бы там был мой документ. Ахат Баязи, правильно направил на перехват событий генератора документов. Но хотелось бы знать методы с помощью которых можно получить список документов, которые сгенерированы, что бы ссылки на них использовать в БП внутри смарт процессов.
Сейчас сгенерированный файлы прикрепляется к полю типа файл смарт процесса. Такое решение не нравится. Хочу печатные формы документов хранить в разделе документы смарт-процесса
Дмитрий Несвященко, подсунуть документ, созданный на основе одного провайдера, в список документов другого провайдера по-простому не получится.
Чтобы сделать как вам нужно, придется пойти следующим путем: 1. С помощью описанного мной способа надо заменить ссылку "Список документов" на вашу собственную страницу (либо ниже добавить ещё одну) 2. Создать новую страницу 3. Скопировать полностью компонент documentgenerator.documents 4. В классе компонента заменить метод \DocumentGeneratorDocumentsComponent::getListFilter(), сформировав нужный вам фильтр для списка. 5. Возможно, понадобятся манипуляции с фильтром, чтобы добавить туда новые поля. Но это всё можно сделать в этом же компоненте.
Можно попробовать другой вариант - встроить js-либу, которая будет показываться на странице списка документов и аяксом добавлять в грид строки. Но работать и выглядеть будет стремно.
По поводу ссылки на страницу документа, можете посмотреть ссылку фрейма в слайдере просмотра документа. /bitrix/components/bitrix/crm.document.view/slider.php?documentId=417
По прямой ссылке будет открываться без слайдера. Если нужен слайдер, то можно воспользоваться методом BX.DocumentGenerator.openUrl() из js-экстеншена documentpreview
Nona Khujadze,если речь о возможности склеить два куска шаблона, то такого нет. Каждый шаблон - это docx файл с кучей файлов и связей внутри, их нельзя просто склеить
Только "setSourceType" использую другой: \Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Deal::class); С вариантом из примера "\Bitrix\DocumentGenerator\DataProvider\Rest::class)" возникает ошибка: "Cant process document on template without sourceType".
Использую свой шаблон, который просто содержит строчки:
{SomeDate} {Image} {BAR_CODE} {Table}
Подскажите пожалуйста в чем может быть дело, похоже я запутался. Просматривал вашу презентацию по модуля генератор документов, но ответа на свой вопрос не смог найти.
Андрей Бубнов, в документации указано, как вставлять картинки - также, как печати и подписи. В шаблоне должна быть произвольная картинка, внутри неё код.
Антон Горбылев, большое спасибо! Совет помог! Проверял на трех типах изображений: jpg, png, bmp. Заработало только с .bmp, если действительно подходит только .bmp, то хорошо бы добавить эту информацию сюда: https://helpdesk.bitrix24.ru/open/7622241/
Добрый день. Есть задача использовать в одном шаблоне файла различный контент, в зависимости от содержания полей сделки. В одном случае таблица должна быть с 7ю колонками, в другом с 5 колонками. В обоих случаях в колонках содержатся разные поля. Я вставил в шаблон 2 блока с таблицами(BLOCK_START - BLOCK_END), каждый со своим полем естественно. Поля заполняю через перехват события onBeforeProcessDocument с помощью провайдера DocumentGenerator\DataProvider\ArrayDataProvider
В документации написано, что в случае отсутствия значений поля(пустой массив) - блок с содержимым полностью удаляется. Однако как бы я не пытался, содержимое блоков(таблицы) остается всегда.
Можете дать комментарий по этому поводу, как убирать блоки полностью из документа?
, а не проще ли иметь два шаблона на этот случай, а создание документа создавать через БП?
Такие манипуляции с содержимым - это уже сложно для события.
Содержимое повторяющихся блоков стирается, если - Body знает, что это повторяющаяся область, привязанная к полю со списком - этот список пустой.
Соответственно, вам надо всегда инициализировать оба списка для обеих областей, но заполняться должен только один из них. Но это только теория, на практике не знаю, будет работать или нет (по идее должно)
написал: а не проще ли иметь два шаблона на этот случай, а создание документа создавать через БП?
Через БП выбор шаблона реализуется без проблем, однако нужен еще и ручной вариант. А в ручном варианте ты заранее не знаешь какие поля есть в товаре. А шаблон нужно выбирать в зависимости от заполненности этих полей.
Цитата
написал: Соответственно, вам надо всегда инициализировать оба списка для обеих областей, но заполняться должен только один из них. Но это только теория, на практике не знаю, будет работать или нет (по идее должно)
Вот именно тут и не получается. Я ниже приведу пример инициализации поля. Возможно что я что-то делаю не так.
public function onBeforeProcessDocumentHandler($event) {
Второе поле создаю полностью аналогично, но $objectData это массив пустых массивов. $objectData = [[ ], [ ]];
В итоге не заполняется первая таблица и не убирается вторая, где пустой массив. В готовом документе получается вот так: http://prntscr.com/2325otz
В этой теме я находил пример с подобной реализацией, но он у меня тоже не заработал. Да и не отличается особо от моего. Где то я напутал в инициализации. Подскажете в чем ошибка?
, не надо использовать и повторяющиеся блоки, и таблицу. Таблица множится автоматически, если в строках есть поля из элементов списков. Попробуй из шаблона убрать повторяющиеся блоки.