Отчет по правам пользователей для любой конфигурации "1С:Предприятия 7.7"






Инструмент для наглядного анализа и сравнения наборов прав доступа в 1С 7.7
Работает в любых конфигурациях. В одной из обслуживаемых мной баз 40 наборов прав пользователей (120 пользователей).
Этим отчетом очень наглядно выходит анализировать разницу в правах и просто описывать права пользователей в документации.
Обновлено:
— В новой версии отчета добавил сравнение двух разных баз и анализ внешней БД.
— объекты метаданных представлены в виде дерева (объект "Дерево-Таблица значений" FormEx)

Всегда не хватало мне такого инструмента, чтобы проводить оперативный анализ прав доступа пользователей 1С.

То, что встречал до сих пор по этой теме не подходило по причине необходимости выгрузки описания конфигурации БД для них.

Мне приходится иметь дело со сложными конфигурациями (много пользователей, объектов метаданных, прав…).

Выгрузка описания конфигурации, да и парсинг получаемого описания — не благодарное дело (получается огромный текстовый файл).

Уж очень много времени на это требуется.

 

Поэтому решил создать что-то свое.

За основу взят функционал двух внешних компонент compound.dll и usersdef.dll.

Также используется 1С++ (для чтения бинарных файлов и поиска ИД объектов метаданных).

В приложенном архиве отчет вместе с необходимыми компонентами (будет работать на любых конфигурациях — надеюсь:).

 

Есть возможность как получить полный отчет по правам пользователя/набора прав, так и провести сравнение пользователей/наборов прав.

Можно фильтровать по определенным объектам конфигурации.

 

ЗЫ: Да, чтобы compound.dll работала, ее нужно зарегистрировать в системе от имени администратора (кажется)!

