Страница 1 из 1
Печать нескольких отчетов из одного
Добавлено: 06 фев 2006, 13:04
Anton Bobrov
Клиенту нужно сделать такую штуку: оператор вызывает мой отчет распечатки накладной, а он в свою очередь стандартные отчеты накладной и счета-фактуры. То есть он вызывает отчет один раз, а выходных документов формируется два. Клиент мотивирует это тем, что его операторы частенько забывают распечатать одну из бумажек.
Я хотел это сделать при помощи функции RunForm, но она ругается, что формы не найдены, может подскажете, как ее использовать. И вообще в правильном ли контексте я ее применяю.
Второй вариант -- это конечно сохранить все данные в нужных переменных и массивах, но как представлю, я на FCOMе ничего еще не ваял, руки сразу опускаются. Посоветуйте, плиз, решение.
Добавлено: 06 фев 2006, 15:04
Ajax
Форма становится доступной после объявления ее в разделе form интерфейса.
Раздел form следует после описания логической таблицы и параметров интерфейса. (с) доки
form имя_формы_в_ интерфейсе('имя_файла_отчета.OUT','имя_формы-прототипа');
имя_формы_в_интерфейсе И имя_формы-прототипа делай одинаковыми для удобства.
Запускай в программе:
RunForm('имя формы', параметр1, параметр2, ...параметрN);
.form имя_формы(Var параметр1 : тип (н-р Date); параметр2 : тип;... параметрN:тип)
...
.endform
Добавлено: 06 фев 2006, 15:40
Anton Bobrov
Имя формы прототипа это именно прототип или линк-форма?
Добавлено: 06 фев 2006, 15:41
Anton Bobrov
Я так понимаю, мне нужно и фейс будет соответствующим образом организовать, чтоб он нужные данные в отчет скидывал или нет?
Добавлено: 07 фев 2006, 00:21
Ajax
Функция RunForm (string) : PForm
Назначение
Процедура вызова формы загружает автономную форму в оперативную память.
Окно выбора форм не вызывается.
Процедура ищет формы во всех подключенных ресурсах.
Короче, про интерфейсы вам наверно не надо, а вы скомилировали свои файлы с формами в ресурс?
в файле проекта пропиши путь на файл с формой
#make "c:\.....\test.rtf"
Добавлено: 07 фев 2006, 06:23
Anton Bobrov
В том то и прикол, что нужно уже готовые формы запускать. Они уже есть компиленные в других ресурсниках.
Добавлено: 07 фев 2006, 07:07
Ajax
ну тогда наверно надо подключить все эти ресурсы (..хотя так и сделали наверно..
)
Добавлено: 07 фев 2006, 10:11
Max_Fin
если в пределах одного прототипа вполне можно реализовать.
если нет, то кто за вас поток будет создавать в форму?
Добавлено: 07 фев 2006, 10:52
Anton Bobrov
Все вызываемые формы из одного прототипа. "TOVN".
Добавлено: 07 фев 2006, 12:44
Max_Fin
тогда
1) при печати твоей накладной
свали все данные во временные таблицы (либо таблицы в памяти)
2) сделай проход по твоим таблицам и выводи
3) ставь где надо разрыв страницы
к примеру
Код: Выделить всё
.create view vSopr
from TmpGrN
where
((
Word(777) == TmpGrN.wList
));
.Feieds
NSopr
DSopr
.EndFields
.begin
vSopr.delete all TmpGrN;
end.
.{
Накладная № @@@@@@@@ от @@@@@@@@
.begin
vSopr.ClearBuffer(#TmpGrN);
vSopr.TmpGrN.wList := Word(777);
vSopr.TmpGrN.SS[1] := NSopr;
vSopr.TmpGrN.DS[1] := DSopr;
vSopr.insert current TmpGrN;
end.
.}
!здесь символ разрыва страницы
!и начало другой накладной
.{table 'vSopr.TmpGrN'
.Feieds
vSopr.TmpGrN.SS[1]
vSopr.TmpGrN.DS[1]
.EndFields
Накладная № @@@@@@@@ от @@@@@@@@
.}
Сделано для примера, поэтому реализация может и сильно отличаться.
Главное как мне кажеться идея ведь
Добавлено: 07 фев 2006, 12:50
Anton Bobrov
Спасибо. Примерно так уже и делаю. FCOM рулит. Завтра с утра к клиенту
Хотелось просто покрасивее что-ли сделать
Добавлено: 07 фев 2006, 12:52
Max_Fin
А так вообще клиенты не правы, их забывчивость не отговорка