| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| 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
 
 | 
 | 
 
 Спасибо!!!
 |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |