На кожному підприємстві є звіти(обробки) доступ до яких потрібно зробити лише певним
працівникам.
Використовуючи стандартні можливості розмежування доступу (що як мінус можна робити тільки через конфігуратор) можна вкінцевому результаті досягнути тільки двох варіантів: повністю дозволити, або повністю заборонити. Є як варіант ставити для зовнішнього звіту пароль на відкриття, але він є відповідно тим самим що і на редагування звіту, чого б допускати не хотілося.
Основна перевага використання зовнішнього звіту думаю всім зрозуміла: можливість редагування під час роботи користувачів (Програмісти також люди і нехочеться ночами працювати над внесенням змін в базу 1С).
Для цього найперше що треба зробити це задати в конфігураторі право всім використовувати зовнішні звіти, правда тільки ті що знаходяться в каталозі «ExtForms» бази 1С. Тому спочатку для всіх груп прав (адміністратори не виключення) потрібно задати правило «Использование общих Внешних Отчетов и Обработок», і обовязково знімаємо галочку напроти «Использование любых Внешних Отчетов и Обработок».
Каталог «ExtForms» потрібно зробити всім (окрім звичайно адміністратора) тільки на читання разом з файлами що в ньому (тут вже використовуючи можливості конкретної операційної системи де знаходиться сама база 1С).
Після цього нам взагалі нестрашні віруси(читай надто допитливі користувачі) що написані під 1С :)
Після цього берем за правило: кожен зовнішній звіт який ми поміщаєм в каталог «ExtForms» поперше робити тільки на читання і подруге ставити пароль на зовнішній звіт , але тільки на захист від редагування. (При відкритому зовінішньому звіті в конфігураторі тиснем «Действия-Установить пароль», вносим пароль, а вот галочку «Запрашивать пароль при исполнении» непотрібно ставити).
Далі в кожен зовнішній звіт вставляєм такий модуль:
- Ставимо на самий початок модуля (звичайно після визначення змінних всіх):
// Перевіряє на право використання звіту/обробки певним користувачем/групою
// © SVB (Василь) kreont@meta.ua
Функция ПраваДоступу()
// Добавлення явно користувачів неважливо в яку групу загальну вони входять
ДозволеноДляКористувачів = "Адміністратор";
ДозволеноДляКористувачів = ДозволеноДляКористувачів + "АдминовАА";
// і т.дальше добавляти дозвола для конкретного користувача так як він внесений в список користувачів 1С
// Аналогічно допусуєм наприклад дозвіл для всіх хто входить в групу «Администратори»
//ДозволеноДляКористувачів = ДозволеноДляКористувачів + "Администратор";
Если Макс( Найти(ДозволеноДляКористувачів, ИмяПользователя()),
Найти(ДозволеноДляКористувачів, НазваниеНабораПрав())) = 0 Тогда
Возврат 0;// Заборонено доступ
КонецЕсли;
Возврат 1;// Дозволений доступ
КонецФункции
- В процедуру «ПриОткрытии» з самого початку :
Процедура ПриОткрытии()
Если ПраваДоступу() = 0 Тогда
Сообщить("Недостатньо прав. Зверніться до адміністратора");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Я тепер такий кусок коду вставляю в кожен зовнішній звіт, адмініструвати по власному досвіду скажу, зовсім нескладно, доступно і швидко.