| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 02 Jul 2007 14:55    Post subject: определить номер записи | 
				     | 
			 
			
				
  | 
			 
			
				Подскажите, пожалуйста, не получается определить номер записи в базе, а потом к ней вернуться: 	  | Code: | 	 		  function mymain() 
 
dbpush() 
 
netuse("_main",loadpath()+'main.dbf') 
 
dbgotop() 
 
 
do while _main->(!EOF()) 
 
 
if left(_main->kT_SCHET,2)=="62".and.left(_main->user_code,1)#'1'
 
_main->(reclock())
 
replace _main->user_code with '1'
 
nom:=_main->recno()  /////здесь пытаюсь запомнить номер записи - выдает ошибку
 
s:=_main->summa
 
d:=_main->dataoper
 
n:=_main->nndoc
 
nam:=_main->nameoper
 
append blank
 
replace _main->nameoper with nam
 
replace _main->dt_schet with "“„Ќ01-01"
 
replace _main->task with "00"
 
replace _main->dataoper with d
 
replace _main->summa with s
 
replace _main->vsumma with s
 
replace _main->nndoc with n
 
replace _main->n_status with '1'
 
_main->(go nom)
 
endif 
 
 
_main->(DBSKIP())
 
enddo 
 
 
_main->(f_dbunlock())
 
 
_main->(dbclosearea()) 
 
dbpop() 
 
return | 	  
 
 
Наверно какая-то элементарная ошибка, не знаю формат.
 
Это я пытаюсь скопировать все проводки с кредитом 62-го, чтобы получилась книга продаж. Когда создается новая запись, естественно, указатель встает на нее, вот я и хотела запомнить номер, потом перейти на него. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		itman
 
  
  Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
  | 
		
			
				 Posted: 02 Jul 2007 14:59    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				replace смещает указатель на eof(), если я не ошибаюсь.
 
Хотя здесь одиночные замены, может просто оператор := использовать?
  Last edited by itman on 02 Jul 2007 15:05; edited 1 time in total | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 02 Jul 2007 15:05    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				не replace смещает на конец, а append blank.
 
Мне бы подсказал кто как правильно определить номер записи | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		itman
 
  
  Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
  | 
		
			
				 Posted: 02 Jul 2007 15:06    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| а если сначала определить номер записи, а потом поменять значени | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 02 Jul 2007 15:09    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| ну хорошо, пусть так, но этот оператор nom:=_main->recno() не работает, выдает ошибку | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Титов Александр
 
 
  Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
  | 
		
			
				 Posted: 02 Jul 2007 15:13    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Змея wrote: | 	 		  | ну хорошо, пусть так, но этот оператор nom:=_main->recno() не работает, выдает ошибку | 	  
 
_main->(recno()) _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 02 Jul 2007 15:17    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Спасибо, Александр Александрович! Как всегда из-за невнимательности.
 
теперь не работает переход на эту запись  _main->(go nom) | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Титов Александр
 
 
  Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
  | 
		
			
				 Posted: 02 Jul 2007 15:19    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Змея wrote: | 	 		  Спасибо, Александр Александрович! Как всегда из-за невнимательности.
 
теперь не работает переход _main->(go nom) | 	  
 
_main->(dbgoto(nom)) _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 02 Jul 2007 15:26    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Спасибо, всё получилось!   
 
Это потому, что я не писала на клиппере никогда, всё на фокпро, поэтому не знаю синтаксиса.
 
Ещё один вопрос: я использую поле user_code файла проводок в качестве метки, это ни на что не влияет?
 
И вообще можно ли так грубо вмешиваться и менять базы?
 
 
Только что заметила, что копируются удаленные записи тоже.
 
Нет ли аналога команды фокпро set delete on? (не брать в расчет удаленные запи | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 02 Jul 2007 20:46    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| перед копированием установите индекс а он отсекает удаленные либо проверяйте тогда на удаление, конечно Вы можете поменять и SET() | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 02 Jul 2007 20:53    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Насчет User_code.
 
Поле заполняется при включенной авторизации и туда пишется
 
код оператора который это делал.
 
То что Вы делаете , а именно использовать поля делать можно,
 
если отчетливо понимаете где они применяются и какие могут
 
быть последствия.
 
Данное поле я бы наверно не рискнул трогать.
 
А вообще задействовать поля - это еще не грубо    
 
видели бы Вы что нам иногда с базами в своих решениях приходится вытворять. И пользуются же люди. Бывает, конечно, проблемы
 
создаются.    
 
На самом деле можно метки ставить скажем в конец наименования проводки, добавить свое поле в таблицу и его заполнять - это
 
поддерживается разработчиком. Делать свои таблицы рядом.
 
А в существующие поля писать когда знаете и уверены на 100%. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 03 Jul 2007 09:37    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				а как правильно написать set delete on?
 
пыталась писать прямо так, так она никакие записи не берет вообщ | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		itman
 
  
  Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
  | 
		
			
				 Posted: 03 Jul 2007 10:38    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				set deleted on
 
 
Может помочь набор исходников, который идет в составе инструментария разработчика БЭСТ-4+. на www.spb4plus.ru
 
 
еще есть функция  DELETED(), к-ая определяет, отмечена ли текущая запись для удаления. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Змея
 
  
  Joined: 22 Mar 2007 Posts: 72 Location: Подколодная Occupation: программист Interests: Казань
  | 
		
			
				 Posted: 10 Jul 2007 17:13    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  Насчет User_code.
 
Поле заполняется при включенной авторизации и туда пишется
 
код оператора который это делал.
 
То что Вы делаете , а именно использовать поля делать можно,
 
если отчетливо понимаете где они применяются и какие могут
 
быть последствия.
 
Данное поле я бы наверно не рискнул трогать.
 
А вообще задействовать поля - это еще не грубо    
 
видели бы Вы что нам иногда с базами в своих решениях приходится вытворять. И пользуются же люди. Бывает, конечно, проблемы
 
создаются.    
 
На самом деле можно метки ставить скажем в конец наименования проводки, добавить свое поле в таблицу и его заполнять - это
 
поддерживается разработчиком. Делать свои таблицы рядом.
 
А в существующие поля писать когда знаете и уверены на 100%. | 	  
 
 
КАК ВСЕГДА СРОЧНО НУЖНО!
 
Всё хорошо получалось, создавались проводки с помощью этого плагина.
 
Прозошло следующее - все эти проводки стали отмеченными для удаления. Перед этим была индексация, она успешно завершилась, проводки были на месте. Ручками врядли кто-то мог - т.к. проводок было более 1000 и в 19 разных предприятиях.
 
Видимо какое-то поле нужно обязательно заполнять.
 
Не подскажете, в чём тут могло быть дело? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 10 Jul 2007 18:47    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Мне бы базку Вашу глянуть с проводками...
 
МОжете еще кстати попробовать сделать импорт этих
 
проводок через стандартный механизм импорта и сравнить поля. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |