Игорь Акинфиев, проверьте, что ваш шаблон с ид 42 привязан к сущности "счет". Проверьте в интерфейсе в форме редактирования шаблона.
11.02.2020 10:34:32
Игорь Акинфиев, проверьте, что ваш шаблон с ид 42 привязан к сущности "счет". Проверьте в интерфейсе в форме редактирования шаблона.
|
|
|
|
11.02.2020 11:12:40
привязка есть, ошибка та же. с этим разобрался, в документации ошибка, объявленная переменная и используемая дальше в методе - несоответствие в букве. поправил, дальше возвращает, что процесс успешно выполнен, но файл не генерится, привязки все проставил. |
|
|
|
11.02.2020 15:10:58
Игорь Акинфиев, код из предыдущего примера должен работать. Можете подебажить стандартный механизм создания документа (через интерфейс) и посмотреть. Там также работает.
Ваш вариант с использованием апи корректный, файл будет создан. Но это просто файл, он его даже в базу не сохранит. Ни как файл, ни как документ. Попробуйте воспользоваться стандартным активити, а данные в документ подсовывайте на событии onBeforeProcessDocument. Код тот же самый, но всё остальное должно работать. |
|
|
|
12.02.2020 14:30:43
все, спасибо, заработало, в шаблоне кода была ошибка
|
|
|
|
21.03.2020 21:46:48
Добрый день, Антон Горбылев, !!!
Задача: добавить поля в провайдер, массив с товарами. Поля могут быть разными, например в текущем кейсе: Комментарий, Гарантия, Срок поставки Логически правильно - тянуть из свойств товаров, но проблема в следующем: 1. товары могут быть не из номенклатуры (свободно добавляемые товары в сущности "Сделка") 2. данные значения - динамические (у одного и того-же товара эти значения могут быть разными в разных сделках) По аналогии с данным кейсом:
вот код метода modifyProduct():
Может есть более элегантное решение? |
|||||||
|
|
22.03.2020 22:51:06
Антон Горбылев, и в продолжении текущего кейса:
Задача: Необходимо при определенных условиях подменить шаблон перед генерацией документа. Например:
Что сделал: по событию: onBeforeProcessDocument проверяю заполненность полей и выбираю нужный шаблон:
Однако документ все равно генерируется по шаблону, который привязан меню по которому кликнули: (для удобства чтения перенес параметры построчно)
|
|||||
|
|
23.03.2020 12:33:08
Чтобы новое поле добавилось в документ, вам надо передать его описание. В конце обработчика события добавьте следующее
В этом случае его значение появится в документе. Локально проверил, работает |
|||||
|
|
23.03.2020 12:42:45
Для реализации такой логики вам лучше сделать создание документа через активити "Создание документа CRM". Вы можете перед этим активити проверять ваши условия, в зависимости от них записать ид нужного документа в переменную и передать его в активити создания документа. Другой вариант - подсовывать какую-то свою логику на js. |
|||
|
|
24.03.2020 16:11:23
А если реализовать это через активити, то такого не сделаешь с использованием БП. Или я не прав? Тогда поподробнее можно логику?
вот код, может кому пригодится:
Антон Горбылев, следующий пул вопросов с которым столкнулся при решении данной задачи: 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. А если реализовать это через активити, то такого не сделаешь с использованием БП. Или я не прав? Тогда поподробнее можно логику? |
|||||||||
|
|
||||||||