Страница 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
ну тогда наверно надо подключить все эти ресурсы (..хотя так и сделали наверно.. :D )

Добавлено: 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
   Накладная № @@@@@@@@ от @@@@@@@@
.}
Сделано для примера, поэтому реализация может и сильно отличаться.
Главное как мне кажеться идея ведь 8)

Добавлено: 07 фев 2006, 12:50
Anton Bobrov
Спасибо. Примерно так уже и делаю. FCOM рулит. Завтра с утра к клиенту :)
Хотелось просто покрасивее что-ли сделать :)

Добавлено: 07 фев 2006, 12:52
Max_Fin
А так вообще клиенты не правы, их забывчивость не отговорка