| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 22 Sep 2005 15:46    Post subject: Не могу написать  FileEval | 
				     | 
			 
			
				
  | 
			 
			
				здрасти всем, 
 
пишу Евал 
 
задача = Есть такая формы Ос-1б. 
 
в ней имеется поле "Организация-сдатчик" 
 
мне нужно в одном поле указать= наим.банка+КПП+БИК+ИНН... 
 
вопросы. 
 
1.как сослаться на базу партнер, не прибегая к исп. ф-ии 
 
DBUSEAREA(.T.,"",lcPth+"partner","partner",.T.), хотелось бы поюзать 
 
dbPush("partner","code","",{lcMyCode}), но говорит не такого алиаса!?  ... 
 
 
 
....блин....пока писал 1й вопрос=забыл второй 
 
****
 
 во.... 
 
2й 
 
как узнать какие алиасы открыты в данном арме...
 
****
 
своял вот чего 
 
[code] 
 
PRIVATE lcPth, lcMyCode, lcMyName 
 
lcMyCode := aPars[1] 
 
lcPth := "e:\bst\dbase\alb\" 
 
// 
 
// 
 
dbPush("partner","code","",{"lcMyCode"}) 
 
dbseek(lcMyCode) 
 
lcMyName := alltrim(partner2->shortname) 
 
DBPOP() 
 
 
ругается на вызов DBPush
 
****
 
почему для закрытия алиаса не подходит ф-ии!!!!! 
 
Код: 
 
 
partner2->(F_DBUNLOCK()) 
 
partner2->(dbCloseArea()) 
 
 
 
 
     
 
 
неужели ни кто не знает!
 
****
 
почему-то даже ета программа не работает!!!!! 
 
 
PRIVATE lcMyName 
 
DBPUSH() 
 
lcMyName := 'sasasasas' 
 
DBPOP() | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 22 Sep 2005 16:24    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Вам нужен HFileEval
 
В 12 версии по ctrl-F5 и далее F11 создать программу, затем откомпилировать с отладчиком, стартовать задачу в нужном месте и в отладчике увидите все что Вас интересует | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 22 Sep 2005 16:30    Post subject: Re: Не могу написать  FileEval | 
				     | 
			 
			
				
  | 
			 
			
				 	  | andre19 wrote: | 	 		   
 
пишу Евал 
 
почему-то даже ета программа не работает!!!!! 
 
 
PRIVATE lcMyName 
 
DBPUSH() 
 
lcMyName := 'sasasasas' 
 
DBPOP() | 	  
 
 
PRIVATE lcMyName 
 
DBPUSH() 
 
lcMyName := 'sasasasas' 
 
DBPOP()
 
""
 
В обычном FileEval работает без пробле | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 06:12    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				как понять- в обычном?
 
своего "уродца" я вызываю в отчете, в АРМе ОС.
 
может все из-за того что он у меня в папке extension...хотя с чего ради, но попробую переписать его в папку print | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 06:32    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				причем при использовании ф-ии DBPUSH или DBCLOSEARA
 
ругается на ф-ию TRANSFORM? посмотрел ее описание...не могу понять!какое отношение она имеет к выгрузки базы.
 
 
версия у меня 11.03 SP15 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 08:04    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nordk wrote: | 	 		  Вам нужен HFileEval
 
В 12 версии по ctrl-F5 и далее F11 создать программу, затем откомпилировать с отладчиком, стартовать задачу в нужном месте и в отладчике увидите все что Вас интересует | 	  
 
 
по ctrl-F5...ничего не происходит, мне ведь нужно добавить в шаблон форму FileEval в ОС, похоже для этого арма нет такой возможност | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 23 Sep 2005 09:35    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Для FileEval надо складывать программки в папку PRINT\OC
 
Extensns для HFileEval.
 
 
Ваш пример из модуля ОС c моей поправкой у меня работает
 
 
Рекомендация: Возьмите 12 версию, после CTRL-F5 нажмите F11 и пишите там. Напишите там где он вызывается а потом откомпилированную программу используйте там где Вам нужно посредством запуска HFileEval("*.hrb",{}) | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 10:32    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Quote: | 	 		  | Рекомендация: Возьмите 12 версию, после CTRL-F5 нажмите F11 и пишите там. Напишите там где он вызывается а потом откомпилированную программу используйте там где Вам нужно посредством запуска HFileEval("*.hrb",{}) | 	  
 
 
я пока не могу перейти на 12-ю версию, слишком рано в ней есть еще недоработки.
 
 
 	  | Quote: | 	 		  | Ваш пример из модуля ОС c моей поправкой у меня работает  | 	  
 
 
с какой доработкой?   | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 10:41    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				  
 
Костя, вот мой код, который чечас не работает, что ни так? в чем ошибка понять не могу.
 
Лежит в каталоге 
 
 	  | Code: | 	 		  | PRO\PLUGINS\PRINT\OC\  | 	  
 
вызывается на исполнение в "Шаблона док-та движения" фразой вычислить по формуле
 
 	  | Code: | 	 		  | FileEval("MainAtr.prg",{CodePred,CodePart}) | 	  
 
 
 	  | Code: | 	 		  
 
