|  14.03.2008, 12:48 | #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. Причина: опечатка | 
|  | 
|  14.03.2008, 13:14 | #2 | 
| NavAx | 
			
			Вопрос больше к знатокам COM.... Вот мой совет (долго писать не смогу). Попробуй сделать то же самое на VC++, потом тоже самое перенести на Аксапту - в процессе поймешь сам... В крайнем случае, попробуй на VBA. Но там слишком многое скрывается, можно понммание упустить... Вкратце: 1. Методы в COM можно вызывать по названию (ака GetDispatch). Это путь к методам с русским названиям. 2. Без скобок в Аксапте писать нельзя - по сути, в COM поля - разновидность методов, поэтому "по правильному" - это с точки зрения 1С. С другой точки зрения - это неправильно. 
				__________________ Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...   | 
|  | 
|  14.03.2008, 14:10 | #3 | 
| Участник | X++: tmp = ref1.(); | 
|  | 
|  14.03.2008, 15:37 | #4 | 
| Участник | 
			
			По словам знакомых 1С-ников 8 ориентирована больше на использование запросов.  В аттаче проектик, который получает данные по запросу из 1С, Вам ведь наверняка помимо ИНН захочется получить еще и нформацию по банковским счетам, адресам проч. Текст 1С-ного запроса можно сгенерить в самой 1С, там есть тулза. | 
|  | |
| За это сообщение автора поблагодарили: driller (1), _scorp_ (1). | |
|  14.03.2008, 15:42 | #5 | 
| Участник | 
			
			То что нужно, спасибо!
		 | 
|  | 
|  22.08.2008, 14:59 | #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. Причина: добавление | 
|  | 
|  22.08.2008, 15:44 | #7 | 
| Участник | 
			
			попробуйте \System Documentation\Classes\COMDispFunction
		 | 
|  | 
|  22.08.2008, 15:45 | #8 | 
| Участник | |
|  |