import { Callout } from "zudoku/ui/Callout";

# Gruppen-basierte Druckerauswahl

<Callout type="info" title="Hinweis">
Diese Funktion ist ab Version <b>18.12</b> des 365 business Print Agent verfügbar.<br/>
Bitte stellen Sie sicher, dass Sie die aktuelle Version verwenden.
</Callout>

Die **Gruppen-basierte Druckerauswahl** ermöglicht es, Drucker für Benutzer über deren [Sicherheitsgruppen](https://learn.microsoft.com/de-DE/dynamics365/business-central/ui-define-granular-permissions) zuzuweisen. So können Sie Drucker für Gruppen von Benutzern verwalten, anstatt jeden Benutzer einzeln zu konfigurieren.

## Was ist die Gruppen-basierte Druckerauswahl?

Die Gruppen-basierte Druckerauswahl erweitert die standardmäßige Druckerauswahl um eine Ebene, in der Drucker nicht nur für einzelne Benutzer oder Reports zugewiesen werden können, sondern auch für **Benutzergruppen**.

- **Benutzer-spezifische Zuweisungen** haben Vorrang vor Gruppenzuweisungen.
- **Report-spezifische Zuweisungen** (für einen bestimmten Report) haben Vorrang vor allgemeinen Zuweisungen (ohne Report).
- Gruppenzuweisungen gelten für **alle Member** der zugewiesenen Sicherheitsgruppe.

## Wie funktioniert die Gruppen-basierte Druckerauswahl?

Die Gruppenzuweisung erfolgt über die Codeunit `bdev.PrA Group Printer Sel.` (5523825). Diese wird automatisch beim Druckvorgang aufgerufen und prüft:

1. Ob die Benutzergruppen-Zuweisung relevant ist (kein expliziter Benutzer-Report-Drucker vorhanden ist)
2. Die verfügbaren Sicherheitsgruppen des aktuellen Benutzers
3. Die Druckerauswahl für die Gruppen (nach Report-Id und danach allgemein)

Die Logik ist wie folgt:

1. Prüfe, ob der Benutzer einer Sicherheitsgruppe angehört.
2. Suche nach einer Druckerauswahl für die Gruppe mit der aktuellen Report-ID.
3. Falls kein report-spezifischer Drucker gefunden wurde, prüfe auf allgemeine Gruppen-Druckerauswahl (Report-ID = 0).
4. Der gefundene Druckername wird verwendet, sofern vorhanden.

## Voraussetzungen

- Microsoft Dynamics 365 Business Central (BC22 oder höher)
- 365 business Print Agent Version 18.12 oder höher
- Benutzer müssen Mitglied in mindestens einer Sicherheitsgruppe sein

## Verwendung

Die Gruppen-basierte Druckerauswahl wird **automatisch** beim Druckvorgang angewendet. Es ist keine manuelle Konfiguration in der Druckerauswahl erforderlich.

Die Zuweisung erfolgt über die Tabelle **"bdev.PrA Group Printer Sel."**, die über AL-Entwicklung oder Import-Tools gepflegt wird.

### Beispiel: Drucker für eine Sicherheitsgruppe zuweisen

| Gruppen-Code | Report-ID | Druckername      |
|--------------|-----------|------------------|
| SALES-DEPT   | 100       | HP-LaserJet-100  |
| SALES-DEPT   | 0         | HP-LaserJet-All  |

- Benutzer in der Sicherheitsgruppe `SALES-DEPT` erhalten beim Druck von Report 100 den Drucker `HP-LaserJet-100`.
- Für alle anderen Reports erhalten sie den Drucker `HP-LaserJet-All`.

## Hintergrund

Die Funktion nutzt die standardmäßige Eventsubscriber-Logik von Business Central:

```al
[EventSubscriber(ObjectType::Codeunit, Codeunit::ReportManagement, "OnAfterGetPrinterName", '', true, true)]
local procedure SetPrinterNameForGroupPrinterSelectionOnAfterGetPrinterName(...)
```

Der EventSubscriber wird nach der standardmäßigen Druckerauswahl aufgerufen und ersetzt den Druckernamen, wenn eine Gruppenzuweisung vorliegt.

### Technische Details

- **Objekt-ID**: Codeunit 5523825 "bdev.PrA Group Printer Sel."
- **EventSubscriber**: `ReportManagement.OnAfterGetPrinterName`
- **Tabelle**: `bdev.PrA Group Printer Sel.` (5523825)
- **Sicherheit**: Die Codeunit prüft Read-Permissions für die Gruppen-Tabelle.

## Siehe auch

- [Drucker-Zugriffsberechtigungen](printer-access-permission.mdx)
- [Printer Selection (Microsoft Learn)](https://learn.microsoft.com/de-DE/dynamics365/business-central/ui-define-granular-permissions)