• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как получить список групп конфигуратора к которым принадлежит пользователь?

Автор MaksTsk, 15.05.14, 06:34:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

MaksTsk

Коллеги, добрый день!

Возникла необходимость получить список групп из Лоцман конфигуратора, к которым принадлежит пользователь. Не список подразделений или должностей из WorkFlow, а именно групп из конфигуратора.

Смотрел в API и к сожалению не смог найти подходящий метод.

Manuylov

написать хранимку с требующимся возвращаемым результатом и вызывать её через GetReport
+ Благодарностей: 1

MaksTsk

Цитироватьнаписать хранимку с требующимся возвращаемым результатом и вызывать её через GetReport

Спасибо!

Получается эту хронимую процедуру придется прописывать на каждом сервере использующем наше приложение?

Есть ли какое-то более простое решение?

Manuylov

да, на каждом сервере

других вариантов я не знаю, может кто-то ещё что-то подскажет

teplinskiy

Цитата: MaksTsk от 15.05.14, 12:13:50
Есть ли какое-то более простое решение?
Воспользуйтесь API Конфигуратора, метод GetUserGroups.
Этот метод имеет входной параметр - идентификатор пользователя.
Результатом выполнения будет датасет вида:

_ID; _NAME; _IS_ADMIN
1; Administrators; 1
2; Users; 0


Во вложении пример вызова этого метода.
Дополнительно включен метод GetUsers, он отобразит данные по всем пользователям, из него возьмете идентификатор нужного.

Замечание:
Если у Вас 64 битная ОС, то файл скрипта запустите с помощью:
Цитировать"C:\Windows\SysWOW64\cscript.exe"
+ Благодарностей: 1

MaksTsk

Спасибо большое!

К сожалению в справке данного метода нету, так же как и нету в описании интерфейса.
Вот всё что есть:
[Guid("fe6c33c2-f27d-4b2f-9c84-c39119ac482a")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPluginAppConfigurator
    {
        string GetLastError();
       
// API-ЛОЦМАН Конфигуратор
        bool GetSortCase(string stProfile, string stType, string stLink,
          int inIndex, out IPluginDataSet ds);
        bool GetSortTypes(int inIdCase, out IPluginDataSet ds);
        bool GetSortTree(int inIdCase, out IPluginDataSet ds);
        bool GetSortTable(int inIdCase, out IPluginDataSet ds);
    }


Я так понимаю сюда нужно добавить что-то типа метода
bool GetUserGroups(int inIdUser, out IPluginDataSet ds);

В присланном Вами скрипте Вы использовали следующую сигнатуру
bool GetUserGroups(int inIdUser, int mes, string code, out IPluginDataSet ds);

Но к сожалению при вызове метода с обеими указанными сигнатурами вылетает ошибка. Подскажите пожалуйста нужную сигнатуру метода  GetUserGroups (язык C#), для того чтобы корректно внести его в описание интерфейсов.

chum

А метод GetInfoAboutCurrentBase в режиме 51 не подойдет?
Цитата из справки по ЛОЦМАН API:
inMode = 51

Возвращает список пользователей и групп, в которые они входят.

Возвращает набор данных с полями:

[_ID_USER] int – идентификатор пользователя;

[_USERNAME] string – короткое имя пользователя;

[_FULLUSERNAME] string – полное имя пользователя;

[_MAIL] string – адрес электронной почты пользователя;

[_ID_GROUP] int – идентификатор группы;

[_GROUPNAME] string – название группы;

[_FULLGROUPNAME] string – полное название группы;

[_IS_ADMIN] int – (1 – является группой администраторов, 0 – не является группой администраторов)
.




+ Благодарностей: 1

MaksTsk

Цитата: chum от 19.05.14, 18:22:27
А метод GetInfoAboutCurrentBase в режиме 51 не подойдет?
Цитата из справки по ЛОЦМАН API:
inMode = 51

Возвращает список пользователей и групп, в которые они входят.

Возвращает набор данных с полями:

[_ID_USER] int – идентификатор пользователя;

[_USERNAME] string – короткое имя пользователя;

[_FULLUSERNAME] string – полное имя пользователя;

[_MAIL] string – адрес электронной почты пользователя;

[_ID_GROUP] int – идентификатор группы;

[_GROUPNAME] string – название группы;

[_FULLGROUPNAME] string – полное название группы;

[_IS_ADMIN] int – (1 – является группой администраторов, 0 – не является группой администраторов)
.


Спасибо! Работает!

У метода есть небольшой минус - для каждого сочетания пользователь-группа он возвращает отдельный объект, поэтому на большой базе (500+ пользователей, каждый к примеру состоит в 2 группах), данный метод возвращает коллекцию из 1000+ объектов, что в общем то занимает приличное количество времени.

В общем-то работает, но дабы ускорить процесс хотелось бы узнать сигнатуру метода

GetUserGroups

т.к. насколько я понял он возвращает список групп для конкретного пользователя, а это однозначно должно быть быстрее

Manuylov

Не знаю как там в C# , а в Дельфи можно импортировать и получить описание типов и методов любой DLL.
Есть комманда "Import Type Library", которая генерирует описание типов из ДЛЛ в формате Дельфи.
В шарпе тоже должно быть что-то похожее.
Импортировать надо из файла сервера конфигуратора LoodsmanAppServerConfig.dll