Страница 1 из 1

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

Добавлено: 31 май 2004, 12:18
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;
^
.}
.}

как правильно ?

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

Добавлено: 31 май 2004, 13:08
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’;
@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@
.}
.}
.}

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

Добавлено: 31 май 2004, 13:13
Maverick
да... еще...важно !!!
.Create view SchNakl
Var
BaseDocNRec : comp;
As select

Описание переменно нуна сделать ИМЕННО тут, иначе компилер будет жутко ругаться что не знает такой переменной. )))

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

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

да и еще - первый вариант вынесенный в ARD прекрасно пашет (есс-но в место BaseDocNRec я конкретный номер вставил), а вот в линке не хочет :(

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

Добавлено: 31 май 2004, 13:58
GTHack
проблема именно во вложенной табле -
такая конструкция работает

.fields
SchNakl.StepDoc.summa
.endfields

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


а вот как правильно заглянуть в KatSopr уже вопрос

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

Добавлено: 31 май 2004, 18:06
Max_Fin
А ты вынес, как Maverick предлагал BaseDocNRec в логическую таблу?

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

и еще достаточно странное пржположение значение BaseDocNRec точно определено в цикле?

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

Добавлено: 31 май 2004, 19:06
Maverick
Ну во-первых цикл по stepDoc не лишний ибо

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

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

Добавлено: 01 июн 2004, 09:03
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