На основании исследования страницы Acumatica Print Statements (AR503500) я смог определить следующие ключевые таблицы:
- RelationGroup: Группы доступа к принтеру, в которых находятся пользователиназначенный
- SMPrinter: принтеры, связанные с вышеупомянутыми группами
- Поле Users.GroupMask: ссылка между пользователем и группой
Результат SQL
Отношение между RelationGroup и SMPrinter довольно просто через столбец GroupMask.
Однако из-за потенциального использования того же пользователя вДля нескольких групп связь между Users.GroupMask и таблицей RelationGroup немного сложнее.
Переводя шестнадцатеричные значения из столбцов маски группы, мы видим, что каждая группа представлена в отдельной позиции бита:
0x40000000 -- 0100 0000
0x08000000 -- 0000 1000
0x10000000 -- 0001 0000
0x04000000 -- 0000 0100
В нашем случае пользователь с правами администратора принадлежит к следующим группам: доступ к счету наличными, филиал счета фиксированных активовДоступ, ограничение доступа к сотрудникам, проверка
Таким образом, он идентифицируется этим двоичным значением: 01011100, которое соответствует результату 0x5C00 из запроса, ранее показанного для таблицы пользователей.
Существует ли Acumaticaметод, который можно использовать для получения этого результата более прямым способом?Пример: мы вводим пользователя и получаем все группы доступа к принтеру, к которым он / она принадлежит?
Ближайший метод, который я определил, который может предоставить эту информацию, - это метод SearchPrinter (), однако он возвращает только значение по умолчаниюпринтер для пользователя, уведомления или ветви, но не возвращает список принтеров, связанных с вошедшим в систему пользователем.