Печатная форма счет-фактуры

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

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

Vlad
Постоянный обитатель
Сообщения: 101
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярск

Сообщение Vlad »

ну так как меняешь форму СФ проверь так

Код: Выделить всё

select SCHFACT.nrec,katsopr.nrec,dogovor.nrec, dogovor.nodoc
where((comp(нрек_СФ)==SCHFACT.nrec
and SCHFACT.nrec==katsopr.CSCHFACT
and KatSopr.CDOGOVOR == dogovor.nrec
// или для уточняющего соглашения
//KatSopr.CAPPDOGOVOR== dogovor.nrec 
));
Gali
Постоянный гость
Сообщения: 71
Зарегистрирован: 16 апр 2007, 11:48
Откуда: г. Кемерово
Контактная информация:

Сообщение Gali »

запустила я запрос:

SELECT KatSopr.CAPPDOGOVOR, dogovor.nrec, SCHFACT.nrec, katsopr.CSCHFACT, SCHFACT.nUM, SCHFACT.CBASEDOC, BASEDOC.nrec, BASEDOC.nAME, SCHFACT.NAZN
where
((SCHFACT.CBASEDOC == BASEDOC.nrec and
KatSopr.CAPPDOGOVOR == dogovor.nrec
and SCHFACT.nrec==katsopr.CSCHFACT
));

проверила выданную таблицу - по конкретной с/ф все условия выполняются.

теперь пишу в файле формы с/ф:

.Create view v1 from SCHFACT, KatSopr, BaseDoc
where
(( SCHFACT.CBASEDOC == BASEDOC.nrec and
KatSopr.CAPPDOGOVOR == dogovor.nrec and
SCHFACT.nrec==katsopr.CSCHFACT
));
.begin
if (v1.getfirst BaseDoc)=tsOK then
{
specifik := BASEDOC.nAME
}
end.

... но в итоге, когда я посылаю переменную specifik на печать - ничего не выводится :sad:
Vlad
Постоянный обитатель
Сообщения: 101
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярск

Сообщение Vlad »

попробуй так

Код: Выделить всё

SELECT KatSopr.CAPPDOGOVOR, dogovor.nrec, SCHFACT.nrec, katsopr.CSCHFACT, SCHFACT.nUM, SCHFACT.CBASEDOC, BASEDOC.nrec, BASEDOC.nAME, SCHFACT.NAZN 
where 
((
comp(нрек_СФ)==SCHFACT.nrec and // поле в прототипе возьми нрек СФ
SCHFACT.CBASEDOC == BASEDOC.nrec and 
KatSopr.CAPPDOGOVOR == dogovor.nrec 
and SCHFACT.nrec==katsopr.CSCHFACT 
)); 
.begin 
if (v1.getfirst )=tsOK then 
{ 
specifik := v1.BASEDOC.nAME 
} 
end. 

Vlad
Постоянный обитатель
Сообщения: 101
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярск

Сообщение Vlad »

пропустил, вначале
.Create view v1 as
перед селектом
Gali
Постоянный гость
Сообщения: 71
Зарегистрирован: 16 апр 2007, 11:48
Откуда: г. Кемерово
Контактная информация:

Сообщение Gali »

сработало!!!!
всем спасибочки :grin:
Gali
Постоянный гость
Сообщения: 71
Зарегистрирован: 16 апр 2007, 11:48
Откуда: г. Кемерово
Контактная информация:

Сообщение Gali »

Привет! это снова я.

наша главбух теперь просто счастлива от формы с/ф - а мне теперь надо тоже самое в Акте выполненных работ и в ТТН сделать.

делаю по аналогу, только вот один нюанс вылез - когда вывожу один акт на печать - все нормально, вывыдится договор + спецификация, привязанные к этому акту.
а вот если выделить несколько актов и потом отправить их на печать, то во всех печатных формах воводится договор и спецификация первого документа.

у с/ф такого нет, я проверила - все реквизиты каждого документа;
получается какого-то условия не хватает что-ли?

вот что я пишу для акта:
.Create view v_sp as SELECT KatSopr.CAPPDOGOVOR, dogovor.nrec, dogovor.nodoc, SCHFACT.nrec, katsopr.CSCHFACT, SCHFACT.nUM, SCHFACT.CBASEDOC, BASEDOC.nrec, BASEDOC.nAME, SCHFACT.NAZN
where ((
comp(Акт_НРек) == KatSopr.nrec and
SCHFACT.CBASEDOC == BASEDOC.nrec and
KatSopr.CAPPDOGOVOR == dogovor.nrec
and SCHFACT.nrec == katsopr.CSCHFACT //а здесь у меня почему-то компилятор ругается на отсутствие связей
));
.begin
if (v_sp.getfirst )=tsOK then
{
specifik := v_sp.dogovor.nodoc
}
end.

гляньте кто может, плиз :smile:
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Я бы лог таблу так сделал на вашем месте

Код: Выделить всё

.Create view v_sp as
SELECT *
FROM KatSopr, dogovor, SCHFACT, BASEDOC 
where (( 
comp(Акт_НРек) == KatSopr.nrec and                   //ищем акт
katsopr.CSCHFACT == SCHFACT.nrec and             //ищем счет-фатуру привязанную к акту 
SCHFACT.CBASEDOC == BASEDOC.nrec and        //ищем ДО по которому акт
KatSopr.CAPPDOGOVOR == dogovor.nrec            //ищем договор по которому акт
)); 
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

могу тока предположить, что вы begin end вставили перед всеми циклами. Выведите Акт_НРек в начале первого цикла и в самом конце-значение то меняется? Есть еще одно ограничение - не хорошо использовать поле в условиях до тех пор пока не будет выведенно поле в fields после него - редко, но бывают глюки. Тыды програмный блок нужно именно в том месте ставить.
Ответить