Skip to Content
author's profile photo Former Member
Former Member

When get oBusinessPartners Object Error The server threw an exception. (Exception from HRESULT: 0x80010105)

try

{

BusinessPartners oBp = (BusinessPartners)objCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners);

}

catch (Exception exception)

{

Log4.Error("Error:", exception);

}

System.Runtime.InteropServices.COMException (0x80010105): The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

at SAPbobsCOM.ICompany.GetBusinessObject(BoObjectTypes Object)

at Satrack.Provider.Rules.InternalDev.Core.Handler.RazonSocial.ActualizarDatosSap(String nit, String value, Int32 idPais) in F:\Biblioteca de servicios\Main\Satrack.Provider.Rules.InternalDev\Satrack.Provider.Rules.InternalDev.Core\Handler\RazonSocial.cs:line 151

Please help me to solve problem

Add comment
10|10000 characters needed characters exceeded

3 Answers

  • Posted on Apr 24, 2015 at 07:31 AM

    Hi Former Member,

    Make sure that your company object is initialized properly. Means make sure that you are connected to the company.

    Also you should be using the same DIAPI version as on your Server.

    On this path:

    C:\Program Files (x86)\SAP\SAP Business One DI API\Conf

    Open b1-local-machine.xml in Notepad and check that your Server address is correct.

    leaf kind="single" name="LicenseServer" type="String">

    <value>YOURSERVERADDRESS:30000</value>

    Hope it helps.

    Thanks & Regards

    Ankit Chauhan

    Add comment
    10|10000 characters needed characters exceeded

  • Posted on Apr 24, 2015 at 07:50 AM

    Hi Camilo,

    SOP :

    1. Remove away the SM_OBS_DLL and SM_OBS_DLL_64

    2. In your project, make sure your Interop.SAPbobsCOM.dll property : Copy Local = True, Embed Interop Types = false

    3. If above does not solve, re-install the DI API, clean your project and re-reference your DI API.

    Regards
    Edy

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Apr 24, 2015 at 01:26 PM

    The exception is unusual. It usually occurs once a month. I use the Singleton pattern.

    public static Company Instance

    {

    get{

    if (_instance == null)

    {

    //Log4.Info("Instancia nula");

    lock (LockObject)

    {

    if (_instance == null)

    {

    _instance = new Singleton().objCompany();

    }

    }

    }

    return _instance;

    }

    }

    private Company objCompany()

    {

    int code = 1;

    string error = "";

    var objCompany = new Company();

    string serverName = ConfigurationManager.AppSettings["ServerNa

    var companyDb = ConfigurationManager.AppSettings["companyDBSAP

    try

    {

    //objCompany.UseTrusted = true;

    objCompany.Server = serverName;

    objCompany.CompanyDB = companyDb;

    //objCompany.CompanyDB = "********";

    objCompany.UserName = "*********";

    objCompany.Password = "**********";

    objCompany.DbServerType = BoDataServerTypes.dst_MSSQL2012;

    objCompany.language = BoSuppLangs.ln_English;

    code = objCompany.Connect();

    error = objCompany.GetLastErrorDescription();

    }

    catch (CoreException coreException)

    {

    coreException.Message.GetType();

    }

    if (code != 0)

    {

    Log4.Info(error);

    return null;

    }

    return objCompany;

    }

    In this method I update my database. It usually works correctly but sometimes appears exception.

    public string ActualizarDatosSap(string nit, string value)

    {

    string respuesta;

    var objCompany = Base.Singleton.Instance;

    try

    {

    if (objCompany == null || !objCompany.Connected)

    {

    throw new CoreException(Resources.CoreResources.ExceptionConectarSAP);

    }

    var oBp = (BusinessPartners)objCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners);

    oBp.GetByKey(nit);

    var count = oBp.UserFields.Fields.Count;

    for (var i = 0; i < count; i++)

    {

    switch (oBp.UserFields.Fields.Item(i).Name)

    {

    case "U_SATRACK_Estado":

    oBp.UserFields.Fields.Item(i).Value = value;

    break;

    case "U_FechaUltCambioEst":

    oBp.UserFields.Fields.Item(i).Value = DateTime.Now;

    break;

    }

    }

    oBp.Update();

    respuesta = objCompany.GetLastErrorDescription();

    }

    catch (Exception exception)

    {

    Log4.Error("Error:", exception);

    }

    return respuesta;

    }

    Thanks

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi,

      A common scenario for such problem is if your SQL server had re-started or re-connected during service is running.

      The connection is obviously down, but the Company.Connected property does not recognize it and returns True although it's actually disconnected.

      Beni.