Table of Contents

Class BpApplication

Namespace
BpNexT.NET
Assembly
BpNexT.NET.dll

Represents the BpNexT.NET wrapper class for easier handling of Büro+

public class BpApplication : IDisposable
Inheritance
object
BpApplication
Implements

Constructors

BpApplication(Application?)

Initializes a new instance of the BpApplication class around an optional existing Büro+ application instance. Requires a valid license file to be set via LoadLicenseFromFile(string, string?) or LoadLicenseFromString(string, string?).

public BpApplication(Application? bpApp = null)

Parameters

bpApp Application

The Büro+ application instance to wrap. If null, a new instance will be created.

Properties

Dokumente

Accesses the Dokumente special object.

public BpSpecialObject<AutoDokument> Dokumente { get; }

Property Value

BpSpecialObject<AutoDokument>

Remarks

Drucken

Accesses the Drucken special object.

public BpSpecialObject<AutoSpecialDrucken> Drucken { get; }

Property Value

BpSpecialObject<AutoSpecialDrucken>

Remarks

Events

Accesses the Events special object.

public BpSpecialObject<AutoSpecialEvents> Events { get; }

Property Value

BpSpecialObject<AutoSpecialEvents>

Remarks

InstanceId

Unique identifier for this Büro+ application instance.

public Guid InstanceId { get; }

Property Value

Guid

Instances

Global cache for active Büro+ application instances.

public static ConcurrentDictionary<Guid, BpApplication> Instances { get; }

Property Value

ConcurrentDictionary<Guid, BpApplication>

Lager

Accesses the Lager special object.

public BpSpecialObject<AutoLager> Lager { get; }

Property Value

BpSpecialObject<AutoLager>

Remarks

Projekte

Accesses the Projekte special object.

public BpSpecialObject<AutoSpecialProjekte> Projekte { get; }

Property Value

BpSpecialObject<AutoSpecialProjekte>

Remarks

RequestRetryCount

Gets or sets the retry count for requests to the Büro+ application.

public int RequestRetryCount { get; set; }

Property Value

int

RequestTimeOut

Gets or sets the timeout (in milliseconds) for requests to the Büro+ application.

public int RequestTimeOut { get; set; }

Property Value

int

Vorgaenge

Accesses the Vorgang special object.

public BpSpecialObject<AutoVorgang> Vorgaenge { get; }

Property Value

BpSpecialObject<AutoVorgang>

Remarks

Methods

AddDataSet<T>()

Appends a new instance to the AutoDataSet of type T.

public T AddDataSet<T>() where T : IHasAutoDataSet, new()

Returns

T

An instance of type T with properties populated from the AutoDataSet.

Type Parameters

T

The type of the object to append, which must inherit from HasAutoDataSet and have a parameterless constructor.

AllocSpecialObject<T>(SpecialObjects)

Allocates an instance of a special object, wrapped with its owning BpApplication instance ID.

public BpSpecialObject<T> AllocSpecialObject<T>(SpecialObjects specialObjectEnum) where T : class

Parameters

specialObjectEnum SpecialObjects

The identifier of the special object.

Returns

BpSpecialObject<T>

A BpSpecialObject<T> containing the special object of type T.

Type Parameters

T

The type of the special object.

Remarks

Exceptions

InvalidOperationException

Thrown when the object cannot be cast to the specified type.

ArtikelLager(string, string?)

Initializes a LagerContext for a specific article and currency.

public LagerContext ArtikelLager(string artikelNummer, string? waehrung = null)

Parameters

artikelNummer string
waehrung string

Returns

LagerContext

Exceptions

InvalidOperationException

DeselectMandant()

Deselects the currently selected mandant.

public void DeselectMandant()

Dispose()

Releases unmanaged resources.

public void Dispose()

Dispose(bool)

Releases unmanaged and - optionally - managed resources.

protected virtual void Dispose(bool disposing)

Parameters

disposing bool

true to release both managed and unmanaged resources; false to release only unmanaged resources.

EnsureTransactionSafety(string)

Validates if the current thread is allowed to write to the given DataSet.

public void EnsureTransactionSafety(string dataSetName)

Parameters

dataSetName string

The logical name of the dataset (e.g. "Artikel")

Exceptions

InvalidOperationException

If blocked by another thread.

~BpApplication()

Finalizer for automatic cleanup by the Garbage Collector.

protected ~BpApplication()

FindById<T>(int)

Retrieves the dataset of the specified type by the given ID.

public T? FindById<T>(int id) where T : IHasAutoDataSet, new()

Parameters

id int

The ID to search for.

Returns

T

The dataset of the specified type if found; otherwise, null.

Type Parameters

T

Exceptions

InvalidOperationException

Find<T>(IDataSetIndex, string[]?)

Retrieves the dataset of the specified type by the given index.

public T? Find<T>(IDataSetIndex index, string[]? includes = null) where T : IHasAutoDataSet, new()

Parameters

index IDataSetIndex

An instance of IDataSetIndex to use for the search.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

T

The dataset of the specified type if found; otherwise, null.

Type Parameters

T

FreeSpecialObject<T>(BpSpecialObject<T>)

Frees a special object and removes it from the cache. Expects a BpSpecialObject<T> or the raw COM object if cached directly.

public void FreeSpecialObject<T>(BpSpecialObject<T> wrapper) where T : class

Parameters

wrapper BpSpecialObject<T>

The special object wrapper to be freed.

Type Parameters

T

The type of the raw special object.

Get()

Gets the Büro+ application instance. With this instance, you can access all Büro+ functions according to the Büro+ documentation.

public Application Get()

Returns

Application

GetChanged<T>(DateTime, string?, string[]?)

Retrieves a dataset of the specified type that has changed since the given date, with an optional filter.

public FilterableChangedDataSet<T> GetChanged<T>(DateTime date, string? filter = null, string[]? includes = null) where T : IHasAutoDataSet, IHasAendDat, new()

Parameters

date DateTime

The date to filter changes from.

filter string

Optional: Filter to apply to the dataset.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

FilterableChangedDataSet<T>

An enumerable collection of the specified type.

Type Parameters

T

The type of the dataset.

GetChanged<T>(Func<string, string, DateTime>, string?, string[]?)

Retrieves a dataset of the specified type that has changed since the given date, with an optional filter.

public FilterableChangedDataSet<T> GetChanged<T>(Func<string, string, DateTime> getLastSyncDate, string? filter = null, string[]? includes = null) where T : IHasAutoDataSet, IHasAendDat, new()

Parameters

getLastSyncDate Func<string, string, DateTime>

A function to get the last sync date for the item.

filter string

Optional filter to apply to the dataset.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

FilterableChangedDataSet<T>

An enumerable collection of the specified type.

Type Parameters

T

The type of the dataset.

GetCustomerData()

Retrieves customer data.

public BpCustomerData GetCustomerData()

Returns

BpCustomerData

A BpCustomerData object containing customer information.

Exceptions

ArgumentNullException

Thrown when the company name is not found.

GetDataSet(string, string?)

Retrieves a dataset of the specified type with an optional filter.

public IEnumerable<HasAutoDataSet> GetDataSet(string dataSetName, string? filter = null)

Parameters

dataSetName string

The name of the dataset to retrieve.

filter string

Optional filter to apply to the dataset.

Returns

IEnumerable<HasAutoDataSet>

An enumerable collection of the specified type.

GetDataSet<T>(string?, string[]?)

Retrieves a dataset of the specified type with an optional filter.

public FilterableDataSet<T> GetDataSet<T>(string? filter = null, string[]? includes = null) where T : IHasAutoDataSet, new()

Parameters

filter string

Optional: Filter to apply to the dataset.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

FilterableDataSet<T>

An enumerable collection of the specified type.

Type Parameters

T

The type of the dataset.

GetInstance(Guid)

Retrieves a Büro+ application instance by its unique identifier.

public static BpApplication GetInstance(Guid id)

Parameters

id Guid

The unique identifier of the Büro+ application instance.

Returns

BpApplication

The Büro+ application instance.

Exceptions

InvalidOperationException

Thrown if no instance with the specified ID is found.

GetLoginException()

Retrieves and clears the last exception that occurred during Büro+ login.

public Exception? GetLoginException()

Returns

Exception

The last login exception, or null if no exception occurred.

GetMandant()

Returns the currently specified mandant.

public string? GetMandant()

Returns

string

GetRange<T>(IDataSetIndex, IDataSetIndex, string?, string[]?)

Retrieves a dataset of the specified type within a given range.

public FilterableRangeDataSet<T> GetRange<T>(IDataSetIndex indexStart, IDataSetIndex indexEnd, string? filter = null, string[]? includes = null) where T : IHasAutoDataSet, new()

Parameters

indexStart IDataSetIndex

The limits for the range start.

indexEnd IDataSetIndex

The limits for the range end.

filter string

Optional: Filter to apply to the dataset.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

FilterableRangeDataSet<T>

An enumerable collection of the specified type.

Type Parameters

T

The type of the dataset.

GetVersion()

Gets the version of BpNexT.NET.

public static string GetVersion()

Returns

string

InsertDataSet<T>()

Inserts a new instance into the AutoDataSet of type T.

[Obsolete("Use AddDataSet<T>() instead.")]
public T InsertDataSet<T>() where T : IHasAutoDataSet, new()

Returns

T

An instance of type T with properties populated from the AutoDataSet.

Type Parameters

T

The type of the object to insert, which must inherit from HasAutoDataSet and have a parameterless constructor.

IsLoggedIn()

Returns whether the user is logged in.

public bool IsLoggedIn()

Returns

bool

Login(string, string, string?)

Logs in to the application using the provided username and password. Automatically gathers company name Requires a valid license file to be set via LoadLicenseFromFile(string, string?) or LoadLicenseFromString(string, string?).

public bool Login(string username, string password, string? mandant = null)

Parameters

username string

The username for login.

password string

The password for login.

mandant string

Optional mandant to select after login.

Returns

bool

True if login is successful, otherwise false.

Login(string, string, string, string, string?)

Logs in to the application using the provided connection details. Requires a valid license file to be set via LoadLicenseFromFile(string, string?) or LoadLicenseFromString(string, string?).

public bool Login(string connectionName, string connectionKey, string username, string password, string? mandant = null)

Parameters

connectionName string

The connection name.

connectionKey string

The connection key.

username string

The username for login.

password string

The password for login.

mandant string

Optional mandant to select after login.

Returns

bool

True if login is successful, otherwise false.

Remarks

If the function returns false, use GetLoginException() to retrieve the last exception that occurred during login.

Logout()

Logs out of the application.

public void Logout()

OpenDataSet(string)

Opens a dataset of the specified type.

public AutoDataSet OpenDataSet(string dataSet)

Parameters

dataSet string

Returns

AutoDataSet

OpenDataSet<T>()

Opens a dataset of the specified type.

public AutoDataSet OpenDataSet<T>()

Returns

AutoDataSet

Type Parameters

T

QueryChanged<T>(DateTime, string[]?)

Retrieves a dataset of the specified type that has changed since the given date.

public IQueryable<T> QueryChanged<T>(DateTime date, string[]? includes = null) where T : class, IHasAutoDataSet, IHasAendDat, new()

Parameters

date DateTime

The date to filter changes from.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

IQueryable<T>

Type Parameters

T

QueryChanged<T>(Func<string, string, DateTime>, string[]?)

Retrieves a dataset of the specified type that has changed since the last sync date.

