0
Голосовать

Передать параметры в отчет

Создано:
Метки записи:

Здравствуйте задача состоит в следующем.(Предисловие) В разделе "Задачи" на вкладке Менеджера команд есть поле Период и дин. группа на основании этих двух показателей в реестре отображаются определенные записи. (Вопрос) Можно ли передать в отчет указанный Период и фильтр активной дин. группы или id - выбранных записей (вариант выделить шифтом все записи в реестре не подходит). Или можно как -то в скрипте перед запуском отчета выделить все записи "видимые" в реестре. все это делается, чтобы в фильтре отчета опять пользователю не приходилось выбирать ряд параметров.Какие возможны варианты

Комментарии

Кихтенко Андрей
Olga пишет:
Здравствуйте задача состоит в следующем.(Предисловие) В разделе "Задачи" на вкладке Менеджера команд есть поле Период и дин. группа на основании этих двух показателей в реестре отображаются определенные записи. (Вопрос) Можно ли передать в отчет указанный Период и фильтр активной дин. группы или id - выбранных записей (вариант выделить шифтом все записи в реестре не подходит). Или можно как -то в скрипте перед запуском отчета выделить все записи "видимые" в реестре. все это делается, чтобы в фильтре отчета опять пользователю не приходилось выбирать ряд параметров.Какие возможны варианты

Такого стандартного ничего нет...
Можно попробовать сделать так. Вызов отчета реализовать через действие. А в нем прописать такой код:

  var
    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.

Olga

Спасибо большое, и отдельное за пример.

AlexLS
Кихтенко Андрей пишет:
Такого стандартного ничего нет...
Можно попробовать сделать так. Вызов отчета реализовать через действие. А в нем прописать такой код:
  var
    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

А если выводить отчет необходимо по документам?

s := Application.FindComponent('dmDocument').FindComponent('qrDocument').SQL.Text;
почему-то не работает!
Можно немного подробнее про 'SQLText' - это строка типа 'select Top 1 id from cm_Document' или я что-то путаю?

AlexLS

Еще одна проблема в том что необходимо сразу же прикрепить сформированный отчет(возможно без предпросмотра) к документу в закладку [Файлы].
В предпросмотре есть кнопка действия "Привязать файл отчета", но необходимо, чтобы все было сделано скриптами

Кихтенко Андрей
AlexLS пишет:
Еще одна проблема в том что необходимо сразу же прикрепить сформированный отчет(возможно без предпросмотра) к документу в закладку [Файлы].
В предпросмотре есть кнопка действия "Привязать файл отчета", но необходимо, чтобы все было сделано скриптами

К сожалению, в текущей версии это невозможно.. нужны доработки ядра...

Non noceo.

AlexLS
Кихтенко Андрей пишет:
К сожалению, в текущей версии это невозможно.. нужны доработки ядра...

Очень жаль! Но, думаю, при желании можно придумать обходные пути...
Очень хочется ответа на пост от 23 Июл 2007 13:39

AlexLS пишет:
А если выводить отчет необходимо по документам?
s := Application.FindComponent('dmDocument').FindComponent('qrDocument').SQL.Text; почему-то не работает!
Можно немного подробнее про 'SQLText' - это строка типа 'select Top 1 id from cm_Document' или я что-то путаю?
Кихтенко Андрей

попробуте так:
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.