Class BpApplication
Represents the BpNexT.NET wrapper class for easier handling of Büro+
public class BpApplication : IDisposable
- Inheritance
-
objectBpApplication
- 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
bpAppApplicationThe 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
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
Accesses the Drucken special object.
public BpSpecialObject<AutoSpecialDrucken> Drucken { get; }
Property Value
- BpSpecialObject<AutoSpecialDrucken>
Remarks
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
Events
Accesses the Events special object.
public BpSpecialObject<AutoSpecialEvents> Events { get; }
Property Value
- BpSpecialObject<AutoSpecialEvents>
Remarks
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
InstanceId
Unique identifier for this Büro+ application instance.
public Guid InstanceId { get; }
Property Value
Instances
Global cache for active Büro+ application instances.
public static ConcurrentDictionary<Guid, BpApplication> Instances { get; }
Property Value
Lager
Accesses the Lager special object.
public BpSpecialObject<AutoLager> Lager { get; }
Property Value
- BpSpecialObject<AutoLager>
Remarks
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
Projekte
Accesses the Projekte special object.
public BpSpecialObject<AutoSpecialProjekte> Projekte { get; }
Property Value
- BpSpecialObject<AutoSpecialProjekte>
Remarks
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
RequestRetryCount
Gets or sets the retry count for requests to the Büro+ application.
public int RequestRetryCount { get; set; }
Property Value
RequestTimeOut
Gets or sets the timeout (in milliseconds) for requests to the Büro+ application.
public int RequestTimeOut { get; set; }
Property Value
Vorgaenge
Accesses the Vorgang special object.
public BpSpecialObject<AutoVorgang> Vorgaenge { get; }
Property Value
- BpSpecialObject<AutoVorgang>
Remarks
Call FreeSpecialObject<T>(BpSpecialObject<T>)(this) after use
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
TThe 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
specialObjectEnumSpecialObjectsThe identifier of the special object.
Returns
- BpSpecialObject<T>
A BpSpecialObject<T> containing the special object of type
T.
Type Parameters
TThe type of the special object.
Remarks
Must call FreeSpecialObject<T>(BpSpecialObject<T>) after use.
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
Returns
Exceptions
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
disposingbooltrueto release both managed and unmanaged resources;falseto 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
dataSetNamestringThe 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
idintThe ID to search for.
Returns
- T
The dataset of the specified type if found; otherwise, null.
Type Parameters
T
Exceptions
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
indexIDataSetIndexAn instance of IDataSetIndex to use for the search.
includesstring[]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
wrapperBpSpecialObject<T>The special object wrapper to be freed.
Type Parameters
TThe 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
dateDateTimeThe date to filter changes from.
filterstringOptional: Filter to apply to the dataset.
includesstring[]Optional: Names of the fields to load in the dataset.
Returns
- FilterableChangedDataSet<T>
An enumerable collection of the specified type.
Type Parameters
TThe 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
getLastSyncDateFunc<string, string, DateTime>A function to get the last sync date for the item.
filterstringOptional filter to apply to the dataset.
includesstring[]Optional: Names of the fields to load in the dataset.
Returns
- FilterableChangedDataSet<T>
An enumerable collection of the specified type.
Type Parameters
TThe 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
dataSetNamestringThe name of the dataset to retrieve.
filterstringOptional 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
filterstringOptional: Filter to apply to the dataset.
includesstring[]Optional: Names of the fields to load in the dataset.
Returns
- FilterableDataSet<T>
An enumerable collection of the specified type.
Type Parameters
TThe type of the dataset.
GetInstance(Guid)
Retrieves a Büro+ application instance by its unique identifier.
public static BpApplication GetInstance(Guid id)
Parameters
idGuidThe 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
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
indexStartIDataSetIndexThe limits for the range start.
indexEndIDataSetIndexThe limits for the range end.
filterstringOptional: Filter to apply to the dataset.
includesstring[]Optional: Names of the fields to load in the dataset.
Returns
- FilterableRangeDataSet<T>
An enumerable collection of the specified type.
Type Parameters
TThe type of the dataset.
GetVersion()
Gets the version of BpNexT.NET.
public static string GetVersion()
Returns
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
TThe 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
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
usernamestringThe username for login.
passwordstringThe password for login.
mandantstringOptional 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
connectionNamestringThe connection name.
connectionKeystringThe connection key.
usernamestringThe username for login.
passwordstringThe password for login.
mandantstringOptional 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
dataSetstring
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
dateDateTimeThe date to filter changes from.
includesstring[]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
getLastSyncDateFunc<string, string, DateTime>A function to get the last sync date for the item.
includesstring[]Optional: Names of the fields to load in the dataset.
Returns
- IQueryable<T>
Type Parameters
TThe 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
includesstring[]
Returns
- IQueryable<T>
Type Parameters
TThe 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
dateDateTimeThe date to filter changes from.
includesstring[]Optional: Names of the fields to load in the dataset.
chunkSizeintOptional: 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
getLastSyncDateFunc<string, string, DateTime>A function to get the last sync date for the item.
includesstring[]Optional: Names of the fields to load in the dataset.
chunkSizeintOptional: The size of the chunks to read from the dataset.
Returns
- IQueryable<T>
Type Parameters
TThe type of the dataset.
ReadDataSet<T>(string[]?, int)
Returns an IQueryable for the specified DataSet type,
automatically optimizing queries using available indices where possible.
public IQueryable<T> ReadDataSet<T>(string[]? includes = null, int chunkSize = 1000) where T : IHasAutoDataSet, new()
Parameters
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
killProcessboolIf 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
mandantstringThe 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
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
dataSetNamestring
Returns
StartTransaction<T>()
Starts a transaction for the specified DataSet type.
public BpTransaction StartTransaction<T>() where T : IHasAutoDataSet
Returns
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
handlerFunc<MeldFensterRequest, int>onErrorAction<Exception>