PRIVATE lcMyCode, lcPartCode, lRes, lcPth, lcMyName, lcPartName
 
lcMyCode := (aPars[1])
 
lcPartCode := (aPars[2])
 
lcPth := LoadPath()
 
//sayandwait(LoadPath())
 
 
DBPUSH()
 
//dbPush("partner2","code","",{"partner->code",lcMyCode})
 
DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.)
 
partner2->(DBSETINDEX("partner"))
 
partner2->(ORDSETFOCUS("code"))
 
//1
 
dbseek(lcMyCode)
 
lcMyName := alltrim(partner2->Shortname)
 
//2
 
dbseek(lcPartCode)
 
lcPartName := alltrim(partner2->Shortname)
 
// RESULT!
 
lRes := lcMyName+' '+lcPartName
 
//partner2->(F_DBUNLOCK())
 
//partner2->(dbCloseArea())
 
DBPOP()
 
 | 	  
 
 
в таком варианте выдает ошибку 
 
 	  | Code: | 	 		  
 
Error BASE/1122 Не верный аргумент : Transform Arguments :
 
            ( [1] = Type U [ 2] = Type: C Val
 
9999999999999999999999999999999999999999999999999999
 
                        9999)
 
 | 	 
  | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 23 Sep 2005 11:05    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.) 
 
partner2->(DBSETINDEX("partner")) 
 
 
В 4+ в FileEval категорично не работает DBUSEAREA() 
 
 
Используй NetUse()
 
DBSETINDEX не нужна вообще
 
 
И еще все-таки давай в HFileEval - там пошагово по кнопке F8 встанешь на строку с ошибкой и дальше я и не нужен буд | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Behemoth
 
  
  Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
  | 
		
			
				 Posted: 23 Sep 2005 11:13    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Добрый день.
 
 
to andre19
 
Добавьте в конце Вашей программы такую строчку:
 
''
 
Вы используете fileeval  в печатной форме, значит результат выполнения вашей программы должен быть отображен этой формой.
 
Результатом выполнения fileeval является результат выполнения последней "команды". В Вашем случае это dppop(). dbpop() всегда возвращает nil. Получив этот nil генератор печатной формы не может преобразовать его в строку текста, которая по его мнению должна быть выведена. Именно об этом информирует Вас приведенная Вами ошибка.
 
После добавления в конце программы '', результатом станет текстовая строка нулевой длины. И ошибки не будет. _________________ С уважением, Новиков Алексей. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		nordk
 
 
  Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
  | 
		
			
				 Posted: 23 Sep 2005 11:42    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| Я уже писал вроде как про '' | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		andre19
 
  
  Joined: 24 May 2004 Posts: 317 Location: Andre Occupation: albumin (programmer) Interests: Новосибирск
  | 
		
			
				 Posted: 23 Sep 2005 11:43    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Behemoth wrote: | 	 		  Добрый день.
 
 
to andre19
 
Добавьте в конце Вашей программы такую строчку:
 
''
 
Вы используете fileeval  в печатной форме, значит результат выполнения вашей программы должен быть отображен этой формой.
 
Результатом выполнения fileeval является результат выполнения последней "команды". В Вашем случае это dppop(). dbpop() всегда возвращает nil. Получив этот nil генератор печатной формы не может преобразовать его в строку текста, которая по его мнению должна быть выведена. Именно об этом информирует Вас приведенная Вами ошибка.
 
После добавления в конце программы '', результатом станет текстовая строка нулевой длины. И ошибки не будет. | 	  
 
 
 
                                                               
 
 
скажим так!
 
'' не помогли, вернее как, помогли, но Евал возвращал пистое значение, в общем код теперь выглядит вот так
 
 
 	  | Code: | 	 		  
 
PRIVATE lcMyCode, lcPartCode, lRes, lcPth, lcMyName, lcPartName
 
lcMyCode := (aPars[1])
 
lcPartCode := (aPars[2])
 
lcPth := LoadPath()
 
//sayandwait(LoadPath())
 
 
DBPUSH()
 
//dbPush("partner2","code","",{"partner->code",lcMyCode})
 
DBUSEAREA(.T.,"",lcPth+"partner","partner2",.T.)
 
partner2->(DBSETINDEX("partner"))
 
partner2->(ORDSETFOCUS("code"))
 
//1
 
dbseek(lcMyCode)
 
lcMyName := alltrim(partner2->Shortname)
 
//2
 
dbseek(lcPartCode)
 
lcPartName := alltrim(partner2->Shortname)
 
//partner2->(F_DBUNLOCK())
 
//partner2->(dbCloseArea())
 
DBPOP()
 
// RESULT!
 
lRes := lcMyName+' '+lcPartName
 
 | 	  
 
 
но вот, хоть убейте не знал, что DBPOP() это ф-ия присваивания!!! и какого черта ее рез. пихается в ретурн! ну да ладно.....
 
 
 
Behemoth  тебе гиганское спасибище!!!!      | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |