Практика 10.12 Управление принадлежностью выборки к адм. объектам.
Ответ на задание необходимо предоставить в виде файлов Scala и XML, которые были изменены в текущем уроке (для написанного программного кода). Скриншоты интерфейса приложения для заданий выполняемых в интерфейсе и для демонстрации работы кода в системе Global ERP следует отправить в формате PDF, PNG или JPG. Для удобства рекомендуется прислать все файлы в одном архиве.
В ответе на задание должны содержаться элементы, обеспечивающие работоспособность описанного в задании функционала.
В этом примере будет разобран пример, когда стандартное определение адм. объекта не будет работать.
-
Создайте отображение для отображения связей документов в отдельной форме
- в
Lbr_linkAviсоздайте новыйtraitList_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