| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		diana
 
 
  Joined: 17 May 2007 Posts: 6 Location: Дуброва Диана Валериевна Occupation: ООО "Оптима-Сибирь" Interests: Нижневартовск
  | 
		
			
				 Posted: 18 May 2007 08:26    Post subject: Переполнение массива при выполнении специальной функции | 
				     | 
			 
			
				
  | 
			 
			
				У нас такая проблемка. У нас есть специальная функция - блокировка контрагента (на заблокиованного контрагента нельзя осуществлять отгрузку). Мы блокируем контрагента. Плагин таков:
 
 
private cFlz
 
cFlz:=partner->Flz
 
 
aglobvars[11]:={'Признак запрета выписки товара: '}
 
aglobvars[12]:={'9'}
 
aglobvars[13]:={cFlz}
 
aglobvars[14]:=dialog(aglobvars[11],aglobvars[12],aglobvars[13],'Контрагент: '+partner->shortname)
 
if ((partner->flz!=aglobvars[14][1]).and.lastkey()!=27)
 
partner->(RECLOCK())
 
//partner->(AX_rlock())
 
partner->flz:=aglobvars[14][1]
 
partner->(F_DBUNLOCK())
 
//partner->(AX_Unlock())
 
//sayandwait(str(aglobvars[14][1]))
 
endif
 
 
Далее, когда на заблокированного контрагента пытаются выписать накладную, он не дает это сделать и соответственно удаляет накладную. Это нормально. Но если после этого снова зайти в справочник контрагента и попытаться заблокировать любого контрагента или даже хотя бы вызвать эту спец. функцию выдает ошибку !!! ПЕРЕПОЛНЕНИЕ МАССИВА!!! Значит очищение массива не происходит? 
 
Скажите, в чем проблема? Надо дописать программульку на очищение массива? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Behemoth
 
  
  Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
  | 
		
			
				 Posted: 18 May 2007 08:44    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Добрый день.
 
 
Хотя в тексте не видно ничего предсудительного, попробуйте переписать так. Этим мы исключим массивы и соответственно возможную ошибку при их обработке. По возможности перекомпилируйте под Harbour. Это даст возможность произвести пошаговую отладку.
 
 
 
private cFlz
 
 
cFlz:= dialog('Признак запрета выписки товара: ','9',partner->Flz,'Контрагент: '+partner->shortname) 
 
 
if lastkey()<>27 .and. cFlz<>partner->Flz
 
  partner->(reclock())
 
     partner->Flz:=cFlz
 
  partner->(f_dbunlock())
 
endif
 
  _________________ С уважением, Новиков Алексей. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		diana
 
 
  Joined: 17 May 2007 Posts: 6 Location: Дуброва Диана Валериевна Occupation: ООО "Оптима-Сибирь" Interests: Нижневартовск
  | 
		
			
				 Posted: 18 May 2007 09:14    Post subject: Переполнение массива при выполнении специальной функции | 
				     | 
			 
			
				
  | 
			 
			
				| Спасибо, переписала. Так нормально работает | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |