Обработка отчета сразу после его формирования

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
DreamWeaver
Сообщения: 7
Зарегистрирован: 30 май 2006, 15:48
Контактная информация:

Обработка отчета сразу после его формирования

Сообщение DreamWeaver »

Задача такая: нужно автоматически сразу после формирования rtf-отчета в Галактике отправлять его по электронной почте. Почту отправляю внешней программой. Основная проблема в том, как отловить момент окончания формирования отчета. Для теста я вставил небольшой код, просто выводящий сообщение, непосредственно перед окончанием текста присоединенной формы (.endform).
В итоге получается такая картина: формируется отчет, после этого выскакивает мое сообщение. Но к этому моменту сам отчет rtf-файл еще не полностью сформирован (нахожу сам rtf-файл, копирую его, пытаюсь открыть и получаю сообщение, что файл поврежден) и при этом размер самого файла где-то олоко 131 кБайта. Далее, после закрытия моего сообщения открывается в ворде сформированный отчет и при этом размер rtf-файла становится равным 143 кБайта.
Можно ли как-нибудь отловить событие, когда rtf-файл (отчет) будет польностью сформирован? Или, может, можно как-то подавить автоматическое открывание этого отчета в ворде, и дать ему возможность доформироваться еще до окончания .endform?
Oh how I wish for soothing rain
All I wish is to dream again
My loving heart lost in the dark
For hope I'd give my everything
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

может сделать интерфейс, в котором сначала запустить формирование отчета с помощью процедуры
RunForm('имя_формы_1');
(прописать в файле проекта путь на rtf-файл с формой 'имя_формы_1')
А далее, добавить код с отправкой почты.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

Если вы отчет формируете своей прогой на vip то можно.
ключевое
для начала
OutF.nodialog ; - зачем нам спрашивать список форм?
посылка должна быть после

Outf.showfile('')
наличие кавычек важно!!
в самой форме в конце пишете
.begin nameproto.fexit end.

Вариант переделать вывод в Excel(через xl функции) и в конце сохранить файл и запустить макрос.

runform хорошо только для ard (или автономных отчетов).
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Если отчет формируется стандартным интерфейсом - то никак его не выловить, ибо формирование отчета завершается при вызове одного из методов формы
а) Form.ShowFile - показывает на экране
б) Form.PrintFile - печатает на принтер без показа
в) Form.PrepareOutFile - заканчивает формирование без показа на экране.

Соответственно если у Вас отчет на экране показывается, сл-но в исходнике интерфейса работает случай а) . Соответственно вам нужно реализовать случай в). Без изменения исходника никак не получится.


Ну, в случае собственного интерфейса, все гораздо проще. вызываете вместо а) в)
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ответить