Печать в нужном формате
Модераторы: m0p3e, edward_K, Модераторы
Печать в нужном формате
Добрый день.
Возникла задача, с какой еще не сталкивался. Необходима печать акта сверки в определенном формате. Стандартный поток использовать не получается – совсем другой формат. Как можно решить данную проблему? У меня несколько теоретических вариантов решения, но какое из них в принципе реализуется? Итак:
1. Из потока взять только nrec акта сверки, дальше заполнить временную логическую таблицу данными, вывести их в нужном формате.
2. Перехватить событие cmPrintDoc у стандартного интерфейса и, используя тот же nrec акта сверки, сформировать отчет
3. Создать свой интерфейс, принимающий в качестве параметра опять акт сверки, подключить его через дополнительный пункт в контекстном меню
Подскажите, какой вариант можно использовать (или проще всего использовать, или правильнее), и, если можно, какие функции/механизмы при этом использовать. Возможно, нужно вообще по-другому делать.
Возникла задача, с какой еще не сталкивался. Необходима печать акта сверки в определенном формате. Стандартный поток использовать не получается – совсем другой формат. Как можно решить данную проблему? У меня несколько теоретических вариантов решения, но какое из них в принципе реализуется? Итак:
1. Из потока взять только nrec акта сверки, дальше заполнить временную логическую таблицу данными, вывести их в нужном формате.
2. Перехватить событие cmPrintDoc у стандартного интерфейса и, используя тот же nrec акта сверки, сформировать отчет
3. Создать свой интерфейс, принимающий в качестве параметра опять акт сверки, подключить его через дополнительный пункт в контекстном меню
Подскажите, какой вариант можно использовать (или проще всего использовать, или правильнее), и, если можно, какие функции/механизмы при этом использовать. Возможно, нужно вообще по-другому делать.
Что-то не очень получается...
Описал таблицу следующим образом:
table struct local tAktSver
(
dateDoc : date,
TypeDoc : string,
SumDoc : double
)
with index (byDate=dateDoc);
Добавил файл с описанием в проект, с заполнением и выводом проблем быть не должно, а вот как ее подключить в фрм не представляю.
Описал таблицу следующим образом:
table struct local tAktSver
(
dateDoc : date,
TypeDoc : string,
SumDoc : double
)
with index (byDate=dateDoc);
Добавил файл с описанием в проект, с заполнением и выводом проблем быть не должно, а вот как ее подключить в фрм не представляю.
Почти получилось. Таблица действительно появилась, после того, как правильно подключил в проект. В присоединенной форме до самого первого цикла пишу:
.create view t1 from taktsver;
.fields
taktsver.dateDoc
.endfields
.begin
_loop aktsver where((NRECАКТА == aktsver.nrec))
insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
.{table 't1' by taktsver.dateDoc
^
.}
Добавляется одна запись (проверял), а вот в отчет выводится около сотни. Где в этот раз ошибся?
.create view t1 from taktsver;
.fields
taktsver.dateDoc
.endfields
.begin
_loop aktsver where((NRECАКТА == aktsver.nrec))
insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
.{table 't1' by taktsver.dateDoc
^
.}
Добавляется одна запись (проверял), а вот в отчет выводится около сотни. Где в этот раз ошибся?
Den
_loop, _insert я вообще не нашел в документации, пишу t1._insert - говорит, что нет такой функции или метода
Алексей
ДОДЖНА выводиться одна запись, а выводится как раз очень много, в то время как в таблице tAktSver находится только одна (insert выполняется только один раз), следом вывожу t1 - записей уже очень много. Кроме того, я ограничения не использую: .create view t1 from taktsver;
Приведу текст формы:
.LinkForm 'AS2' Prototype is 'AKTSVER'
.NameInList 'Акт сверки 2'
.create view t1 as select * from taktsver;
.fields
taktsver.dateDoc
.endfields
.begin
_loop aktsver where((NRECАКТА == aktsver.nrec))
insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
.{table t1
^
.}
.{
ok
.{
.}
.{
.}
.{
.}
.{
.}
.{
.}
.{
.}
.}
.endform
Результат следующий:
12/04/2007
12/04/2007
12/04/2007
12/04/2007
12/04/2007
12/04/2007
.....очень много одинаковых строк
ok
В то время как акт сверки только один.
_loop, _insert я вообще не нашел в документации, пишу t1._insert - говорит, что нет такой функции или метода
Алексей
ДОДЖНА выводиться одна запись, а выводится как раз очень много, в то время как в таблице tAktSver находится только одна (insert выполняется только один раз), следом вывожу t1 - записей уже очень много. Кроме того, я ограничения не использую: .create view t1 from taktsver;
Приведу текст формы:
.LinkForm 'AS2' Prototype is 'AKTSVER'
.NameInList 'Акт сверки 2'
.create view t1 as select * from taktsver;
.fields
taktsver.dateDoc
.endfields
.begin
_loop aktsver where((NRECАКТА == aktsver.nrec))
insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
.{table t1
^
.}
.{
ok
.{
.}
.{
.}
.{
.}
.{
.}
.{
.}
.{
.}
.}
.endform
Результат следующий:
12/04/2007
12/04/2007
12/04/2007
12/04/2007
12/04/2007
12/04/2007
.....очень много одинаковых строк
ok
В то время как акт сверки только один.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
.create view t1 as select * from taktsver,aktsver
where ((NRECАКТА == aktsver.nrec))
;
.fields
taktsver.dateDoc
.endfields
.begin
t1.delete all tAktSver ;
if t1.getfirst aktsver=0
t1.insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
ваш текст на 8 вызовет кучу предупреждений.
если запись не вставиться проверте местоположение данного блока.
where ((NRECАКТА == aktsver.nrec))
;
.fields
taktsver.dateDoc
.endfields
.begin
t1.delete all tAktSver ;
if t1.getfirst aktsver=0
t1.insert into tAktSver set tAktSver.dateDoc := aktsver.ddoc;
end.
ваш текст на 8 вызовет кучу предупреждений.
если запись не вставиться проверте местоположение данного блока.