Часто в практике разработчика 1С возникает задача: показать какое-либо сообщение или поздравительную открытку при старте системы абсолютно всем сотрудникам. Разберем ситуацию, с которой можно столкнуться в сложных конфигурациях, таких как 1С:ERP. Допустим, мы создали общую форму с открыткой и планируем открывать ее в событии ПриНачалеРаботыСистемы. В базе работает около 200 пользователей, и встает закономерный вопрос: как проще всего дать им всем права на просмотр этой общей формы или формы обработки? В современных типовых конфигурациях найти одну "базовую" роль, которая жестко назначена всем-всем-всем в конфигураторе, бывает непросто. Проанализируем несколько удобных способов решения этой задачи. Для быстрого определения ролей и профилей, которые уже содержат доступ к нужному объекту, можно использовать отчет для поиска прав доступа пользователей к объектам метаданных.
Рассмотрим классический подход, который часто применяется при внедрении небольших доработок. Мы можем не менять основную конфигурацию, а воспользоваться механизмом расширений.
Этот метод хорош тем, что он абсолютно безопасен для типовой конфигурации, однако при наличии 200 пользователей ручное назначение профилей может показаться трудоемким, если в базе нет единой группы, включающей всех сотрудников. Чтобы новые роли корректно применились к пользователям при изменении профилей, можно использовать методику обновления прав доступа при добавлении ролей в БСП.
Разберем более продвинутый и автоматизированный вариант работы с расширениями, который стал доступен начиная с версии платформы 8.3.14. Платформа предоставляет нам отличный механизм для массовой раздачи прав из расширений.
Что мы делаем:
ИспользоватьОсновныеРолиДляВсехПользователей.В этом случае платформа сама применит данные права ко всем пользователям конфигурации. Нам больше не нужно идти в режим Предприятия и возиться с профилями групп доступа.
Посмотрим на структуру типовых конфигураций. Хоть явной и единственной "роли для всех" может не быть на первый взгляд, конфигурации на базе БСП (Библиотеки стандартных подсистем) имеют набор служебных ролей, без которых запуск клиента в принципе невозможен.
К таким ролям относятся, например, БазовыеПрава или БазовыеПраваБСП. У всех активных пользователей эти права есть по умолчанию. Мы можем просто заимствовать одну из таких ролей в наше расширение и добавить в нее право на просмотр нашей поздравительной общей формы. Таким образом, форма автоматически станет доступна всем пользователям, которые могут войти в систему.
Если мы не хотим добавлять общие формы в метаданные, мы можем оформить наше поздравление в виде внешней обработки. Рассмотрим, как это сделать грамотно:
При таком подходе система сама заботится о выдаче нужных разрешений на запуск внешней обработки для выбранных пользователей.
Выясним причину: а зачем нам вообще отдельная форма? Если задача — просто поздравить сотрудников или вывести уведомление, мы можем обойтись без создания объектов метаданных, а значит, и без настройки прав на них.
Вариант А: Использование метода ПоказатьОповещениеПользователя
Мы можем вывести всплывающее окошко в углу экрана. В него передается текст поздравления и картинка. Метод выполняется программно на клиенте и не требует настройки ролей:
ТекстПоздравления = "С Новым Годом, уважаемые коллеги!";
КартинкаОповещения = БиблиотекаКартинок.НовогодняяЕлка; // пример вашей картинки
ПоказатьОповещениеПользователя("Поздравление", , ТекстПоздравления, КартинкаОповещения);
Вариант Б: Типовой механизм "Информация при запуске"
В современных конфигурациях 1С присутствует встроенный инструмент показа рекламных или информационных окон при входе в программу (обычно мы видим там списки изменений после обновления). Администратор системы может просто загрузить туда свою картинку или HTML-документ со своим текстом. Это делается исключительно штатными средствами в режиме пользователя и полностью снимает необходимость программировать роли, расширения или менять конфигурацию.
Проанализировав все эти методы, мы видим, что в арсенале разработчика есть множество гибких инструментов: от классической работы с ролями в расширениях до использования готовых подсистем БСП и стандартных информационных окон.