Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Как я понимаю в этот список полей попасть невозможно вообще. Эти окна вызываются из окна просмотра/редактирования сделки - а там, в свою очередь, в запросе отправляется класс DataProvider
Если разбирать компонент documentgenerator.placeholders, то он вот тут он все равно выберет родной класс модуля crm - дальше пока не копал.
Алексей Гребнев написал: Как я понимаю в этот список полей попасть невозможно вообще.Эти окна вызываются из окна просмотра/редактирования сделки - а там, в свою очередь, в запросе отправляется класс DataProvider
попасть в список полей стандартного провайдера нельзя, только через пользовательские поля, но вы туда не добавите свой провайдер.
Цитата
Алексей Гребнев написал: Если разбирать компонент documentgenerator.placeholders, то он вот тут он все равно выберет родной класс модуля crm -
сразу же при переходе из сделки получить в фильтре свой провайдер-наследник не получится, только если хаками с переопределением компонента или внедрением js, которое поменяет фильтр и применит его.
Главное проверить, что ваш провайдер появился в списке провайдеров в фильре. Дальше дело техники.
Цитата
Алексей Гребнев написал: А в один шаблон документа можно плейсхолдеры (макросы) вставлять из разных провайдеров?
теоретически - можно, но там всё непросто. Надо пробовать и дебажить. Проще уже на событии получать нужные значения и записывать их.
Вы попробовали способ, который я посоветовал? Там для прототипа работы совсем немного
Плейсхолдеры в интерфейс я добавил. Но заказчик хочет чтобы его текущие документы продолжали работать из стандартного интерфейса, из сделки (документы уже сделаны), т.к. первым будет все равно вызываться провайдер Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Deal. Поэтому оставшиеся плейсхолдеры я планирую менять на событии onBeforeProcessDocument. Вот только пока не знаю, как их туда подсунуть из своего проваайдера. Алексей Гребнев, подскажите, как лучше переделать пример из моего сообщения ? потом я этот пример адаптирую под событие onBeforeProcessDocument.
===========
Еще не пойму как через событие onBeforeProcessDocument добавить массив элементов. В тестовом шаблоне документа свои плейсхолдеры выглядят так -
Алексей Гребнев написал: т.к. первым будет все равно вызываться провайдер Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Deal
На предыдущей странице этого топика я рассказывал, что можно сделать.
Вам надо перехватить результат отправки аякс-запроса на получение списка шаблонов для текущей сущности и переопределить его, добавив туда нужный вам провайдер вместо стандартного.
После этого всё должно заработать само, из сделки будет печататься документ через ваш провайдер
Вам надо перехватить результат отправки аякс-запроса на получение списка шаблонов для текущей сущности и переопределить его, добавив туда нужный вам провайдер вместо стандартного.
Номер = 56 Заголовок = test_template 56 Источник = Дата генерации = 10.04.2020 _______________________________________________________________________
Контакты -> Число элементов = 2 Контакты -> Текущий номер = ================== #1 - Первый #2 - Второй ================== _______________________________________________________________________
Тестовое поле = test from index.php Программы -> Число элементов = Программы -> Текущий номер = ==================