Как в 1С открыть список активных пользователей без доступа к меню "Все функции"?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Проанализируем интересную и часто встречающуюся на практике ситуацию. Предположим, у нас есть пользователь (например, руководитель или системный администратор на стороне клиента), которому необходимо просматривать список тех, кто сейчас работает в базе. Однако, в целях безопасности, у него снято право на использование меню Все функции (начиная с платформы 8.3.17 это меню переименовано в Функции для технического специалиста). Без наличия этого права платформа блокирует прямой интерфейсный вызов встроенных служебных окон, даже если пользователю назначена роль с полными правами.

Рассмотрим несколько рабочих способов, как можно предоставить пользователю доступ к системной форме Активные пользователи без изменения конфигурации и добавления новых ролей.

Использование системной навигационной ссылки (через интерфейс)

В платформе 1С:Предприятие существуют скрытые зарезервированные внутренние пути для вызова стандартных функций. Разберем по шагам, как открыть нужный нам список штатным инструментом платформы, используя навигационную ссылку.

  1. В запущенном режиме 1С:Предприятие попросите пользователя нажать комбинацию клавиш Shift + F11. Это стандартное сочетание вызывает платформенное окно «Перейти по ссылке».
  2. В открывшемся окне в поле ввода необходимо вставить следующую системную ссылку: e1cib/system/ActiveUsers.
  3. После этого нужно нажать кнопку «Перейти». Приложение обработает команду и откроет стандартную платформенную форму активных пользователей.

Этот способ является самым простым и не требует абсолютно никаких дополнительных файлов или кода. Пользователь может даже добавить эту форму в «Избранное» (нажав на звездочку рядом с заголовком открывшегося окна), чтобы в будущем открывать ее в один клик.

Параметры запуска через веб-клиент

Посмотрим на пример работы с веб-клиентом. Если пользователи подключаются к вашей информационной базе через браузер, нужную стандартную функцию можно запустить сразу же при входе в программу.

Для этого в конец URL-адреса запуска базы (в адресной строке браузера, после всех параметров) нужно добавить хэш с системной ссылкой: #e1cib/system/ActiveUsers. При переходе по такой ссылке платформа загрузится и автоматически откроет нужную форму поверх начальной страницы.

Извлечение системной обработки в виде файла .epf

Если варианты со ссылками по каким-то причинам не подходят, выясним, как можно «вытащить» встроенную в платформу форму и сделать из нее обычную внешнюю обработку. Дело в том, что системные окна — это, по сути, скрытые обработки, зашитые внутрь платформы. Точный внутренний адрес обработки списка пользователей: v8res://mngbase/StandardActiveUsers.epf.

Рассмотрим хитрый способ извлечения этого файла без использования конфигуратора и программирования:

  1. Администратор, у которого есть доступ к функциям технического специалиста, должен зайти в базу и открыть стандартную обработку Активные пользователи обычным путем.
  2. В этот момент платформа 1С распаковывает зашитую обработку во временный каталог операционной системы. В Windows этот каталог обычно располагается по пути: AppData\Local\Temp в профиле пользователя.
  3. Администратору необходимо перейти в эту папку и отсортировать файлы по дате создания. Там будет находиться свежий файл с именем, начинающимся на v8_, и расширением .tmp.
  4. Этот файл нужно скопировать в другую папку и изменить его расширение с .tmp на .epf.

В результате вы получите готовую внешнюю обработку «Активные пользователи». Ее можно передать нашему пользователю. Если у него есть права на интерактивное открытие внешних отчетов и обработок, он сможет запускать ее через стандартное меню «Файл — Открыть».

Программный способ: создание внешней обработки с кнопкой

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

Посмотрим на пример кода, который нужно разместить в модуле формы вашей внешней обработки (в обработчике нажатия на кнопку):


&НаКлиенте
Процедура ОткрытьАктивныхПользователей(Команда)
    ИмяПодключеннойОбработки = ПодключитьОбработкуНаСервере(); 
    Если ЗначениеЗаполнено(ИмяПодключеннойОбработки) Тогда
        ОткрытьФорму("ВнешняяОбработка." + ИмяПодключеннойОбработки + ".Форма");
    Иначе
        Предупреждение("Не удалось подключить встроенную обработку платформы!");
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПодключитьОбработкуНаСервере()
    Попытка
        // Подключаем системную обработку по её внутреннему адресу
        ИмяОбработки = ВнешниеОбработки.Подключить("v8res://mngbase/StandardActiveUsers.epf", "ActiveUsersInternal", Ложь);
        Возврат ИмяОбработки;
    Исключение
        Возврат "";
    КонецПопытки;
КонецФункции

Этот код использует метод ВнешниеОбработки.Подключить(). Мы передаем ему внутренний путь v8res://mngbase/StandardActiveUsers.epf. Платформа подключает системный файл во временное пространство имен внешних обработок (мы задали имя ActiveUsersInternal), после чего клиентский код успешно открывает ее форму методом ОткрытьФорму().

Такую обработку с кнопкой можно подключить в справочник «Дополнительные отчеты и обработки» (если используется Библиотека стандартных подсистем) и назначить доступ к ней конкретному пользователю. Таким образом, проблема будет решена элегантно, безопасно и без изменения типовой конфигурации.

← На главную