Практика 10.12 Управление принадлежностью выборки к адм. объектам.
Ответ на задание необходимо предоставить в виде файлов Scala и XML, которые были изменены в текущем уроке (для написанного программного кода). Скриншоты интерфейса приложения для заданий выполняемых в интерфейсе и для демонстрации работы кода в системе Global ERP следует отправить в формате PDF, PNG или JPG. Для удобства рекомендуется прислать все файлы в одном архиве.
В ответе на задание должны содержаться элементы, обеспечивающие работоспособность описанного в задании функционала.
В этом примере будет разобран пример, когда стандартное определение адм. объекта не будет работать.
-
Создайте отображение для отображения связей документов в отдельной форме
- в
Lbr_linkAvi
создайте новыйtrait
List_gidDocForChoose
наследник отList_gidDoc
-
переопределите в нем метод
getGidMaster
, он должен получать значение переменнойgidDoc_dz
в текущей выборке (getVar
) - создайте метод создания отображения
-
объявите в
avm
новое отображение
- в
-
В
Lbr_InOrderAvi
создайте новую операцию:- тип привилегии - Чтение
-
операция открывает выборку
Lbr_linkAvi#List_gidDocForChoose
с передачей в нее параметра с именемgidDoc_dz
и значением равнымgid
-у текущей записи
-
Соберите проект, и под пользователем
admin
попробуйте выполнить эту операцию, вы должны увидеть все связи текущего заказа. -
Теперь попробуйте сделать это под одним из ограниченных пользователей. Перед этим нужно обновить адм. объект
Lbr_InOrder
и пересчитать индексацию пользователей, т.к. появилась новая операция. Пользователи при открытии списка связей в отдельной форме не будут иметь прав на выборку, хотя эта же выборка хорошо работает как закладка, и права на нее выданы.Это происходит из-за того, что стандартный способ определения адм. объекта не работает, когда мы открыли коллекцию переменной ссылочности вне формы мастера.
В этом случае необходимо самому определять алгоритм определения адм. объекта.
-
Т.к. мы отображаем записи одного документа, то адм. объект будем определять от переданного gid-а, для этого в
Lbr_linkAvi#List_gidDocForChoose
: - переопределите метод acObject, который определяет класс из переданного
gid
-а, и возвращает имя этого класса (т.к. имя адм. объекта равно имени класса) -
переопределите метод acObjectItem, чтобы он возвращал строку вида:
<Имя класса>\Lbr_linkAvi
- так же как эта коллекция отображается в администраторе в детализации к адм. объекту, но без суффикса#Default