| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			работа 1С из Аксапты через COM
			 
			
			Вот простенький джобик: 
		
		
		
		
		
		
		
		
			X++: static void Job(Args _args) { Com connect; Com base; Com ref,ref1; str tmp; ; connect = new COM("V81.COMConnector"); base = connect.Connect("bla-bla-bla"); ref = base.NewObject("СправочникМенеджер.Контрагенты"); ref1 = ref.FindByCode("00000153"); tmp = ref1.Description(); print(tmp); pause; } Есть несколько вопросов: 1. Description у справочника Конрагентов это не метод, а поле. Если написать без скобок, то аксапта ругается. Работает конечно, но интересно можно как-нибудь все таки по правильному написать? 2. С системными полями в 1С все вроде бы получается - у них есть англоязычные аналоги. А вот как быть не с системными? Если я напишу например X++: tmp = ref1.(); Последний раз редактировалось _scorp_; 14.03.2008 в 12:50. Причина: опечатка  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вопрос больше к знатокам COM.... 
		
		
		
		
		
		
			Вот мой совет (долго писать не смогу). Попробуй сделать то же самое на VC++, потом тоже самое перенести на Аксапту - в процессе поймешь сам... В крайнем случае, попробуй на VBA. Но там слишком многое скрывается, можно понммание упустить... Вкратце: 1. Методы в COM можно вызывать по названию (ака GetDispatch). Это путь к методам с русским названиям. 2. Без скобок в Аксапте писать нельзя - по сути, в COM поля - разновидность методов, поэтому "по правильному" - это с точки зрения 1С. С другой точки зрения - это неправильно. 
				__________________ 
		
		
		
		
	Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...  
			 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 X++: tmp = ref1.();  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По словам знакомых 1С-ников 8 ориентирована больше на использование запросов.  
		
		
		
			В аттаче проектик, который получает данные по запросу из 1С, Вам ведь наверняка помимо ИНН захочется получить еще и нформацию по банковским счетам, адресам проч. Текст 1С-ного запроса можно сгенерить в самой 1С, там есть тулза.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: driller (1), _scorp_ (1). | |
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			То что нужно, спасибо!
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня вопрос тот же только в обратную сторону. Немогу установить значение реквизита добавленного руками. К реквизитам Код и Наименование обратиться можно и присвоить значения можно. Если кто сталкивался подскажите. 
		
		
		
		
		
		
		
		
			X++: static void Job3(Args _args) { COM v8_1; COM connect; COM item, code; ; v8_1 = new COM("V81.COMConnector"); connect = v8_1.Connect("File= c:\\1C_Test"); item = connect.NewObject("СправочникМенеджер.Номенклатура"); code = item.CreateItem(); code.Code("00070"); code.Description("Кресло офисное"); code. = ?????????????? code.write(); } Последний раз редактировалось Zick-Zibn; 22.08.2008 в 15:01. Причина: добавление  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			попробуйте \System Documentation\Classes\COMDispFunction
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 |