есть VF страница на стандарном контроллере. Расширение пока делать не будем.
одно из полей в приходящей записи - это число.
Это число в нашем случае означает то, сколько раз нужно повторить одинаковый блок разметки на странице.
как это реализовать?
есть <apex:repeat> - но он работает только с Списком/Коллекцией.
есть <apex:variable> - но как ее использовать с <apex:repeat>?
фактически нужно простейшее средство для итерации на ВФ странице, которое "вырубается" формулой сравнивающей значение в том Поле с <apex:variable>-счетчиком
да, кстати JS не предлагать, так как это renderAs="pdf" страница
пока есть пару часов подумать, если ничего не придет в голову, придется "обработать напильником" в виде расширения к контроллеру.
есть VF страница на стандарном контроллере. Расширение пока делать не будем. одно из полей в приходящей записи - это число. Это число в нашем случае означает то, сколько раз нужно повторить одинаковый блок разметки на странице. как это реализовать? есть <apex:repeat> - но он работает только с Списком/Коллекцией. есть <apex:variable> - но как ее использовать с <apex:repeat>? фактически нужно простейшее средство для итерации на ВФ странице, которое "вырубается" формулой сравнивающей значение в том Поле с <apex:variable>-счетчиком да, кстати JS не предлагать, так как это renderAs="pdf" страница пока есть пару часов подумать, если ничего не придет в голову, придется "обработать напильником" в виде расширения к контроллеру.
Мдя, ну и задачка. Звучит вроде легко, но что-то решения я тоже не нашел пока гуглил. Без JS как без рук.
Мдя, ну и задачка. Звучит вроде легко, но что-то решения я тоже не нашел пока гуглил. Без JS как без рук.
вот если бы можно было бы объявить <apex:variable> как List с требуемым количеством элеметов в списке,
то можо было легко впрячь <apex:repeat>
а так придется "заваривать" этот List в расширении
вот если бы можно было бы объявить <apex:variable> как List с требуемым количеством элеметов в списке, то можо было легко впрячь <apex:repeat> а так придется "заваривать" этот List в расширении
В порядке особых извращений и с некоторыми ограничениями вот вариант решения - заводим FieldSet в который добавляем какие-то поля. В моём примере я взял объект Account и добавил в FieldSet с именем A 10 полей, и создаём такую страницу:
<apex:page>
<apex:variable var="i" value="{!0}"/>
<apex:repeat var="a" value="{!$ObjectType.Account.FieldSets.A}">
<apex:repeat var="b" value="{!$ObjectType.Account.FieldSets.A}">
<apex:outputText value="{!i}" rendered="{!TEXT(i) != $CurrentPage.parameters.n}"/><br/>
<apex:variable var="i" value="{!i + 1}" rendered="{!TEXT(i) != $CurrentPage.parameters.n}"/>
</apex:repeat>
</apex:repeat>
</apex:page>
В данном случае кол-во итераций ограничено 100, но легко масштабируется например до 1000, больше вряд ли понадобится, да и в том случае тоже легко масштабировать. Кол-во итераций ограничено параметром запроса с именем n.
В порядке особых извращений и с некоторыми ограничениями вот вариант решения - заводим FieldSet в который добавляем какие-то поля. В моём примере я взял объект Account и добавил в FieldSet с именем A 10 полей, и создаём такую страницу: [code] <apex:page> <apex:variable var="i" value="{!0}"/> <apex:repeat var="a" value="{!$ObjectType.Account.FieldSets.A}"> <apex:repeat var="b" value="{!$ObjectType.Account.FieldSets.A}"> <apex:outputText value="{!i}" rendered="{!TEXT(i) != $CurrentPage.parameters.n}"/><br/> <apex:variable var="i" value="{!i + 1}" rendered="{!TEXT(i) != $CurrentPage.parameters.n}"/> </apex:repeat> </apex:repeat> </apex:page> [/code] В данном случае кол-во итераций ограничено 100, но легко масштабируется например до 1000, больше вряд ли понадобится, да и в том случае тоже легко масштабировать. Кол-во итераций ограничено параметром запроса с именем n.
Это однозначно зачет ! Жаль что здесь нет лайков :)
Это однозначно зачет ! Жаль что здесь нет лайков :)
вместо Листа в repeat "присунули" FieldSets, который создан только для того, что "активировать" repeat
но никакие поля из FieldSets не выводятся, repeat "крутиться" уже с нашими собственными кастомными задачами.
для увеличения числа итерации, repeat вложен в repeat...
...ну и фантазия у людей :)
[quote="ilya leshchuk"]<apex:repeat var="a" value="{!$ObjectType.Account.FieldSets.A}">[/quote] вместо Листа в repeat "присунули" FieldSets, который создан только для того, что "активировать" repeat но никакие поля из FieldSets не выводятся, repeat "крутиться" уже с нашими собственными кастомными задачами. для увеличения числа итерации, repeat вложен в repeat... ...ну и фантазия у людей :)
Как задача звучала так и решение нашли
Как задача звучала так и решение нашли :D
Кстати, а никто не сталкивался со сторонними сервисами по генерации PDF?
Кстати, а никто не сталкивался со сторонними сервисами по генерации PDF?
DocuSign, Panda вроде как делать это может.
DocuSign, Panda вроде как делать это может.
Я нет,но делал скриншоты из страничек через js и потом вставлял в PDF.
[quote="Dmitry Shnyrev"]Кстати, а никто не сталкивался со сторонними сервисами по генерации PDF?[/quote] Я нет,но делал скриншоты из страничек через js и потом вставлял в PDF.
с помощью JS можно делать скриншот?
[quote="Sergey Prichepo"]делал скриншоты из страничек через js [/quote] с помощью JS можно делать скриншот?
А резонный вопрос "зачем"? Стандартными форсовскими методами не получается?
[quote="Dmitry Shnyrev"]Кстати, а никто не сталкивался со сторонними сервисами по генерации PDF?[/quote] А резонный вопрос "зачем"? Стандартными форсовскими методами не получается?
с помощью JS можно делать скриншот?
В связке с HTML5 да.
[quote="Den Brown"][quote="Sergey Prichepo"]делал скриншоты из страничек через js [/quote] с помощью JS можно делать скриншот?[/quote] В связке с HTML5 да.
Стандартными форсовскими методами не получается?
видел ПДФ с инпут полями и, возможно даже ДропДаун списками. Такого не сделать стандартными средствами...
хотя может у ПДФ есть XML формат и можно просто делать по template-у...
[quote="ilya leshchuk"]Стандартными форсовскими методами не получается?[/quote] видел ПДФ с инпут полями и, возможно даже ДропДаун списками. Такого не сделать стандартными средствами... хотя может у ПДФ есть XML формат и можно просто делать по template-у...