Эти окна вызываются из окна просмотра/редактирования сделки -
Если разбирать компонент documentgenerator.placeholders, то он вот тут он все равно выберет родной класс модуля crm -
09.04.2020 12:55:48
Как я понимаю в этот список полей попасть невозможно вообще.
Эти окна вызываются из окна просмотра/редактирования сделки - Если разбирать компонент documentgenerator.placeholders, то он вот тут он все равно выберет родной класс модуля crm - |
|
|
|
09.04.2020 13:06:45
А дефолтный фильтр, как я понимаю, берется из базы (я авторизован) -
|
|
|
|
09.04.2020 13:10:19
А в один шаблон документа можно плейсхолдеры (макросы) вставлять из разных провайдеров?
|
|
|
|
09.04.2020 16:43:22
Антон Горбылев,написал вам в личные сообщения форма
![]() |
|
|
|
09.04.2020 19:02:17
|
|||
|
|
09.04.2020 19:31:51
Главное проверить, что ваш провайдер появился в списке провайдеров в фильре. Дальше дело техники.
Вы попробовали способ, который я посоветовал? Там для прототипа работы совсем немного |
|||||||
|
|
10.04.2020 10:22:31
Плейсхолдеры в интерфейс я добавил.
Но заказчик хочет чтобы его текущие документы продолжали работать из стандартного интерфейса, из сделки (документы уже сделаны), т.к. первым будет все равно вызываться провайдер Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Deal. Поэтому оставшиеся плейсхолдеры я планирую менять на событии onBeforeProcessDocument. Вот только пока не знаю, как их туда подсунуть из своего проваайдера. Алексей Гребнев, подскажите, как лучше переделать пример из моего сообщения =========== Еще не пойму как через событие onBeforeProcessDocument добавить массив элементов. В тестовом шаблоне документа свои плейсхолдеры выглядят так - |
|
|
|
10.04.2020 14:24:34
Нашел пример вот тут -
Спасибо вам за пример ![]() |
|
|
|
10.04.2020 16:13:51
Вам надо перехватить результат отправки аякс-запроса на получение списка шаблонов для текущей сущности и переопределить его, добавив туда нужный вам провайдер вместо стандартного. После этого всё должно заработать само, из сделки будет печататься документ через ваш провайдер |
|||
|
|
10.04.2020 17:08:25
============================================= И еще один вопрос. Тестовый скрипт -
Возможно ошибка в xml содержимом docx файла? Или я совсем слепой и по какой-то другой причине не вижу своей ошибки в коде... |
||||||||||||
|
|
10.04.2020 19:48:25
Задача №2. Выбор шаблона в зависимости от условий - проблема решена (решение:
но думаю по аналогии можно перехватить событие JS и подсунуть свою JS-логику вот кусок кода без купюр:
|
|||||||||||
|
|
11.04.2020 07:37:13
Используйте БП, там все это есть: 1. создаете шаблон документа 2. в БП, генерируете, с подстановкой нужного поля 3. получаете созданный файл (ссылку) внутри БП. 4. пишем файл в переменную БП "VarFileLink" 5 номализуем ссыку через действие PHP code:
В итоге у вас в переменной БП VarFileLink будет записан урл для скачивания файла, который вы сгенерировали через генератор документов. Но мне кажется, что это огород на городили. Но я расписал все в точности, согласно вашей бизнес-логики. |
|||||
|
|
11.04.2020 12:29:49
Ахат, большое спасибо.
На счет бизнес-логики: Человек просится в командировку, набирает сделки(заполняя поля), созданные для компаний, выбирает контакты из этих компаний, с кем планирует встречаться, для каждой компании создаются по одной задаче с чек листом, записываются суммы в траты, которые имеют место быть в командировке. В результате должен получиться файл с текстом такого вида: Пожалуйста, согласуйте командировку c 20.04.2020 по 27.04.2020 года.
· и встречи со следующим списком людей: · · · По всем предприятиям ведутся сделки: · · По сделкам в командировке запланированы следующие задачи: · · ·
·
·
· ·
· ·
При этом после формирования файла, менеджеру будет предложен доступ к сформированному списку в файле для редактирования в папке командировка, которая будет лежать в папке с названием компании (ради которой и планируется командировка) на диске в группе отдела продаж. После высылки заявки, менеджеру закрывается доступ к изменениям в файле. Руководитель должен получить фал со ссылками, провалиться в сделки, ознакомиться с задачами, посмотреть на контакты, сделать замечания в теле документа и утвердить либо отклонить документ. Если руководитель утвердил, то дальше направить документ директору. Поэтому я считаю, что создания файла и запись комментария и положить файл в папку командировка в папку с названием компании - лучший вариант. У Вас какое мнени на данный счет? |
|
|
|
11.04.2020 13:25:08
вот как делал я на одном проекте: и что-то типа этого должно быть: файл экспорта данного БП, може скачать по пароль: QaWsedrf ссылка доступна втечении 2-х дней. |
|||
|
|
11.04.2020 14:35:12
Алексей Гребнев, код правильный, но для его работы надо ещё передать описание новых полей.
Ниже полный пример с записью данных из своей таблицы. Вам по аналогии надо заполнить поля и передать в setFields() В этом примере используется провайдер для реста (это на случай, если у вас все данные свои). Уберите лишние поля, а описания своих добавьте
|
|||
|
|
11.04.2020 16:38:15
Загрузить шаблон с пустым документом в Структуру сайта, в папку файлы и папки и далее папку генератор шаблонов Открыть php-кодом ссылку и: 1. Скачать файл на диск пользователю 2. Открыть файл 3. Записать туда текст 4. Сохранить файл и закрыть Тогда получится файл word. Как раз мне кажется это решение более адаптировано для моей задачи, чем Ваш процесс. Какой в этом случае php-код будет? |
|||||
|
|
12.04.2020 08:17:42
если так, то критично ли вообще чтоб это был Word, или достаточно .txt? |
|||
|
|
17.04.2020 13:56:48
Пример обработчика событий с изменением содержимого товаров где-то есть выше в этой теме В облаке можно такое сделать, но только через рест |
|||
|
|
17.04.2020 14:28:24
сейчас: OBJECT.CARD.Name сюда приходит строка -> 'плата' сделать: OBJECT.CARD.Name сюда приходит строка -> '<b>плата</b>' мне нужно просто в строку добавить любые html теги и они применятся при генерации документа? не как строка просто отобразятся? $document->setValues([ 'OBJECT' => new \Bitrix\DocumentGenerator\DataProvider\ArrayDataProvider( $objectData, $objectSettings ), 'ObjectCardPp' => 'OBJECT.CARD.PP', 'ObjectCardName' => 'OBJECT.CARD.Name', |
|||||
|
|
17.04.2020 19:52:49
|
|||
|
|
20.04.2020 14:44:44
Извиняюсь что не по теме, незнаю где еще можно спросить. Где можно прочитать как правильно добавить
|
|
|
|
20.04.2020 17:57:48
см. файлы:
|
|||||
|
|
||||