FCOM - вложенные циклы по лог.табле

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

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

Ответить
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

FCOM - вложенные циклы по лог.табле

Сообщение GTHack »

хочу вывести номера накладных в счёт-фактуре

.Create view SchNakl as select * from
StepDoc (ReadOnly) ,KatSopr (ReadOnly)
where
((
BaseDocNrec /== StepDoc.cbasedoc
and StepDoc.nRec /== KatSopr.cstepdoc
));

.fields
SchNakl.KatSopr.nsopr
.endfields

//так печатается токо одна накладная
.{ table ‘SchNakl.StepDoc’ by StepDoc.nrec;
.{ table ‘SchNakl.KatsOpr’ by KatSopr.nrec;
^
.}
.}

//а так вообще куча пустых строк и в конце номер последней накладной
.{ table ‘SchNakl’ by StepDoc.nrec;
.{by KatSopr.nrec;
^
.}
.}

как правильно ?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение Maverick »

А правильно так:
.Create view SchNakl
As select
*
From
Basedoc,
StepDoc,
KatSopr
Where
((
BaseDocNrec == BaseDoc.NRec And //фиксим ДО
BasedOC.NRec == StepDoc.cBaseDoc And // связь с этапом (пока 1 к 1)
StepDoc.NRec == KatSopr.cStepDoc // связь ДО и накладной (1 к N)
));

.fields
SchNakl.BaseDoc.NoDoc
SchNakl.KatSopr.nsopr
.endfields

Номер ДО Номер накладной

.{table ‘SchNakl.BaseDoc’;
.{table ‘SchNakl.StepDoc’;
.{table ‘SchNakl.KatSopr’;
@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@
.}
.}
.}
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение Maverick »

да... еще...важно !!!
.Create view SchNakl
Var
BaseDocNRec : comp;
As select

Описание переменно нуна сделать ИМЕННО тут, иначе компилер будет жутко ругаться что не знает такой переменной. )))
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение GTHack »

вопервых зачем лишний цикл по basedoc ?
во вторых линк форма прекрасно знает, что такое BaseDocNRec и тут компилер не ругается, ну и в третьих - это почти мой первый вариант (токо без базедока), и он к сожалению не пашет :(

да и еще - первый вариант вынесенный в ARD прекрасно пашет (есс-но в место BaseDocNRec я конкретный номер вставил), а вот в линке не хочет :(
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение GTHack »

проблема именно во вложенной табле -
такая конструкция работает

.fields
SchNakl.StepDoc.summa
.endfields

.{ table ‘SchNakl.StepDoc’ by StepDoc.nrec;
^
.}


а вот как правильно заглянуть в KatSopr уже вопрос
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение Max_Fin »

А ты вынес, как Maverick предлагал BaseDocNRec в логическую таблу?

и еще убери все BY в циклах по таблице

и еще достаточно странное пржположение значение BaseDocNRec точно определено в цикле?
Жду выхода Вселенная 2.12!
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение Maverick »

Ну во-первых цикл по stepDoc не лишний ибо

а) это только ПОКА реализовано что на 1 ДО формируется 1 этап ДО. У тебя есть гарантия что в следующем же патче не будет реализована схема, по которой 1 ДО будет соответствовать несколько этапов?
б) во-вторых именно ТАКАЯ связка КОРРЕКТНО связывает ДО с сопролводительным документом, а именно BaseDoc-StepDoc-KatSopr-SpSopr- и т.д. (можно вполть до налогов по спецификации спуститься) :-))
в) как сказал Максим - опиши все таки переменную )))
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: FCOM - вложенные циклы по лог.табле

Сообщение GTHack »

в общем дело было не в бобине :)
вытянул в отдельный линк то что нужно - всё пашет - ниже текст если кому нибудь еще интересно, просто пытался сразу в rtf встроить и чё то с ним не то, разберусь позже, а на счёт вышесказанного -
а) - почему то уверенность, что на 1 ДО будет 1 этап ДО у меня есть
б) про эту связку я вкурсе, просто именно в данном случае basedoc я считаю не нужен (см.п. а)
в) если переменную описать вообще работать перестаёт, видимо при описании старое значение гасится или ещё что, кому интересно можете сами компильнуть и убедиться

.linkform 'TABLES' prototype is 'PRBDOC'
.NameInList 'Эксперименты с табличками'
.group 'Продажа'

.Create view SchNakl
as select * From StepDoc, KatSopr
Where
((
BaseDocNrec == StepDoc.cBaseDoc
and StepDoc.NRec == KatSopr.cStepDoc
));

.{
.{CheckEnter ISEXCLASS
.}
.{CheckEnter ISGROUP
.}
.{
.}

.fields
SchNakl.KatSopr.nsopr
.endfields
.{table 'SchNakl.StepDoc';
.{table 'SchNakl.KatSopr';
Номер накладной ^
.}
.}

.if DELIMITER
.else
.end
.}
.endform
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Ответить