Проанализируем интересную и часто встречающуюся на практике ситуацию. Предположим, у нас есть пользователь (например, руководитель или системный администратор на стороне клиента), которому необходимо просматривать список тех, кто сейчас работает в базе. Однако, в целях безопасности, у него снято право на использование меню Все функции (начиная с платформы 8.3.17 это меню переименовано в Функции для технического специалиста). Без наличия этого права платформа блокирует прямой интерфейсный вызов встроенных служебных окон, даже если пользователю назначена роль с полными правами.
Рассмотрим несколько рабочих способов, как можно предоставить пользователю доступ к системной форме Активные пользователи без изменения конфигурации и добавления новых ролей.
В платформе 1С:Предприятие существуют скрытые зарезервированные внутренние пути для вызова стандартных функций. Разберем по шагам, как открыть нужный нам список штатным инструментом платформы, используя навигационную ссылку.
e1cib/system/ActiveUsers.Этот способ является самым простым и не требует абсолютно никаких дополнительных файлов или кода. Пользователь может даже добавить эту форму в «Избранное» (нажав на звездочку рядом с заголовком открывшегося окна), чтобы в будущем открывать ее в один клик.
Посмотрим на пример работы с веб-клиентом. Если пользователи подключаются к вашей информационной базе через браузер, нужную стандартную функцию можно запустить сразу же при входе в программу.
Для этого в конец URL-адреса запуска базы (в адресной строке браузера, после всех параметров) нужно добавить хэш с системной ссылкой: #e1cib/system/ActiveUsers. При переходе по такой ссылке платформа загрузится и автоматически откроет нужную форму поверх начальной страницы.
Если варианты со ссылками по каким-то причинам не подходят, выясним, как можно «вытащить» встроенную в платформу форму и сделать из нее обычную внешнюю обработку. Дело в том, что системные окна — это, по сути, скрытые обработки, зашитые внутрь платформы. Точный внутренний адрес обработки списка пользователей: v8res://mngbase/StandardActiveUsers.epf.
Рассмотрим хитрый способ извлечения этого файла без использования конфигуратора и программирования:
AppData\Local\Temp в профиле пользователя.v8_, и расширением .tmp..tmp на .epf.В результате вы получите готовую внешнюю обработку «Активные пользователи». Ее можно передать нашему пользователю. Если у него есть права на интерактивное открытие внешних отчетов и обработок, он сможет запускать ее через стандартное меню «Файл — Открыть».
Если вы хотите сделать доступ максимально удобным и прозрачным для пользователя, проанализируем вариант с написанием простейшей внешней обработки, содержащей одну кнопку на форме. При нажатии на эту кнопку будет программно вызываться встроенная платформенная обработка.
Посмотрим на пример кода, который нужно разместить в модуле формы вашей внешней обработки (в обработчике нажатия на кнопку):
&НаКлиенте
Процедура ОткрытьАктивныхПользователей(Команда)
ИмяПодключеннойОбработки = ПодключитьОбработкуНаСервере();
Если ЗначениеЗаполнено(ИмяПодключеннойОбработки) Тогда
ОткрытьФорму("ВнешняяОбработка." + ИмяПодключеннойОбработки + ".Форма");
Иначе
Предупреждение("Не удалось подключить встроенную обработку платформы!");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПодключитьОбработкуНаСервере()
Попытка
// Подключаем системную обработку по её внутреннему адресу
ИмяОбработки = ВнешниеОбработки.Подключить("v8res://mngbase/StandardActiveUsers.epf", "ActiveUsersInternal", Ложь);
Возврат ИмяОбработки;
Исключение
Возврат "";
КонецПопытки;
КонецФункции
Этот код использует метод ВнешниеОбработки.Подключить(). Мы передаем ему внутренний путь v8res://mngbase/StandardActiveUsers.epf. Платформа подключает системный файл во временное пространство имен внешних обработок (мы задали имя ActiveUsersInternal), после чего клиентский код успешно открывает ее форму методом ОткрытьФорму().
Такую обработку с кнопкой можно подключить в справочник «Дополнительные отчеты и обработки» (если используется Библиотека стандартных подсистем) и назначить доступ к ней конкретному пользователю. Таким образом, проблема будет решена элегантно, безопасно и без изменения типовой конфигурации.