Через onBeforeProcessDocument самый простой вариант. Посмотрите тему https://dev.1c-bitrix.ru/community/forums/forum23/topic117063/, там есть много примеров. С помощью события в документ можете прокинуть что угодно. Проблема в том, что ваши поля не будут отображаться в интерфейсе, т.е. для формирования шаблона вам придется где-то поддерживать и показывать список полей для значений списка.
Чтобы поля появились в интерфейсе понадобится намного больше телодвижений.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Ахат Баязи написал: 1. можно ли как-то переопределять штатные события вызова генератора через JS? 2. Есть ли аналог BX.DocumentGenerator.Document.onBeforeCreate в BX24? 3. А если реализовать это через активити, то такого не сделаешь с использованием БП. Или я не прав? Тогда поподробнее можно логику?
1. Оптимальный вариант будет следующий: При клике на кнопку "Документ" в первый раз идёт аякс-запрос на получение списка доступных шаблонов. На js аякс вызывается тут
На php этот запрос обрабатывается тут \Bitrix\DocumentGenerator\Controller\Document::getButtonTemplatesAction()
Вам надо перехватить событие onAjaxSuccess, в этом событии по урлу определить, что это нужный запрос, и в обработчике переопределить список шаблонов (видимо, придётся сделать ещё один аякс запрос). Больше ничего делать не надо, можно вообще никуда не лезть
2. вам надо сделать запрос к методу crm.documentgenerator.document.list
3. Через активити показать слайдер с документом конечно не получится. Может и есть способ, но мне не известен
Цитата
Ахат Баязи написал: 1. Каким методом можно это реализовать из локального приложения (через REST) 2. Как сгенерировать ссылку, чтобы она открывала документ в слайдере (см. скриншот ниже)?
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Ахат Баязи написал: Задача: Необходимо при определенных условиях подменить шаблон перед генерацией документа.
В обработчике события onBeforeProcessDocument нельзя подменить шаблон.
Для реализации такой логики вам лучше сделать создание документа через активити "Создание документа CRM".
Вы можете перед этим активити проверять ваши условия, в зависимости от них записать ид нужного документа в переменную и передать его в активити создания документа.
Другой вариант - подсовывать какую-то свою логику на js.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Ахат Баязи написал: Значения свойств переназначить получилось, а вот доп. поле $dataValue['W4A_TUTUT'] вывести не получилось, хотя в провайдер данное значение попадает
Добрый день.
Чтобы новое поле добавилось в документ, вам надо передать его описание.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Игорь Акинфиев, код из предыдущего примера должен работать. Можете подебажить стандартный механизм создания документа (через интерфейс) и посмотреть. Там также работает.
Ваш вариант с использованием апи корректный, файл будет создан. Но это просто файл, он его даже в базу не сохранит. Ни как файл, ни как документ.
Попробуйте воспользоваться стандартным активити, а данные в документ подсовывайте на событии onBeforeProcessDocument. Код тот же самый, но всё остальное должно работать.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Igor, если вам для сделки надо несколько документов с одним номером, то есть два варианта. Оба потребуют наличие роботов / БП.
1. Создаем БП "Создание сопроводительных документов". В БП первое активити - создание первого документа. В результате выполнения активити будет "Номер документа". Запишите этот номер в переменную. После первого активити ставьте столько активити создания документов, сколько вам нужно, но в каждом активити указывается поле {DocumentNumber} из переменной. Так у вас будет один номер во всех документах, созданных в рамках этого БП
2. Если у вас роботы. Аналогично первый робот создает первый документ, а номер пишете не в переменную, а в поле сделки. В последующих роботах заполняете поле {DocumentNumber} из поля сделки.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
G_107336047755713010335, вы можете написать php-код, в котором воспроизведете активити "Создание документа CRM", только без интерфейса (данные можно из переменных получить).
Код будет примерно следующий: - получаем ид шаблона, тип провайдера (лид / сделка) и ид лида / сделки из переменных - получаем данные о товарах из этого лида / сделки - формируем два новых ArrayDataProvider как нужно - вызываем апи создания документа, где передаем нужные данные в setFields и setValues - записываем нужные данные в переменные и можно их использовать дальше.