Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Вместо активити можно воспользоваться тем же событием onBeforeProcessDocument, суть та же. Главное под рукой иметь объект документа.
Вот тут можно посмотреть пример кода, где на событии меняется содержимое списка товаров https://pastebin.com/dKrqmQra. Всё никак не дойдут руки оформить нормально в документацию.
Вам надо будет сделать следующее: 1. Достать данные о товарах из документа в отдельный массив 2. Распихать данные о товарах по двум отдельным ArrayDataProvider 3. Передать описание полей для ваших новых ArrayDataProvider 4. Очистить исходный PRODUCTS (хотя если для него нет полей в шаблоне, можно и не трогать).
Задача довольно сложная, я бы рекомендовал двигаться по шагам. Будут вопросы - кидайте код, посмотрю.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Если это было сделано и вариант со ссылкой не прокатил, то попробуйте вставить абсолютный путь к файлу, либо id из b_file (только в виде строки). Вот в этом методе \Bitrix\DocumentGenerator\Body\Docx::getImage() из значения получается путь к файлу, можете посмотреть.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Мне не удалось добиться такого поведения (ссылка на изображении) даже в редакторе (вставляю ссылку, сохраняю, открываю - ссылки нет). По крайней мере в libreoffice. Поэтому не смог проверить, как оно там храниться, чтобы подсказать.
В любом случае это вряд ли будет работать сейчас. Гиперссылки - это отдельные объекты, путь к которым хранится внутри атрибутов. А парсер сейчас перед обработкой вырезает все плейсхолдеры из атрибутов, кроме картинок (сделано специально, т.к. атрибуты гораздо чувствительней к вставляемым в них данным).
Боюсь, чтобы в таком виде с помощью генератора документов вам не получится решить задачу. Вставляется ссылку текстом рядом с изображением.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Феликс Ерм, для начала я бы посоветовал проверить, сможет ли генератор документов скопировать строку вложенной таблицы. Если честно, не проверял такой кейс. Может, и будет работать. Если не сможет - вам придётся переформатировать шаблон таким образом, чтобы коды и названия оквэд были в строке отдельной таблицы.
"Из коробки" документы в CRM поддерживают довольно ограниченный набор полей типа "список", которые можно вставлять в таблицу. Как один из вариантов с "особенностями", можно было бы создать отдельное направление сделок, назвать его "оквэды" и поскидывать в него ваши оквэды. А дальше в связанных сущностях сделать множественное поле привязки к сделкам, где указывать эти самые коды. Таким образом у вас направление будет что-то вроде универсального списка. В этом случае не придётся программировать, но есть куча других нюансов.
Правильнее было бы использовать универсальный список для хранения оквэдов. Проблема в том, что документы в CRM не умеют печатать данные из универсальных списков. Для печати данных оттуда придётся использовать rest.
Выглядеть это будет так: создаете множественное поле привязки к элементам инфоблоков. Указываете в сделке нужные оквэды. Создаете веб-хук или приложение, которое будет доставать данные из сделки и формировать на их основе данные для таблицы. Примеры есть тут https://dev.1c-bitrix.ru/rest_help/documentgenerator/example.php#generate_doc_array
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Если вы пишете новый код, то предпочтительней использовать новое апи, учитывая особенности, изложенные в курсе.
[QUOTE]Владислав Никитин написал: ElementTable без дополнительных костылей не может вытянуть свойства элементов инфоблока - только через отдельные классы.[/QUOTE]
Отдельные классы - это не костыли. С помощью ORM сейчас можно всё достать, но для этого может потребоваться чуть больше кода, чем раньше.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Событие onBeforeProcessDocument и другие из раздела "кастомизация" относятся только к коробке.
Рассмотрим пример на бесплатном тарифе. Например, надо создавать договор об оказании услуг на каждую новую компанию определенного типа. Принципы работы реста здесь не буду рассказывать, посмотрите курс / документацию.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Александр Чуприков написал: Хотелось расширить функционал генератора и добавить команду (QR-CODE:TEXT), отрабатывал бы парсер и вставлял вместо тега картинку с нужным текстом.
Это будет довольно сложно, особенно, если захочется сохранить возможность обновления.
С точки зрения документа, qr-код - это изображение. Понятно, что для каждого документа это будет уникальная картинка. Как вы его формируете, на основе чего - это уже ваше дело. Сделайте изображение через свой сервис, а в документ вставьте как картинку. Не надо усложнять.
С помощью события onBeforeProcessDocument вы можете получить объект документа, и оттуда вытащить все нужные для формирования qr-кода данные (в том числе название и номер). При желании их можно тут же переопределить.
Ну либо объясните, почему qr-код - это не просто изображение.