Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
InNesKA Участник со стажем
Вступление в Клуб: 05.06.2008
|
Пн Июн 30, 2008 11:16  Найти ошибку... |
|
Полезность: Нет оценки
|
Всем здрасте! Помогите пожалуйста, не могу найти почему при выводе EXCEL дважды выдает отчет :
Код: |
Begin
if P_MESSAGE = 'DEFAULT' then
P_DATE_END := ::[SYSTEM].[OP_DATE];
[EXCEL].INIT_XLS;
elsif P_MESSAGE = 'VALIDATE' then
if P_INFO = 'P_DATE_END' then
if P_DATE_BEG is null then
pragma error('Введите дату начала');
end if;
elsif P_INFO = 'OK' then
if [EXCEL].F_Click then
[EXCEL].F_Click := false;
debug_pipe('E X C E L!!!', 0);
[EXCEL].open_file(::[SYSTEM_PARAMS].[GET]('PATH_PRINT_EXCEL')||'faktura_otchet.XLT');
declare
r_chet [accnum] := 0;
CurRow integer := 6;
i integer := 1;
type cur is
select lnk(cl.[CLIENTREF] : CL_NAME
,cl.[CLIENTREF].[NAME] : CL_LINKS_OTHER
,cl.[DATE_BEGINING] : CL_DATA
,cl.[ACC_TRACE] :cl_trace
,lnk.[ACC_REF].[MAIN_V_ID] :lnk_NAME
) in ::[WC_ACC_TRACE], (::[WCLIENT]: cl)
all
where lnk%collection = cl.[ACC_TRACE]
order by cl.[CLIENTREF].[NAME];
begin
Put(1, 1, ::[SYSTEM].[SYS_MY_COMPANY].[NAME],null,false);
Put(2, 1, 'Даты первых операций, прошедших по системе Faktura.ru '||to_char(P_DATE_END, 'DD.MM.YYYY')) ;
for Ob in cursor cur
loop
debug_pipe(' Клиент: '||Ob.CL_LINKS_OTHER||' -- Счёт: '||Ob.lnk_NAME||' -- Договор: '||Ob.CL_DATA, 0);
if Ltrim(Ob.lnk_NAME) <> r_chet then
for( select oper ( oper.[ACC_DT].[MAIN_V_ID] :chet
,oper.[DATE_PROV] : data_prov
,oper.[DOCUMENT_UNO] :nomer
)
in ::[MAIN_DOCUM]
where
oper.[DATE_PROV] >= Ob.CL_DATA
and oper%state = 'PROV'
and oper.[ACC_DT].[MAIN_V_ID] = Ob.lnk_NAME
and oper.[DOCUMENT_UNO] like 'BF%'
Order by oper.[DATE_PROV]
)
loop
Put(CurRow, 1, i, 'L', false);
Put(CurRow, 2, Ob.CL_LINKS_OTHER, 'L', false);
Put(CurRow, 3, oper.chet, 'C', false);
Put(CurRow, 4, to_char(oper.data_prov,'dd.mm.yy'), 'C', false);
CurRow := CurRow + 1;
i := i + 1;
Exit;
end loop;
r_chet := Ob.lnk_NAME;
-- if r_chet = '40702810700000000083' then
-- Exit;
-- end if;
end if;
end loop;
end;
[EXCEL].visible;
[EXCEL].release;
end if;
end if;
end if;
[EXCEL].Exec_Script(V_DEST_STR);
End;
|
Заранее спасибо . |
|
 |
