Доступы на внешние отчеты без изменения конфигурации


Возникла проблема установки прав доступа на внешние отчеты без изменения конфигурации. Т.е. конфигурацию вообще нельзя было трогать.
Такого добра в инете очень много, но все как то сложно и мудрено. Решил написать свою.
За основу взял разработку "Irzik" с одного из сайтов любителей 1С. За это ему большое спасибо. Использованы так же идеи других пользователей, заранее приношу им свои извинения, что не смог их отметить, просто не помню у кого подглядывал. Обращайтесь, подправлю.  Программа написана на скорую руку, много мусора, на днях все лишнее выкину. Это моя первая раздача, так что не обессудьте.
Используется компонента compound.dll.

Внимание, обработка меняет в ert файлах программный код. Не опытным пользователям, предварительно посоветоваться с программистом.

Для работы требуется зарегестрировать компоненту compound.dll (берем отсюда). Она есть в архиве с обработкой. 

Теперь к самой программе: программа загружается только под пользователем "администратор"(желающие меняют под себя).  При запуске загружается список файлов из каталога  "КаталогИБ()\ExtForms\*.ert" (т.е. выводит весь список ert файлов находящихся в папке ExtForms) и список всех пользователей. Становимся на пользователя , ставим галочки возле нужного отчета и жмем "Поменять доступ". И так с каждым пользователем. Поле "С" показывает, есть доступ на данного пользователя или нет. Если стоит "#", значит доступ на данный отчет у пользователя есть.

Изменения вступят в силу только после нажатия кнопки "ПРИМЕНИТЬ ПРАВА ". Внимание!!! После нажатия кнопки "Изменить права" меняется программный код ert файлов отмеченные в поле "ИЗМ" следующим символом - "*" !

Для программистов: схема следующая, берем ert файл, рапаковываем , сгружаем "Main Metadata Stream" в текст, добовляем/удаляем в конец текста (программного кода) наш кусочик программы и опять запаковываем. По сути, мы просто добавили в конце нашего ert файла следующий программный код:

 

//НачалоДоступаКОбъекту

User =ИмяПользователя()+";";

СписокПолДляОбработки="АдминистраторСД;Администратор;";

Если 
Найти(Врег(СписокПолДляОбработки),Врег(User))=0 тогда

Предупреждение("У вас нет доступа!",10);

Форма.Закрыть();

КонецЕсли;

//КонецДоступаКОбьекту

 

 

 

Файлы обработки:

-