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 |
Участник
|
|
|