Страница 1 из 1

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

Добавлено: 15 июн 2006, 17:23
DreamWeaver
Задача такая: нужно автоматически сразу после формирования rtf-отчета в Галактике отправлять его по электронной почте. Почту отправляю внешней программой. Основная проблема в том, как отловить момент окончания формирования отчета. Для теста я вставил небольшой код, просто выводящий сообщение, непосредственно перед окончанием текста присоединенной формы (.endform).
В итоге получается такая картина: формируется отчет, после этого выскакивает мое сообщение. Но к этому моменту сам отчет rtf-файл еще не полностью сформирован (нахожу сам rtf-файл, копирую его, пытаюсь открыть и получаю сообщение, что файл поврежден) и при этом размер самого файла где-то олоко 131 кБайта. Далее, после закрытия моего сообщения открывается в ворде сформированный отчет и при этом размер rtf-файла становится равным 143 кБайта.
Можно ли как-нибудь отловить событие, когда rtf-файл (отчет) будет польностью сформирован? Или, может, можно как-то подавить автоматическое открывание этого отчета в ворде, и дать ему возможность доформироваться еще до окончания .endform?

Добавлено: 16 июн 2006, 08:30
Vek
может сделать интерфейс, в котором сначала запустить формирование отчета с помощью процедуры
RunForm('имя_формы_1');
(прописать в файле проекта путь на rtf-файл с формой 'имя_формы_1')
А далее, добавить код с отправкой почты.

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

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

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

runform хорошо только для ard (или автономных отчетов).

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

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


Ну, в случае собственного интерфейса, все гораздо проще. вызываете вместо а) в)