Печать нескольких отчетов из одного

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

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

Ответить
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Печать нескольких отчетов из одного

Сообщение Anton Bobrov »

Клиенту нужно сделать такую штуку: оператор вызывает мой отчет распечатки накладной, а он в свою очередь стандартные отчеты накладной и счета-фактуры. То есть он вызывает отчет один раз, а выходных документов формируется два. Клиент мотивирует это тем, что его операторы частенько забывают распечатать одну из бумажек.

Я хотел это сделать при помощи функции RunForm, но она ругается, что формы не найдены, может подскажете, как ее использовать. И вообще в правильном ли контексте я ее применяю.

Второй вариант -- это конечно сохранить все данные в нужных переменных и массивах, но как представлю, я на FCOMе ничего еще не ваял, руки сразу опускаются. Посоветуйте, плиз, решение.
Ajax
Посетитель
Сообщения: 40
Зарегистрирован: 07 дек 2005, 15:32

Сообщение Ajax »

Форма становится доступной после объявления ее в разделе form интерфейса.
Раздел form следует после описания логической таблицы и параметров интерфейса. (с) доки

form имя_формы_в_ интерфейсе('имя_файла_отчета.OUT','имя_формы-прототипа');


имя_формы_в_интерфейсе И имя_формы-прототипа делай одинаковыми для удобства.

Запускай в программе:
RunForm('имя формы', параметр1, параметр2, ...параметрN);

.form имя_формы(Var параметр1 : тип (н-р Date); параметр2 : тип;... параметрN:тип)
...
.endform
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Сообщение Anton Bobrov »

Имя формы прототипа это именно прототип или линк-форма?
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Сообщение Anton Bobrov »

Я так понимаю, мне нужно и фейс будет соответствующим образом организовать, чтоб он нужные данные в отчет скидывал или нет?
Ajax
Посетитель
Сообщения: 40
Зарегистрирован: 07 дек 2005, 15:32

Сообщение Ajax »

Функция RunForm (string) : PForm
Назначение
Процедура вызова формы загружает автономную форму в оперативную память.
Окно выбора форм не вызывается.
Процедура ищет формы во всех подключенных ресурсах.


Короче, про интерфейсы вам наверно не надо, а вы скомилировали свои файлы с формами в ресурс?

в файле проекта пропиши путь на файл с формой
#make "c:\.....\test.rtf"
Последний раз редактировалось Ajax 07 фев 2006, 07:01, всего редактировалось 1 раз.
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Сообщение Anton Bobrov »

В том то и прикол, что нужно уже готовые формы запускать. Они уже есть компиленные в других ресурсниках.
Ajax
Посетитель
Сообщения: 40
Зарегистрирован: 07 дек 2005, 15:32

Сообщение Ajax »

ну тогда наверно надо подключить все эти ресурсы (..хотя так и сделали наверно.. :D )
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

если в пределах одного прототипа вполне можно реализовать.
если нет, то кто за вас поток будет создавать в форму?
Жду выхода Вселенная 2.12!
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Сообщение Anton Bobrov »

Все вызываемые формы из одного прототипа. "TOVN".
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение 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)
Жду выхода Вселенная 2.12!
Anton Bobrov
Новичок
Сообщения: 22
Зарегистрирован: 16 ноя 2005, 06:54
Откуда: Владивосток
Контактная информация:

Сообщение Anton Bobrov »

Спасибо. Примерно так уже и делаю. FCOM рулит. Завтра с утра к клиенту :)
Хотелось просто покрасивее что-ли сделать :)
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

А так вообще клиенты не правы, их забывчивость не отговорка
Жду выхода Вселенная 2.12!
Ответить