public IQueryable<T> QueryChanged<T>(Func<string, string, DateTime> getLastSyncDate, string[]? includes = null) where T : IHasAutoDataSet, IHasAendDat, new()

Parameters

getLastSyncDate Func<string, string, DateTime>

A function to get the last sync date for the item.

includes string[]

Optional: Names of the fields to load in the dataset.

Returns

IQueryable<T>

Type Parameters

T

The type of the dataset.

QueryDataSet<T>(string[]?)

Returns an IQueryable for the specified DataSet type, automatically optimizing queries using available indices where possible.

public IQueryable<T> QueryDataSet<T>(string[]? includes = null) where T : IHasAutoDataSet, new()

Parameters

includes string[]

Returns

IQueryable<T>

Type Parameters

T

The DataSet type.

ReadChanged<T>(DateTime, string[]?, int)

Retrieves a dataset of the specified type that has changed since the given date.

public IQueryable<T> ReadChanged<T>(DateTime date, string[]? includes = null, int chunkSize = 1000) where T : class, IHasAutoDataSet, IHasAendDat, new()

Parameters

date DateTime

The date to filter changes from.

includes string[]

Optional: Names of the fields to load in the dataset.

chunkSize int

Optional: The size of the chunks to read from the dataset.

Returns

IQueryable<T>

Type Parameters

T

ReadChanged<T>(Func<string, string, DateTime>, string[]?, int)

Retrieves a dataset of the specified type that has changed since the last sync date.

public IQueryable<T> ReadChanged<T>(Func<string, string, DateTime> getLastSyncDate, string[]? includes = null, int chunkSize = 1000) where T : IHasAutoDataSet, IHasAendDat, new()

Parameters

getLastSyncDate Func<string, string, DateTime>

A function to get the last sync date for the item.

includes string[]

Optional: Names of the fields to load in the dataset.

chunkSize int

Optional: The size of the chunks to read from the dataset.

Returns

IQueryable<T>

Type Parameters

T

The type of the dataset.

ReadDataSet<T>(string[]?, int)

Returns an IQueryable for the specified DataSet type, automatically optimizing queries using available indices where possible. Returned objects are read-only and will not be tracked.

public IQueryable<T> ReadDataSet<T>(string[]? includes = null, int chunkSize = 1000) where T : IHasAutoDataSet, new()

Parameters

includes string[]
chunkSize int

Returns

IQueryable<T>

Type Parameters

T

RecreateApplication(bool)

Recreates the Büro+ application instance. Use this method to reset the application state if the RPC server becomes unresponsive.

public void RecreateApplication(bool killProcess = false)

Parameters

killProcess bool

If true, the previous/existing Büro+ process will be terminated before recreating the application instance.

SelectMandant(string)

Selects the specified mandant.

public void SelectMandant(string mandant)

Parameters

mandant string

The mandant to select.

Exceptions

InvalidOperationException

Thrown when a mandant is already selected.

SetRetryTimeout(int, int)

Sets the retry count and timeout for requests to the Büro+ application.

public void SetRetryTimeout(int retryCount = 100, int timeout = 2000)

Parameters

retryCount int
timeout int

SetupLogger()

Sets up the logger for the application.

public static void SetupLogger()

StartTransaction(string)

Starts a transaction for the specified DataSet name.

public BpTransaction StartTransaction(string dataSetName)

Parameters

dataSetName string

Returns

BpTransaction

StartTransaction<T>()

Starts a transaction for the specified DataSet type.

public BpTransaction StartTransaction<T>() where T : IHasAutoDataSet

Returns

BpTransaction

Type Parameters

T

SubscribeToNotifications(Func<MeldFensterRequest, int>, Action<Exception>?)

Subscribes to Büro+ notifications.

public IDisposable SubscribeToNotifications(Func<MeldFensterRequest, int> handler, Action<Exception>? onError = null)

Parameters

handler Func<MeldFensterRequest, int>
onError Action<Exception>

Returns

IDisposable