Mемо-поле в табл.AOBJRIGHTS
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Mемо-поле в табл.AOBJRIGHTS
Здравствуйте.
Надеюсь на вашу помощь в следующей задаче. Нужно разработать отчет по правам доступа пользователей к пунктам меню Галактики. Отчеты по теме, найденные в Support, не подходят вообще по многим причинам.
Нашла таблицу, в которой похоже хранится инфо: табл. AOBJRIGHTS (47). В ней мемо-поле VALUE, в котором виден список интерфейсов (например, L_MCU::KATMC, L_OSTATKI::TEKSALDO(0), L_SKLAD::COUNTSAL(1), др.), но нет наименования пункта меню. Есть ли возможность сопоставить наименованию интерфейса имя пункта меню? Может, инфо о соответствии хранится в какой-то таблице или есть ф-ция, которая по имени интерфейса возвращает наименование пункта меню или описание интерфейса?
Надеюсь на вашу помощь в следующей задаче. Нужно разработать отчет по правам доступа пользователей к пунктам меню Галактики. Отчеты по теме, найденные в Support, не подходят вообще по многим причинам.
Нашла таблицу, в которой похоже хранится инфо: табл. AOBJRIGHTS (47). В ней мемо-поле VALUE, в котором виден список интерфейсов (например, L_MCU::KATMC, L_OSTATKI::TEKSALDO(0), L_SKLAD::COUNTSAL(1), др.), но нет наименования пункта меню. Есть ли возможность сопоставить наименованию интерфейса имя пункта меню? Может, инфо о соответствии хранится в какой-то таблице или есть ф-ция, которая по имени интерфейса возвращает наименование пункта меню или описание интерфейса?
Re: Mемо-поле в табл.AOBJRIGHTS
Добрый день.
Тоже задавался этим вопросом, выяснил только, что в этом поле хранится сортированный контейнер, однако выгрузить его в структуры ВИП'а для дальнейшей обработки не удалось - техподдержка сказала, что функции для этого есть, но они живут где-то в недрах атлантиса и для простых смертных недоступны.
В качестве решения сделал прилинкованную форму к USERRIGHTSREPORT, там в цикле USERRIGHTSREPORT_MENULOOP1 из переменной FRMENU получал данные, потом их дополнительно парсил.
Форма USERRIGHTSREPORT вызывается в SUPPORT ПраваПользователей-Отчёты-ПраваПользователей.
Мб тоже будет полезно: если понадобится программно узнать, какие группы пользователей в SUPPORT в какие группы входят, то сделать это можно так:
Тоже задавался этим вопросом, выяснил только, что в этом поле хранится сортированный контейнер, однако выгрузить его в структуры ВИП'а для дальнейшей обработки не удалось - техподдержка сказала, что функции для этого есть, но они живут где-то в недрах атлантиса и для простых смертных недоступны.
В качестве решения сделал прилинкованную форму к USERRIGHTSREPORT, там в цикле USERRIGHTSREPORT_MENULOOP1 из переменной FRMENU получал данные, потом их дополнительно парсил.
Форма USERRIGHTSREPORT вызывается в SUPPORT ПраваПользователей-Отчёты-ПраваПользователей.
Мб тоже будет полезно: если понадобится программно узнать, какие группы пользователей в SUPPORT в какие группы входят, то сделать это можно так:
Код: Выделить всё
_loop X$RESOURCES where((24 == XR$TYPE)){
var mResGroups: longint;
//В мемо поле содержится сортированный контейнер
//Функция SortedContainer_Load в справке не описана...
mResGroups := SortedContainer_Load(x$Resources.xr$Data);
if mResGroups <> 0
{
var i: longint;
var aMemb: comp;
for (i := 0; i < SortedContainer_GetCount(mResGroups); i++)
{
aMemb := SortedContainer_AtC(mResGroups, i);
if aMemb <> 0 then
insert tmpGroups set
cOwner := x$Resources.XR$CODE
, cGroup := aMemb; //В какую группу входит текущая группа
}
SortedContainer_Done(mResGroups, '');
}
}
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Mемо-поле в табл.AOBJRIGHTS
Здравствуйте.
KVS, спасибо за Ваш ответ!
К поставленной з-че еще условие: не выводить пользователей, которым запрещен доступ в Галактику (их немало).
Я ранее смотрела указанную Вами форму, и у меня была мысль написать присоединенную форму. В списке форм только одна форма UserRightsReport, и в параметрах отчета (настройка форм) указаны только:
-Ресурс: \\...\Support\EXE\Support.res
-Имя формы: USERRIGHTSREPORT
-Таблица и интерфейс: PR_USERREPORT.
Прототип не указан. Поэтому тогда вариант отпал. Но после Вашего ответа нажала на форме F4 и получила исходник. Спасибо! Буду пробовать писать присоединенку.
Указанная Вами форма доступна еще: Support – Права доступа – Администрирование – Пользователей, пометка пользователей, по ПКМ пункт «Отчет о правах».
Смотрела еще:
- Support – Права доступа – Отчеты – Права на функции системы. Отчет в неудобном виде и работать с ним невозможно.
- Support - Права доступа – Администрирование – Пользователей, пометка пользователей, по ПКМ пункт «Сравнить права». Здесь в отчет не попадают админы, которым все доступно. И для сравнения доступно мах 5 пользователей. Т.е. когда пользователей много (более 500), то тогда придется формировать по 5 чел, а потом все это как-то объединять. Да и к сформированному отчету есть замечания, в частности не выводятся полные имена пользователей.
При анализе имеющихся форм по правам доступа неоднократно возникал вопрос: для кого разработчик сделал такие формы, с которыми невозможно работать? Неужели нельзя было разработать такую, чтобы все было понятно, например, по строкам пункты меню, а по столбцам пользователи, на пересечении признак доступа. Можно было бы дать возможность формировать блоками по N столбцов (пользователей).
Спасибо Вам и за дополнение. Только я не поняла Вашу фразу: «какие группы пользователей в SUPPORT в какие группы входят».
Вы пишите о 2 видах групп: группы пользователей (это понятно) и еще какие-то группы (непонятно).
Конкретно у нас нет ни одной записи по условию X$RESOURCES.XR$TYPE =24.
О входимости пользователей в группы как-то писала:
KVS, спасибо за Ваш ответ!
К поставленной з-че еще условие: не выводить пользователей, которым запрещен доступ в Галактику (их немало).
Я ранее смотрела указанную Вами форму, и у меня была мысль написать присоединенную форму. В списке форм только одна форма UserRightsReport, и в параметрах отчета (настройка форм) указаны только:
-Ресурс: \\...\Support\EXE\Support.res
-Имя формы: USERRIGHTSREPORT
-Таблица и интерфейс: PR_USERREPORT.
Прототип не указан. Поэтому тогда вариант отпал. Но после Вашего ответа нажала на форме F4 и получила исходник. Спасибо! Буду пробовать писать присоединенку.
Указанная Вами форма доступна еще: Support – Права доступа – Администрирование – Пользователей, пометка пользователей, по ПКМ пункт «Отчет о правах».
Смотрела еще:
- Support – Права доступа – Отчеты – Права на функции системы. Отчет в неудобном виде и работать с ним невозможно.
- Support - Права доступа – Администрирование – Пользователей, пометка пользователей, по ПКМ пункт «Сравнить права». Здесь в отчет не попадают админы, которым все доступно. И для сравнения доступно мах 5 пользователей. Т.е. когда пользователей много (более 500), то тогда придется формировать по 5 чел, а потом все это как-то объединять. Да и к сформированному отчету есть замечания, в частности не выводятся полные имена пользователей.
При анализе имеющихся форм по правам доступа неоднократно возникал вопрос: для кого разработчик сделал такие формы, с которыми невозможно работать? Неужели нельзя было разработать такую, чтобы все было понятно, например, по строкам пункты меню, а по столбцам пользователи, на пересечении признак доступа. Можно было бы дать возможность формировать блоками по N столбцов (пользователей).
Спасибо Вам и за дополнение. Только я не поняла Вашу фразу: «какие группы пользователей в SUPPORT в какие группы входят».
Вы пишите о 2 видах групп: группы пользователей (это понятно) и еще какие-то группы (непонятно).
Конкретно у нас нет ни одной записи по условию X$RESOURCES.XR$TYPE =24.
О входимости пользователей в группы как-то писала:
Код: Выделить всё
//Пользователи (только без запрета входа в Галактику) и группы, в которые они входят
sql
select
X$USERS.ATL_NREC as "X$USERS_NREC"
,X$USERS.XU$FULLNAME as "FULLNAME"
,X$USERS.XU$LOGINNAME as "LOGINNAME"
,case when X$USERS.XU$TYPE=1 THEN 'Адм' ELSE '' END as "TYPE"
,GROUPS.ATL_NREC as "GROUPS_NREC"
,GROUPS.NAME as "GROUPS_NAME"
from
GROUPUSERS
left join X$USERS on ( GROUPUSERS.USERCODE = X$USERS.ATL_NREC )
left join GROUPS on ( GROUPUSERS.GROUPCODE = GROUPS.ATL_NREC )
Where
((
0 = bitand(x$users.xu$flag,8)
))
order by X$USERS.XU$FULLNAME, GROUPS.NAME
to xlsx UsersAndGroups.xlsx;
Re: Mемо-поле в табл.AOBJRIGHTS
В части групп пользователей:
Имеется ввиду ситуация, когда одна группа входит в другую группу.
На нашем примере: есть точка расширения, код в которой нужно выполнять только если пользователь не входит в определенную группу.
Права пользователей настроены так, что пользователь может входить в интересующую группу опосредованно - через другие группы.
При помощи кода из моего примера, выясняем входит ли пользователь в эту группу.
В части прилинкованной формы:
Нужно быть готовыми к тому, что она выплёвывает данные по правам на функции системы одной очень длинной строкой, которую нужно потом
парсить вручную.
Имеется ввиду ситуация, когда одна группа входит в другую группу.
На нашем примере: есть точка расширения, код в которой нужно выполнять только если пользователь не входит в определенную группу.
Права пользователей настроены так, что пользователь может входить в интересующую группу опосредованно - через другие группы.
При помощи кода из моего примера, выясняем входит ли пользователь в эту группу.
В части прилинкованной формы:
Нужно быть готовыми к тому, что она выплёвывает данные по правам на функции системы одной очень длинной строкой, которую нужно потом
парсить вручную.
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Mемо-поле в табл.AOBJRIGHTS
Спасибо за разъяснение!
По поводу работы с длинной строкой я понимаю. Придется анализировать наличие в длинной строке подстрок вида :
-", Подменю"
-", RunMenu"
-", cmRunInterface"
И выделять из длинной строки часть до указанных подстрок.
По поводу работы с длинной строкой я понимаю. Придется анализировать наличие в длинной строке подстрок вида :
-", Подменю"
-", RunMenu"
-", cmRunInterface"
И выделять из длинной строки часть до указанных подстрок.
Re: Mемо-поле в табл.AOBJRIGHTS
Да, абсолютно верно понимаете
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Mемо-поле в табл.AOBJRIGHTS
Здравствуйте.
Написала отчет: присоединенная форма с выводом в Excel. Запустила формирование отчета в Support. Получаю предупреждение:
«Не загрузилась динамическая библиотека G_ExcelLib3X.dll: Не найден указанный модуль». Жму ОК. Потом поочередно получаю аналогичные сообщения по поводу G_Tune.dll и G_Common.dll.
По Message вижу, что ТП наполнена данными. xlCreateExcel возвратила False, xlGetLastError возвратила 0.
Как решить проблему? Или нельзя выводить отчеты для Support в Excel?
Написала отчет: присоединенная форма с выводом в Excel. Запустила формирование отчета в Support. Получаю предупреждение:
«Не загрузилась динамическая библиотека G_ExcelLib3X.dll: Не найден указанный модуль». Жму ОК. Потом поочередно получаю аналогичные сообщения по поводу G_Tune.dll и G_Common.dll.
По Message вижу, что ТП наполнена данными. xlCreateExcel возвратила False, xlGetLastError возвратила 0.
Как решить проблему? Или нельзя выводить отчеты для Support в Excel?
Re: Mемо-поле в табл.AOBJRIGHTS
Добрый день!
Судя по всему данные библиотеки относятся непосредственно к галактике, попробуйте их оттуда скопировать в папку с саппортом.
Возможно, потом потребуется дополнительно сделать от имени админа regsvr32 "ПутьДоDLL\G_ExcelLib3X.dll".
Судя по всему данные библиотеки относятся непосредственно к галактике, попробуйте их оттуда скопировать в папку с саппортом.
Возможно, потом потребуется дополнительно сделать от имени админа regsvr32 "ПутьДоDLL\G_ExcelLib3X.dll".