ssa774 Профи
Вступление в Клуб: 30.11.2007
|
Пн Июн 30, 2008 11:22   |
|
Полезность: Нет оценки
|
По-моему, клиент-скрипт дважды выполняется(собственно в клиент-скрипте и в коде проверки). Перенесла в проверку условия P_INFO.
Код: | Begin
if P_MESSAGE = 'DEFAULT' then
P_DATE_END := ::[SYSTEM].[OP_DATE];
[EXCEL].INIT_XLS;
elsif P_MESSAGE = 'VALIDATE' then
if P_INFO = 'P_DATE_END' then
if P_DATE_BEG is null then
pragma error('Введите дату начала');
end if;
elsif P_INFO = 'OK' then
if [EXCEL].F_Click then
[EXCEL].F_Click := false;
debug_pipe('E X C E L!!!', 0);
[EXCEL].open_file(::[SYSTEM_PARAMS].[GET]('PATH_PRINT_EXCEL')||'faktura_otchet.XLT');
declare
r_chet [accnum] := 0;
CurRow integer := 6;
i integer := 1;
type cur is
select lnk(cl.[CLIENTREF] : CL_NAME
,cl.[CLIENTREF].[NAME] : CL_LINKS_OTHER
,cl.[DATE_BEGINING] : CL_DATA
,cl.[ACC_TRACE] :cl_trace
,lnk.[ACC_REF].[MAIN_V_ID] :lnk_NAME
) in ::[WC_ACC_TRACE], (::[WCLIENT]: cl)
all
where lnk%collection = cl.[ACC_TRACE]
order by cl.[CLIENTREF].[NAME];
begin
Put(1, 1, ::[SYSTEM].[SYS_MY_COMPANY].[NAME],null,false);
Put(2, 1, 'Даты первых операций, прошедших по системе Faktura.ru '||to_char(P_DATE_END, 'DD.MM.YYYY')) ;
for Ob in cursor cur
loop
debug_pipe(' Клиент: '||Ob.CL_LINKS_OTHER||' -- Счёт: '||Ob.lnk_NAME||' -- Договор: '||Ob.CL_DATA, 0);
if Ltrim(Ob.lnk_NAME) <> r_chet then
for( select oper ( oper.[ACC_DT].[MAIN_V_ID] :chet
,oper.[DATE_PROV] : data_prov
,oper.[DOCUMENT_UNO] :nomer
)
in ::[MAIN_DOCUM]
where
oper.[DATE_PROV] >= Ob.CL_DATA
and oper%state = 'PROV'
and oper.[ACC_DT].[MAIN_V_ID] = Ob.lnk_NAME
and oper.[DOCUMENT_UNO] like 'BF%'
Order by oper.[DATE_PROV]
)
loop
Put(CurRow, 1, i, 'L', false);
Put(CurRow, 2, Ob.CL_LINKS_OTHER, 'L', false);
Put(CurRow, 3, oper.chet, 'C', false);
Put(CurRow, 4, to_char(oper.data_prov,'dd.mm.yy'), 'C', false);
CurRow := CurRow + 1;
i := i + 1;
Exit;
end loop;
r_chet := Ob.lnk_NAME;
-- if r_chet = '40702810700000000083' then
-- Exit;
-- end if;
end if;
end loop;
end;
[EXCEL].visible;
[EXCEL].release;
end if;
[EXCEL].Exec_Script(V_DEST_STR);
end if;
end if;
End;
|
|
|
 |
InNesKA Участник со стажем
Вступление в Клуб: 05.06.2008
|
Пн Июн 30, 2008 11:31   |
|
Полезность: Нет оценки
|
ssa774 пишет: | По-моему, клиент-скрипт дважды выполняется(собственно в клиент-скрипте и в коде проверки). Перенесла в проверку условия P_INFO.
|
Не помогло  |
|
 |
ssa774 Профи
Вступление в Клуб: 30.11.2007
|
Пн Июн 30, 2008 11:41   |
|
Полезность: Нет оценки
|
InNesKA пишет: | ssa774 пишет: | По-моему, клиент-скрипт дважды выполняется(собственно в клиент-скрипте и в коде проверки). Перенесла в проверку условия P_INFO.
|
Не помогло  |
Код клиент-скприта нужно посмотреть. |
|
 |
InNesKA Участник со стажем
Вступление в Клуб: 05.06.2008
|
Пн Июн 30, 2008 11:47   |
|
Полезность: Нет оценки
|
ssa774 пишет: | InNesKA пишет: | ssa774 пишет: | По-моему, клиент-скрипт дважды выполняется(собственно в клиент-скрипте и в коде проверки). Перенесла в проверку условия P_INFO.
|
Не помогло  |
Код клиент-скприта нужно посмотреть. |
Код: |
Public Function Main(LastControl)
Execute DEST_STR.TEXT
If LastControl is Nothing Then
' Действия при загрузке формы
End If
If LastControl is OK and V_DEST_STR.Text <> "" Then
DO
Execute V_DEST_STR.Text
Call Form1.ScriptServerValidate( OK, "OK")
Loop While V_DEST_STR.Text <> ""
End If
Main = True
End Function |
Вот он. |
|
 |
ssa774 Профи
Вступление в Клуб: 30.11.2007
|
Пн Июн 30, 2008 11:48   |
|
Полезность: 2
|
вот так будет работать. должно выполняться только по ОК
Код: |
Public Function Main(LastControl)
If LastControl is Nothing Then
' Действия при загрузке формы
End If
If LastControl is OK and V_DEST_STR.Text <> "" Then
DO
Execute V_DEST_STR.Text
Call Form1.ScriptServerValidate( OK, "OK")
Loop While V_DEST_STR.Text <> ""
End If
Main = True
End Function
|
|
|
 |
InNesKA Участник со стажем
Вступление в Клуб: 05.06.2008
|
Пн Июн 30, 2008 11:50   |
|
Полезность: Нет оценки
|
ssa774 пишет: | вот так будет работать. должно выполняться только по ОК
Код: |
Public Function Main(LastControl)
If LastControl is Nothing Then
' Действия при загрузке формы
End If
If LastControl is OK and V_DEST_STR.Text <> "" Then
DO
Execute V_DEST_STR.Text
Call Form1.ScriptServerValidate( OK, "OK")
Loop While V_DEST_STR.Text <> ""
End If
Main = True
End Function
|
|
Спасибо!!! |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|