Метки записи: |
Здравствуйте задача состоит в следующем.(Предисловие) В разделе "Задачи" на вкладке Менеджера команд есть поле Период и дин. группа на основании этих двух показателей в реестре отображаются определенные записи. (Вопрос) Можно ли передать в отчет указанный Период и фильтр активной дин. группы или id - выбранных записей (вариант выделить шифтом все записи в реестре не подходит). Или можно как -то в скрипте перед запуском отчета выделить все записи "видимые" в реестре. все это делается, чтобы в фильтре отчета опять пользователю не приходилось выбирать ряд параметров.Какие возможны варианты
Комментарии
Такого стандартного ничего нет...
Можно попробовать сделать так. Вызов отчета реализовать через действие. А в нем прописать такой код:
s: variant;
begin
s := Application.FindComponent('dmTask').FindComponent('qrTask').SQL.Text;
ShowReportByCode('123', True,
VarArrayOf([VarArrayOf(['SQLText', s])]));
В Отчет с кодом 123 прийдет переменная SQLText, которая содержит нужный запрос по которому вибираются задачи. Можна попробовать обрезать только Where часть и вставить ее в запрос отчета. Плюс, нужно скопировать примерно таким же образом параметры запроса через коллекцию
Application.FindComponent('dmTask').FindComponent('qrTask').Parameters
Non noceo.
Спасибо большое, и отдельное за пример.
А если выводить отчет необходимо по документам?
Можно немного подробнее про 'SQLText' - это строка типа 'select Top 1 id from cm_Document' или я что-то путаю?
Еще одна проблема в том что необходимо сразу же прикрепить сформированный отчет(возможно без предпросмотра) к документу в закладку [Файлы].
В предпросмотре есть кнопка действия "Привязать файл отчета", но необходимо, чтобы все было сделано скриптами
К сожалению, в текущей версии это невозможно.. нужны доработки ядра...
Non noceo.
Очень жаль! Но, думаю, при желании можно придумать обходные пути...
Очень хочется ответа на пост от 23 Июл 2007 13:39
попробуте так:
var
c: tcomponent;
begin
c := Application.FindComponent('frmMain');
c := c.FindComponent('fmDocument');
c := c.Data;
c := c.FindComponent('qrData');
showmessage(c.SQL.Text);
Non noceo.