В практике администрирования и разработки на платформе 1С:Предприятие 8.3 часто возникает задача максимально ограничить рабочее пространство пользователя. Типичный сценарий: рядовому сотруднику (не бухгалтеру) требуется доступ в систему только для формирования одного конкретного отчета. При этом все остальные функции программы (меню, панели разделов, функции текущего раздела) должны быть скрыты, чтобы не перегружать пользователя лишней информацией и обеспечить безопасность данных. В этой статье мы подробно разберем, какими методами можно добиться «пустого» интерфейса в конфигурации 1С:Бухгалтерия Предприятия 3.0.
Первым делом проанализируем права доступа. Даже если мы программно скроем все элементы управления, у пользователя не должно быть физической возможности открыть документы или справочники через «Все функции» или по прямой ссылке. Для создания «пустого» интерфейса недостаточно стандартного профиля Только просмотр, так как он все равно отображает множество разделов.
Рекомендуется создать новую роль в конфигураторе и включить в нее только самые необходимые права:
Запуск тонкого клиента или Запуск веб-клиента.Разберем важный нюанс: если у пользователя нет прав на просмотр подсистем, то Панель разделов автоматически станет пустой. Однако системная командная панель (с кнопками «О программе», «Калькулятор» и т.д.) может остаться. Чтобы убрать лишнее, перейдем к более радикальным методам.
Начиная с версии платформы 8.3.12, в 1С появился специальный режим основного окна — Рабочее место. Это идеальное решение для нашей задачи. В этом режиме у приложения полностью отсутствует заголовок окна, главное меню, панели навигации и командный интерфейс. Остается только рабочая область.
Рассмотрим, как включить этот режим программно. Нам потребуется внести изменения в Модуль управляемого приложения. В процедуре ПриНачалеРаботыСистемы мы можем прописать условие для конкретного пользователя:
Процедура ПриНачалеРаботыСистемы()
// Проверяем, является ли текущий пользователь тем самым "ограниченным" сотрудником
Если ПользователиИнформационнойБазы.ТекущийПользователь().Имя = "Отчетник" Тогда
// Устанавливаем режим интерфейса "Рабочее место"
УстановитьВариантИнтерфейсаКлиентскогоПриложения(ВариантИнтерфейсаКлиентскогоПриложения.РабочееМесто);
// Открываем нужный отчет программно
ОткрытьФорму("Отчет.НашСпециальныйОтчет.Форма");
КонецЕсли;
КонецПроцедуры
Этот метод позволяет превратить 1С в специализированное рабочее место, где нет ничего, кроме формы нужного отчета. Проанализируем преимущество: пользователю просто некуда нажать, кроме кнопок внутри самого отчета.
Если режим «Рабочего места» кажется слишком жестким (например, нужно оставить системную кнопку «Выход»), можно использовать метод УстановитьСоставПанелей(). Это позволяет динамически скрывать или показывать стандартные панели 1С.
Рассмотрим пример реализации в Модуль управляемого приложения:
Процедура ПриНачалеРаботыСистемы()
Если РольДоступна("ТолькоОдинОтчет") Тогда
// Создаем пустой массив для описания состава панелей
СоставПанелей = Новый ОписаниеСоставаПанелей;
// Очищаем все области интерфейса
СоставПанелей.Верх.Очистить();
СоставПанелей.Лево.Очистить();
СоставПанелей.Право.Очистить();
СоставПанелей.Низ.Очистить();
// Применяем настройки
УстановитьСоставПанелей(СоставПанелей);
КонецЕсли;
КонецПроцедуры
Выясним, что произойдет при таком подходе: интерфейс 1С станет серым полем без единой кнопки. Это дает полный контроль над визуальной составляющей сеанса пользователя.
В управляемых формах существует понятие Рабочая область начальной страницы. Даже если вы не меняете код, вы можете настроить состав форм, которые открываются сразу при запуске. Разберем шаги:
Открыть рабочую область начальной страницы.ИнформационнаяПанель или ТекущиеДела).Теперь, когда пользователь заходит в систему, отчет открывается автоматически на весь экран. В сочетании с отключенной панелью разделов (через права или настройки) это создаст иллюзию монофункционального приложения.
Если вы не хотите вносить изменения в конфигурацию (например, база находится на поддержке без возможности редактирования), можно воспользоваться административным способом настройки. Посмотрим на алгоритм действий:
Главное меню – Вид – Настройка панелей.Важный момент: чтобы пользователь сам не вернул эти панели обратно, в его роли в конфигураторе следует отключить право Сохранение данных пользователя. После этого 1С будет запускаться с вашими настройками интерфейса, и изменить их стандартными средствами пользователь не сможет.
Проанализируем ситуацию, когда нам нужно передать команду на запуск отчета прямо в ярлыке. Использование ключа /C позволяет передать произвольную строку в параметр сеанса. В коде 1С (в процедуре ПриНачалеРаботыСистемы) мы можем считать этот параметр через функцию ПараметрЗапуска.
Пример командной строки ярлыка: "C:\Program Files\1cv8\common\1cestart.exe" /F "D:\Bases\BP" /N "User1" /C "OnlyReport"
В коде обработаем это так:
Если ПараметрЗапуска = "OnlyReport" Тогда
// Скрываем интерфейс и открываем отчет
УстановитьВариантИнтерфейсаКлиентскогоПриложения(ВариантИнтерфейсаКлиентскогоПриложения.РабочееМесто);
ОткрытьФорму("Отчет.НужныйОтчет.Форма");
КонецЕсли;
Этот способ удобен тем, что один и тот же пользователь может заходить как в обычном режиме, так и в режиме «одного отчета», просто используя разные ярлыки.
Для достижения наилучшего результата мы рекомендуем комбинировать методы. Во-первых, создайте максимально узкую роль. Во-вторых, используйте режим Рабочее место для полной блокировки интерфейса. В-третьих, программно открывайте нужную форму при старте. Такой подход обеспечит стабильную работу системы и исключит ошибки пользователя, связанные с лишними действиями в программе 1C:Бухгалтерия.