15 Comments

  1. wolfsoft

    Думаю, актуальность отчёта была бы много выше, если бы он позволял сравнивать роли из разных MD-файлов. Такая задача часто стоит при обновлении изменённых конфигураций — требуется сравнивать набор ролей в изменённой конфигурации с набором ролей в типовой конфигурации. Причём, неплохо было бы иметь возможность там указывать, чтоб выводились в отчёт только отличающиеся права. Вот это была бы вещь 🙂

    Reply
  2. Amel2010

    Без проблем.

    Спасибо за дельное предложение.

    Ждите в новой версии.

    А только отличающиеся — и так выводит.

    Reply
  3. Kurt

    «За основу взят функционал двух внешних компонент compound.dll и usersdef.dll.

    Также используется 1С++ (для чтения бинарных файлов и поиска ИД объектов метаданных).

    В приложенном архиве отчет вместе с необходимыми компонентами…»

    А инструкция там есть как эти компоненты «прикрутить»? Бибилиотеки, например, под правами Администратора не нужно с системе регистрировать? Я, да и многие, у кого стандартная конфигурация, стараются обходиться без функционала 1С++. Но ради такой «плюшки» я бы его прикрутил. А как прикручивать, честно, понятия не имею ибо не пользовался. Так что инструкцию не мешало бы приложить. А еще лучше скрипт или батник для автоматической регистрации… но чую для разных систем 32-64 он должен быть разный… библиотеки я думаю можно было бы и в system32 скопировать тем же скриптом.

    И на втором скриншоте… почему у «Админова» нет «минусов» в справочниках «Виды деятельности», «Гарантии», «Контрактные обзательста»? Ну на худой конец… просто пустая клеточка. А то строчка (или столбец) «плывёт». И при очень длинном списке уже будет и не понятно, чей это там плюсик стоит. Вот это «плавание» таблицы меня больше настораживает.

    Reply
  4. Kurt

    И еще вопрос. Обработка запускается в той же базе? Или из другой? В монопольном режиме? Или работающие в этот момент в базе пользователи не мешают?

    Reply
  5. Amel2010

    (1) wolfsoft,

    Вы знаете, к сожалению, я не нашел, как найти внутр. идентификатор объектов по ОЛЕ.

    Кроме справочников и документов — другие не знаю, как находить.

    Если есть идеи, как это сделать — тогда смогу переделать под сравнение.

    Только один вариант крутится в голове — запускать программно в другой БД внешнюю обработку по ОЛЕ и из нее уже получать данные. Как-то так… Но это наверное непродуктивный путь.

    Ну и еще есть способ, вспомнил, — парсить md-файл.

    Пробовал — очень долго выходит.

    Может предложите что-то более продуктивное?

    Попробовал первый вариант — вроде бы получается достаточно продуктивно.

    Правда, при открытии базы по ОЛЕ фокус окон прыгает странным образом.

    Бывает, куда-то теряется окно с запросом логина пользователя.

    Я доделаю вариант для внешних баз.

    Reply
  6. Amel2010

    (3) Kurt,

    «Прикручивать» ничего не нужно.

    Только зарегистрировать библиотеку compound.dll от имени администратора.

    Кто не помнит, это делается командой: «regsvr32.exe compound.dll» в каталоге отчета.

    По поводу второго скриншота — это был косяк. На момент создания скриншота.

    В залитом сюда отчете уже такого нет.

    Reply
  7. Amel2010

    (4) Kurt,

    Та обработка, что выложена сейчас, работает с текущей БД (с той, в которой открыта).

    Следующая версия сейчас в разработке — там будет возможность выбирать анализируемую БД.

    Reply
  8. Amel2010

    (1) wolfsoft,

    реализована Ваша хотелка в новой версии.

    Пользуйтесь на здоровье!

    Reply
  9. &rew

    «Отчет версии 3 с необходимыми компонентами» Там нет compound.dll

    Reply
  10. Amel2010

    (9) &rew,

    Да, Вы правы. Прошу прощения.

    Добавил файл в архив.

    Reply
  11. pikul

    1)При сравнении набора прав двух идентичных конфигураций, при выборе типов объектов в сравниваемой ИБ — ошибка:

    Если ТЗ.НайтиЗначение(ЗначПоиска, н, КолонкаПоиска)=0 Тогда

    {D:……..здесь путь…………АНАЛИЗПРАВДОСТУПА_3.ERT}: Неверный идентификатор колонки!

    1)Причина найдена:

    в пакете «Отчет версии 3 с необходимыми компонентами» — файлы ПолучитьОписаниеМДвТЗ.ert, а в листинге АНАЛИЗПРАВДОСТУПА_3.ERT ссылка на файл 1.ert

    2) При сравнении набора прав двух идентичных конфигураций, сравнение производится некорректно: какой бы набор прав не был бы выбран, сравнительная таблица (результат сравнения) одна и та-же 🙁 Сравнение ТОЛЬКО констант

    Reply
  12. daviels

    к сожалению при формировании появляется ошибка:

    Таб.ПрисоединитьСекцию(Секц+»|Значение» + Шаблон(кол));

    {D:1САНАЛИЗПРАВДОСТУПА_3АНАЛИЗПРАВДОСТУПА_3АНАЛИЗПРАВДОСТУП­А_3.ERT(758)}: Секция не найдена Значение1059

    Reply
  13. assa

    Спасибо. Нужная вещь. Возникли проблемы с регистрацией ДЛЛ. На этом же форуме нашел решение(костыль)

    Содержимое рег файла:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOTAmber.CompoundClsid]
    @=»{78191F00-4E73-11D5-918E-000000000000}»
    
    [HKEY_CLASSES_ROOTCLSID{78191F00-4E73-11D5-918E-000000000000}InprocServer32]
    @=»C:\Program Files (x86)\1Cv77\BIN\COMPOUND.DLL»
    
    [HKEY_CLASSES_ROOTCLSID{78191F00-4E73-11D5-918E-000000000000}ProgID]
    @=»Amber.Compound»
    
    [HKEY_LOCAL_MACHINESOFTWAREClassesAmber.CompoundClsid]
    @=»{78191F00-4E73-11D5-918E-000000000000}»
    
    [HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{78191F00-4E73-11D5-918E-000000000000}InprocServer32]
    @=»C:\Program Files (x86)\1Cv77\BIN\COMPOUND.DLL»
    
    [HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{78191F00-4E73-11D5-918E-000000000000}ProgID]
    @=»Amber.Compound»
    [HKEY_CLASSES_ROOTWow6432NodeCLSID{78191F00-4E73-11D5-918E-000000000000}]
    @=»»
    
    [HKEY_CLASSES_ROOTWow6432NodeCLSID{78191F00-4E73-11D5-918E-000000000000}InprocServer32]
    @=»C:\Program Files (x86)\1Cv77\BIN\Compound.dll»
    
    [HKEY_CLASSES_ROOTWow6432NodeCLSID{78191F00-4E73-11D5-918E-000000000000}ProgID]
    @=»Amber.Compound»

    Показать

    Последние три ключа относятся к х64. Естественно, что путь к длл нужно изменить на свой.

    Спасибо.

    Reply
  14. Amel2010

    (13) Удивлен, что еще актуальна разработка. Спасибо, что поделились решением. Правда, если честно, не понял, что оно решает.

    Если проблема с регистрацией 32-битной библиотеки под 64-битной виндой, то это решается таким образом: нужно регистрировать при помощи regsvr32.exe, которая находится в папке SysWOW64

    Reply
  15. assa

    (14)Работаю на 77 с 96 года. Переходить на 8 не собираюсь. Переписать конфигурации с 77 под 8 не хватит жизни. Это по поводу актуальности разработки. А по поводу регистрации у меня не регистрировалась. Выдавала целый спиок ошибок связанных с обращением к памяти. Я запускал из меню выполнить regsvr32.exe «путь к длл». Запустить прямо из SysWOW64 не додумался 🙂 Спасибо за разработку.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *