| 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 |  | 
	
		|  | 
	
		|  |