Показать сообщение отдельно
Старый 09.07.2012, 17:42   #1  
kr1user is offline
kr1user
Участник
 
1 / 10 (1) +
Регистрация: 26.06.2012
Интеграция 1С и Аксапты
Толкаю данные в 1с из аксапты. Основная проблема была, что аксапта не принимает русскоязычные названия методов и свойств. На форуме не нашел решения, поэтому выкладываю код:
X++:
static void Job6(Args _args)
{
    InteropPermission       perm;
    CustTable               custTable;

    Com                     comObject,
                            server1C,
                            contractorMenedger,
                            contractor; //справочник Контрагенты
    COMDispFunction         setAttribute;
    COMVariant              var;

    #define.('СправочникМенеджер.Контрагенты')
    #define.srvr1C("1c:5555")
    #define.rev1C("baseName")
    #define.Usr1C("XXX")
    #define.pwd1C("XXX")
    ;
    
    perm = new InteropPermission(InteropKind::ComInterop);
    perm.assert();
    
    comObject = new Com("v82.COMConnector");
    // Подключение к БД
    server1C = comObject.Connect(strfmt('srvr="%1";ref="%2";Usr="%3";pwd="%4";', #srvr1C, #rev1C, #Usr1C, #pwd1C));

    custTable = CustTable::find("000000079");

    contractorMenedger  = server1C.NewObject(#);
    contractor          = contractorMenedger.CreateItem();
    contractor.Description(custTable.NameAlias);

    setAttribute = new ComDispFunction(contractor,"НаименованиеПолное", COMDispContext::PropertyPut);
    var = COMVariant::createFromStr(custTable.Name);
    setAttribute.call(var);
    contractor.write();
    
    setAttribute.finalize();
    var.finalize();

    info("Выполнено.");
}