Изменить порядок вывода в отчете
Модераторы: m0p3e, edward_K, Модераторы
Изменить порядок вывода в отчете
Доброго времени суток!
есть задача - изменить порядок вывода позиций в отчете.
Дано:
Галактика 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
...
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
получаю: в каждой строке первую позицию столько раз, сколько позиций в накладной.
Где грабли?
Пробовал объявлять таблицу в выводе позиций - отсутствует сортировка...
есть задача - изменить порядок вывода позиций в отчете.
Дано:
Галактика 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 баз - и это только начало ...
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Изменить порядок вывода в отчете
.{table 'MyView' by katmc.name;
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
.}
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
.}
Жду выхода Вселенная 2.12!
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
Re: Изменить порядок вывода в отчете
Мax_Fin, скажите, коллега , а эта конструкция на самом деле работает ? .`)
Рекомендую попробовать - результат вас удивит
Вариант № 2 :
Шапка отчета
.{table 'MyView' by katmc.name;
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
.{//Родной цикл вывода формы
.}
@@@@@@@@ &&&&&&.&&&
.}
Рекомендую попробовать - результат вас удивит
Вариант № 2 :
Шапка отчета
.{table 'MyView' by katmc.name;
...
.fields
...
MyView.name
MyView.kolfact
...
.endfields
...
.{//Родной цикл вывода формы
.}
@@@@@@@@ &&&&&&.&&&
.}
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Изменить порядок вывода в отчете
Извините, коллега
я предположил, что
"
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
"
это не родной цикл вывода формы, а тот, который должен собственно уже собранные ранее данные выводить.
поспешил малость из-за недостатка времени.
я предположил, что
"
Шапка отчета
.{
@@@@@@@@ &&&&&&.&&&
.}
"
это не родной цикл вывода формы, а тот, который должен собственно уже собранные ранее данные выводить.
поспешил малость из-за недостатка времени.
Жду выхода Вселенная 2.12!
Re: Изменить порядок вывода в отчете
Нет, своего цикла вывода нету - использую родной.
Делаю по варианту №2 - выдает столько отчетов, сколько строк в накладной, позиции - не сортированные, т.е. сортировка как и была - в порядке занесения...
если исключаю родной цикл - ругается на несоответствие с формой-прототипом...
еще чуть-чуть - и я решу, что лучший выход - застрелиться.
Делаю по варианту №2 - выдает столько отчетов, сколько строк в накладной, позиции - не сортированные, т.е. сортировка как и была - в порядке занесения...
если исключаю родной цикл - ругается на несоответствие с формой-прототипом...
еще чуть-чуть - и я решу, что лучший выход - застрелиться.
у нас тут уже 15 баз - и это только начало ...
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Изменить порядок вывода в отчете
правильней наверное так
.{
.}
.{table 'MyView' by katmc.name;
@@@@@@@@ &&&&&&.&&&
.}
- смысл выводить поля с myview в родном цикле?
но
1. наверняка в прототипе есть ссылка на nrec накладной
2. порядок лучше сразу задавать во вьюхе
3. вьюху нужно строить по индексам таблиц
иначе действительно проще застрелиться.
.{
.}
.{table 'MyView' by katmc.name;
@@@@@@@@ &&&&&&.&&&
.}
- смысл выводить поля с myview в родном цикле?
но
1. наверняка в прототипе есть ссылка на nrec накладной
2. порядок лучше сразу задавать во вьюхе
3. вьюху нужно строить по индексам таблиц
иначе действительно проще застрелиться.
Re: Изменить порядок вывода в отчете
наверное надо все-таки выводить информацию, привязанную к конкретной накладной.
Тогда, как справедливо было замечено, надо брать из потока nrec накладной (ну или nrec позиции спецификации, смотря что есть в потоке и что надо получить в отчете) и к нему привязывать все это свое хозяйство (логическую таблицу).
Или все-таки другая какая-то задача стоит?
Тогда, как справедливо было замечено, надо брать из потока nrec накладной (ну или nrec позиции спецификации, смотря что есть в потоке и что надо получить в отчете) и к нему привязывать все это свое хозяйство (логическую таблицу).
Или все-таки другая какая-то задача стоит?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Изменить порядок вывода в отчете
Добрый день всем !
Конструкция :
.{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
Конструкция :
.{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
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Изменить порядок вывода в отчете
Правда пробовал на 584, но должно работать и на 7-ке..
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
Re: Изменить порядок вывода в отчете
Извиняюсь господа , виноват, такому корифею Атлантиса ,как 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 с выводом полей, а родной цикл пустой ...
Работает ...
Единственное, что огорчает - предупреждение о внешней выгрузке при исполнении .
Подобную вещь с изменением сортировки
получилось таким образом по прототипу 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 !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Re: Изменить порядок вывода в отчете
2Den:
Здорово! Спасибо! Заработало!
Будешь в Новокузнецке - с меня пиво.
Только тут лишний комментарий закрался:
Message(limtmp.namemc);
end.
тут !.}
.{table 't1'
а что за "limtmp(LIMTMP03)"?
Это временная таблица, которая создается при открытии интерфейса? а как узнать какие поля в ней есть?
Поясните незнающему, плиз ...
VIP'a нет, пользуюсь только "Компилятором форм"
Здорово! Спасибо! Заработало!
Будешь в Новокузнецке - с меня пиво.
Только тут лишний комментарий закрался:
Message(limtmp.namemc);
end.
тут !.}
.{table 't1'
а что за "limtmp(LIMTMP03)"?
Это временная таблица, которая создается при открытии интерфейса? а как узнать какие поля в ней есть?
Поясните незнающему, плиз ...
VIP'a нет, пользуюсь только "Компилятором форм"
у нас тут уже 15 баз - и это только начало ...
Re: Изменить порядок вывода в отчете
2Max_Fin:
Мне вообще интересно было знать - не первый раз сталкиваюсь с подобной задачей.
Конкретно в этом случае:
Изменить порядок вывода строк в накладной на внутренее перемещение.
Также, если форма окажется востребованной, планируется добавить группировку по заказам.
Программист из меня, наверное, не очень (особенно в fcom), но приходится "админить" 14 баз на 16 Гб. С поддержкой справляюсь вроде, но вот "кодить" пока только самую малость, простенкие доработки...
Руководство считает более важным оплатить обучение кучке бухгалтеров, проработавших в Галактике минимум 3 года, чем одному администратору...
Мне вообще интересно было знать - не первый раз сталкиваюсь с подобной задачей.
Конкретно в этом случае:
Изменить порядок вывода строк в накладной на внутренее перемещение.
Также, если форма окажется востребованной, планируется добавить группировку по заказам.
Программист из меня, наверное, не очень (особенно в fcom), но приходится "админить" 14 баз на 16 Гб. С поддержкой справляюсь вроде, но вот "кодить" пока только самую малость, простенкие доработки...
Руководство считает более важным оплатить обучение кучке бухгалтеров, проработавших в Галактике минимум 3 года, чем одному администратору...
у нас тут уже 15 баз - и это только начало ...
Re: Изменить порядок вывода в отчете
2 Туманов О.В.
Т.е. вытаскивание всей спецификации берет на себя View?
> Единственное, что огорчает - предупреждение о внешней выгрузке при исполнении.
Это значит, что не хватает памяти для обработки запроса и будем выгружать данные на винт? Может тогда лучше оставить первоначальный вариант View от автора вопроса?
Т.е. вытаскивание всей спецификации берет на себя View?
> Единственное, что огорчает - предупреждение о внешней выгрузке при исполнении.
Это значит, что не хватает памяти для обработки запроса и будем выгружать данные на винт? Может тогда лучше оставить первоначальный вариант View от автора вопроса?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Изменить порядок вывода в отчете
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 это временная табла, которая описана в словаре БД. Прсто ее испоользую для временной буферизации и сортировки потока.В скобках указывается индекс по которому будет осуществлена выгрузка...
Будет интересно..
Create View T1 as select *
From SpSopr,KatMC...
where((нрек_накладной==spsopr.csopr and spsopr.cmcusl==katmc.nrec)) order by katmc.name;
потом в полях
2 mAd!Duke
Да. Limtmp это временная табла, которая описана в словаре БД. Прсто ее испоользую для временной буферизации и сортировки потока.В скобках указывается индекс по которому будет осуществлена выгрузка...