Изменить порядок вывода в отчете

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

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

mAd!Duke
Постоянный гость
Сообщения: 82
Зарегистрирован: 29 мар 2005, 17:49

Изменить порядок вывода в отчете

Сообщение mAd!Duke »

Доброго времени суток!

есть задача - изменить порядок вывода позиций в отчете.
Дано:
Галактика 7,11
Модуль - Складской учет
Отчет - Стандартная накладная на внутреннее перемещение.
Делаю так:

...
.create view MyView as select
katmc.name
, spsopr.kolfact

from
katmc (ReadOnly)
, spsopr (ReadOnly)
, katsopr (ReadOnly)

where
((
spsopr.cmcusl /== katmc.nrec
and katsopr.nrec /== spsopr.csopr
))
and katsopr.nsopr = nom
and spsopr.vidsopr = 600
;
.{table 'MyView' by katmc.name;
.}
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}


получаю: в каждой строке первую позицию столько раз, сколько позиций в накладной.

Где грабли?

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

Re: Изменить порядок вывода в отчете

Сообщение Max_Fin »

.{table 'MyView' by katmc.name;
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
.}
Жду выхода Вселенная 2.12!
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Goblin »

Мax_Fin, скажите, коллега , а эта конструкция на самом деле работает ? .`)

Рекомендую попробовать - результат вас удивит :)

Вариант № 2 :
Шапка отчета
.{table 'MyView' by katmc.name;
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
.{//Родной цикл вывода формы
.}
@@@@@@@@ &&&&&&.&&&
.}
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Max_Fin »

Извините, коллега
я предположил, что
"
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
"
это не родной цикл вывода формы, а тот, который должен собственно уже собранные ранее данные выводить.
поспешил малость из-за недостатка времени.
Жду выхода Вселенная 2.12!
mAd!Duke
Постоянный гость
Сообщения: 82
Зарегистрирован: 29 мар 2005, 17:49

Re: Изменить порядок вывода в отчете

Сообщение mAd!Duke »

Нет, своего цикла вывода нету - использую родной.

Делаю по варианту №2 - выдает столько отчетов, сколько строк в накладной, позиции - не сортированные, т.е. сортировка как и была - в порядке занесения...
если исключаю родной цикл - ругается на несоответствие с формой-прототипом...

еще чуть-чуть - и я решу, что лучший выход - застрелиться.
у нас тут уже 15 баз - и это только начало ...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Изменить порядок вывода в отчете

Сообщение edward_K »

правильней наверное так
.{
.}
.{table 'MyView' by katmc.name;
@@@@@@@@ &&&&&&.&&&
.}
- смысл выводить поля с myview в родном цикле?
но
1. наверняка в прототипе есть ссылка на nrec накладной
2. порядок лучше сразу задавать во вьюхе
3. вьюху нужно строить по индексам таблиц
иначе действительно проще застрелиться.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Max_Fin »

Дайте точную постановку задачи.
Жду выхода Вселенная 2.12!
sth
Постоянный обитатель
Сообщения: 148
Зарегистрирован: 29 мар 2005, 17:49

Re: Изменить порядок вывода в отчете

Сообщение sth »

наверное надо все-таки выводить информацию, привязанную к конкретной накладной.
Тогда, как справедливо было замечено, надо брать из потока nrec накладной (ну или nrec позиции спецификации, смотря что есть в потоке и что надо получить в отчете) и к нему привязывать все это свое хозяйство (логическую таблицу).
Или все-таки другая какая-то задача стоит?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Den »

Добрый день всем !
Конструкция :
.{table 'MyView' by katmc.name;
@@@@@@@@ &&&&&&.&&&
.}

всегда была какой то глючной. ДАвно, когда только начинал пеерписывать отчеты не раз с этим сталкивался. Поэтому,еслои у тебя нет лицензии на vip, то можно используя тока fcom сделать следующее :

.LinkForm 'PRINTINMOVNAK_019' Prototype is 'printinmovnak'
.Group 'Vnut'
.NameInList '_1. Стандартная накладная на внутреннее перемещение'
.DEFP PA4
.create view t1
as select * from limtmp(LIMTMP03);

!.fields
! CommonFormHeader
! Номер_с_дескриптором
! Dat
! From
! To
! Npp
! NomMC
! NameMC
! ed
! DoubleToStr(Kol, Kol_Pr)
! DoubleToStr(price, Cena_Pr)
! DoubleToStr(SumPr, Cena_Pr)
! DoubleToStr(Sum, Cena_Pr)
! Count
! if (МОЛ_Откуда_Должность <> '',Sdat+' ('+МОЛ_Откуда_Должность+')',Sdat)
! if (МОЛ_Куда_Должность <> '',Prin+' ('+МОЛ_Куда_Должность +')',Prin)
! СпецСимвол
!.endfields
.{

НАКЛАДНАЯ НА ВНУТРЕННЕЕ ПЕРЕМЕЩЕНИЕ
.{
.begin
t1.clearbuffer(tnlimtmp);
t1.limtmp.namemc:=namemc;
t1.limtmp.DKOTP :=kol;
t1.limtmp.dCOTP :=price;
t1.insert current limtmp;
! Message(limtmp.namemc);
end.
!.}
.{table 't1'
.begin
Message(t1.limtmp.namemc);
end.
.fields
t1.limtmp.namemc
t1.limtmp.dkotp
t1.limtmp.dcotp
.endfields
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &'&&&&&&&&&&.&& &'&&&&&&&&&&.&&
.}
.begin
Message(RecordsIntable(tnLimtmp));
end.
.}
.begin
delete all from limtmp;
end.
.endform
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Den »

Правда пробовал на 584, но должно работать и на 7-ке..
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Goblin »

Извиняюсь господа , виноват, такому корифею Атлантиса ,как Max_Fin'у, указывать взялся, но при этом и сам в лужу сел :) - действительно , помещать родной цикл внутри цикла по своей табле , либо наоборот - суть есть неправильно ...Лучше мухи отдельно - котлеты отдельно.

Подобную вещь с изменением сортировки
получилось таким образом по прототипу prihnkl
.Create View T1 as select *
From SpSopr,KatMC...
where((нрек_накладной==spsopr.csopr and spsopr.cmcusl==katmc.nrec)) order by katmc.name;
потом в полях
T1.Katmc.Name
T1.Spsopr.Kolfact
...
Прочая "полевая" ботва ...
и потом цикл по табле T1 с выводом полей, а родной цикл пустой ...
Работает ...
Единственное, что огорчает - предупреждение о внешней выгрузке при исполнении .
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
mAd!Duke
Постоянный гость
Сообщения: 82
Зарегистрирован: 29 мар 2005, 17:49

Re: Изменить порядок вывода в отчете

Сообщение mAd!Duke »

2Den:
Здорово! Спасибо! Заработало!
Будешь в Новокузнецке - с меня пиво.

Только тут лишний комментарий закрался:

Message(limtmp.namemc);
end.
тут !.}
.{table 't1'

а что за "limtmp(LIMTMP03)"?
Это временная таблица, которая создается при открытии интерфейса? а как узнать какие поля в ней есть?
Поясните незнающему, плиз ...

VIP'a нет, пользуюсь только "Компилятором форм"
у нас тут уже 15 баз - и это только начало ...
mAd!Duke
Постоянный гость
Сообщения: 82
Зарегистрирован: 29 мар 2005, 17:49

Re: Изменить порядок вывода в отчете

Сообщение mAd!Duke »

2Max_Fin:

Мне вообще интересно было знать - не первый раз сталкиваюсь с подобной задачей.

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

Программист из меня, наверное, не очень (особенно в fcom), но приходится "админить" 14 баз на 16 Гб. С поддержкой справляюсь вроде, но вот "кодить" пока только самую малость, простенкие доработки...
Руководство считает более важным оплатить обучение кучке бухгалтеров, проработавших в Галактике минимум 3 года, чем одному администратору...
у нас тут уже 15 баз - и это только начало ...
Nick
Местный житель
Сообщения: 331
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Белгород

Re: Изменить порядок вывода в отчете

Сообщение Nick »

2 Туманов О.В.
Т.е. вытаскивание всей спецификации берет на себя View?

> Единственное, что огорчает - предупреждение о внешней выгрузке при исполнении.
Это значит, что не хватает памяти для обработки запроса и будем выгружать данные на винт? Может тогда лучше оставить первоначальный вариант View от автора вопроса?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Изменить порядок вывода в отчете

Сообщение Den »

2Туманову О.В.&Max_Fin попробуйте добиться рабочего варианта при такой вьюхе и order by.
Будет интересно..

Create View T1 as select *
From SpSopr,KatMC...
where((нрек_накладной==spsopr.csopr and spsopr.cmcusl==katmc.nrec)) order by katmc.name;
потом в полях

2 mAd!Duke

Да. Limtmp это временная табла, которая описана в словаре БД. Прсто ее испоользую для временной буферизации и сортировки потока.В скобках указывается индекс по которому будет осуществлена выгрузка...
Ответить