Роли пользователей в 1С после доработок и обновлений: что делать администратору
Содержание
Обновлять роли в 1С нужно там, где конфигурация хранит права. В типовых БП 3.0, ЗУП 3.1, УТ 11 роли меняют через профили групп доступа в режиме 1С:Предприятие (Администрирование → Настройки пользователей и прав). В самописных и старых конфигурациях без такой подсистемы — в конфигураторе, в карточке пользователя.
Перепутаете место — права «откатятся» сами: выданная в конфигураторе роль в типовой базе пропадёт при ближайшем пересчёте групп доступа. Ниже порядок действий для обоих случаев, для обновления конфигурации, переноса и массовой выдачи.
Когда роли пользователей в 1С требуют обновления
Роль — объект метаданных. В ней записано, что можно делать с документами, справочниками, отчётами. Пользователь получает набор ролей, и платформа проверяет права по этому набору.
Обновлять роли приходится в пяти ситуациях:
- 🔄 Обновили конфигурацию. В новом релизе появились роли под новые документы или сервисы, а у пользователей их нет.
- 🛠 Программист добавил свою роль в конфигурацию или расширение. Её надо раздать нужным людям.
- 👤 Сотрудник сменил должность. Бухгалтер стал главным бухгалтером, кладовщик — менеджером.
- 🚫 Появилась ошибка «Недостаточно прав» при открытии формы, проведении или печати.
- 📦 Переносите настройки из тестовой базы в рабочую или в новую базу.
Есть важная деталь платформы. Набор ролей читается при входе в программу. Изменили права — пользователь увидит их только после перезапуска сеанса. Пока он сидит в базе, работает со старым набором.
Два способа обновить роли в 1С и чем они отличаются
Способ выбирают не по вкусу, а по устройству конфигурации.
| Способ | Где | Когда применять | Риск |
|---|---|---|---|
| Профили и группы доступа | 1С:Предприятие, Администрирование → Настройки пользователей и прав | Типовые конфигурации на БСП: БП 3.0, ЗУП 3.1, УТ 11, КА 2, ERP, УНФ | Минимальный: изменения видны и журналируются |
| Карточка пользователя в конфигураторе | Администрирование → Пользователи, вкладка «Прочие» | Самописные конфигурации без подсистемы управления доступом | В типовой базе изменения будут перезаписаны |
Программно, через ПользователиИнформационнойБазы | Внешняя обработка | Массовая выдача роли в базе без БСП | Ошибка в коде затронет всех пользователей |
Как понять, есть ли в базе подсистема управления доступом? Откройте раздел Администрирование. Если в нём есть пункт «Настройки пользователей и прав», а внутри — «Профили групп доступа», база построена на БСП. Значит, роли меняете только там.
Конфигуратор в типовой базе всё равно пригодится: в нём видно, какие роли реально записаны пользователю. Это удобно для диагностики, но не для правки.
Пошагово: обновить роли пользователя в конфигураторе
Этот путь — для конфигураций без профилей групп доступа. Нужны права администратора информационной базы.
- Запустите базу в режиме «Конфигуратор».
- Откройте
Администрирование → Пользователи. - Двойным щелчком откройте нужного пользователя.
- Перейдите на вкладку «Прочие». Слева — список всех ролей конфигурации.
- Отметьте нужные роли флажками, лишние снимите.
- Нажмите «ОК».
- Попросите пользователя закрыть 1С и зайти заново.
Если вы добавили роль программно или через поставку и её нет в списке — значит, конфигурация базы не обновлена. Выполните Конфигурация → Обновить конфигурацию базы данных (F7), затем повторите шаги 2–6.
Монопольный режим для правки списка пользователей не нужен. А вот обновление конфигурации базы данных со структурными изменениями потребует, чтобы остальные пользователи вышли.
Не снимайте у себя роль с правом «Администрирование» (обычно «Полные права» или «Администратор системы»), если вы единственный администратор. Вернуть её будет некому, кроме того, у кого есть доступ к резервной копии.
Пошагово: роли в типовой конфигурации через профили
Здесь логика другая. Роли выдают не человеку, а профилю. Профиль подключают к группе доступа, в группу добавляют пользователей.
- Откройте
Администрирование → Настройки пользователей и прав → Профили групп доступа. - Найдите профиль, который нужно изменить.
- Поставляемый профиль (из коробки) менять нельзя — роли в нём закрыты для правки. Скопируйте его командой копирования и работайте с копией.
- В копии на вкладке ролей отметьте нужные роли. Для поиска удобно включить отображение по синонимам и воспользоваться поиском в списке.
- Запишите профиль.
- Откройте
Группы доступа, создайте группу на основе нового профиля и добавьте в неё участников. - Уберите пользователей из старой группы, если права должны сузиться.
- Пользователи перезапускают сеанс.
При записи профиля или группы программа сама пересчитывает роли всех участников. Отдельной кнопки «обновить роли» нажимать не надо.
Что происходит с ролями при обновлении конфигурации 1С
Типовое обновление — через Конфигурация → Поддержка → Обновить конфигурацию или файлом .cfu — меняет метаданные, в том числе роли. Что дальше, зависит от типа профиля.
Поставляемые профили обновляются автоматически. При первом запуске после обновления выполняются обработчики обновления, и состав ролей в поставляемых профилях приводится к описанию из нового релиза. Все, кто входит в группы с этими профилями, получают новые роли без вашего участия.
Собственные профили (те самые копии) обновлением не трогаются. Новые роли в них не появятся. Это главная причина жалоб «после обновления пропал доступ к новому разделу».
Порядок после каждого обновления:
- Дождитесь, пока завершится обработка данных после обновления. Пока она идёт, часть прав может работать неполно.
- Откройте описание изменений релиза. Найдите упоминания новых разделов и сервисов.
- Откройте свои профили и сравните их с поставляемым профилем-родителем. Добавьте роли, которые появились в поставляемом.
- Проверьте права под тестовым пользователем с этим профилем.
Ведите короткий реестр: какой свой профиль скопирован с какого поставляемого и что в нём изменено. Через три релиза без такого списка уже не вспомнить, зачем снимали ту или иную роль.
Роли в расширениях
Если программист положил новую роль в расширение, она появится в списке ролей профиля после подключения расширения. Расширения поддерживаются с платформы 8.3.6. Загрузка файла .cfe и обновление конфигурации базы данных для расширения — отдельные шаги, второй забывают чаще всего.
После этого роль из расширения добавляют в свой профиль так же, как обычную.
Перенос ролей и настроек прав между базами
«Перенести роли» на практике означает одно из трёх. Разберём каждое отдельно.
Перенос самой роли (метаданных)
Роль — часть конфигурации. Переносят её вместе с конфигурацией:
- 📂 сохранить конфигурацию
в файл
.cfи сравнить-объединить с целевой базой, отметив только нужные роли; - 🧩 вынести роль в расширение и подключить расширение во второй базе;
- 🗄 при единой конфигурации — просто обновить целевую базу из хранилища или файла.
При сравнении-объединении проверяйте не только саму роль, но и объекты, на которые она ссылается. Если в целевой базе нет нужного документа, роль в нём не заработает.
Перенос пользователей с их ролями
Список пользователей хранится внутри базы. Выгрузка .dt (Администрирование → Выгрузить информационную базу) переносит его целиком, вместе с паролями и ролями. Но .dt заменяет всю целевую базу — для переноса только пользователей он не подходит.
Перенос профилей групп доступа
В типовых конфигурациях профили и группы доступа — это данные, а не метаданные. Их переносят выгрузкой данных в XML: универсальной обработкой выгрузки-загрузки XML, отметив справочники профилей и групп доступа. Конфигурации обеих баз должны совпадать по релизу, иначе загрузка даст ошибки.
Загрузка XML в рабочую базу перезаписывает объекты с совпадающими ссылками. Перед загрузкой сделайте резервную копию и прогоните её сначала на копии базы.
Скрипт массовой выдачи роли и пакетное обновление
Когда пользователей 80, кликать по каждому долго. Для баз без БСП роли меняют внешней обработкой. Код выполняется на сервере, от пользователя с административными правами.
Пример: всем, у кого есть роль «СтараяРоль», добавить роль «НоваяРоль».
&НаСервере
Процедура ВыдатьРольНаСервере()
РольИсточник = Метаданные.Роли.Найти("СтараяРоль");
РольНовая = Метаданные.Роли.Найти("НоваяРоль");
Если РольИсточник = Неопределено Или РольНовая = Неопределено Тогда
Сообщить("Роль не найдена в конфигурации");
Возврат;
КонецЕсли;
Счетчик = 0;
Для Каждого Пользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Если Пользователь.Роли.Содержит(РольИсточник)
И Не Пользователь.Роли.Содержит(РольНовая) Тогда
Пользователь.Роли.Добавить(РольНовая);
Пользователь.Записать();
Счетчик = Счетчик + 1;
КонецЕсли;
КонецЦикла;
Сообщить(СтрШаблон("Роль добавлена пользователям: %1", Формат(Счетчик, "ЧН=0; ЧГ=0")));
КонецПроцедуры
Для удаления роли используйте Пользователь.Роли.Удалить(РольИсточник) в том же цикле. Сначала запустите обработку на копии базы.
В типовой конфигурации этот код бесполезен: подсистема управления доступом пересчитает роли по группам и уберёт выданное вручную. Там массовые изменения делают через профиль — один профиль меняет права всем участникам групп сразу.
Обновление конфигурации и ролей в пакетном режиме
Если роли пришли с новой версией конфигурации, обновление можно запустить из командной строки ночью:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Trade" /N "Admin" /P "pass" /LoadCfg "D:\upd\trade.cf" /UpdateDBCfg /Out "D:\upd\log.txt"
Для серверной базы вместо /F указывают /S "server\base". Номер платформы в пути замените на свой. Ключ /LoadCfg полностью заменяет конфигурацию из файла — для конфигурации на поддержке с доработками он не подходит, там обновляют через поддержку.
/UpdateDBCfg при структурных изменениях требует монопольного доступа. Запускайте вне рабочего времени и предупредите пользователей: открытые сеансы придётся завершить.
Ошибки, из-за которых обновление ролей не срабатывает
Роль выдана в конфигураторе, а через день исчезла. База на БСП. При записи любой группы доступа или профиля роли участников пересчитываются, ручные изменения стираются. Решение — добавить роль в профиль.
После обновления релиза у части пользователей нет нового раздела. Они в группе со своим профилем-копией. Поставляемые профили обновились, копия — нет. Добавьте новые роли в копию.
Роль добавлена, но ошибка «Недостаточно прав» осталась. Возможны три причины:
- 🔁 пользователь не перезапускал сеанс;
- 🔒 права ограничены не ролью, а на уровне записей: по организациям, складам, видам документов. Проверьте вкладку ограничений в группе доступа;
- 🧩 операции нужна ещё одна роль, например на чтение связанного справочника. Сообщение об ошибке обычно называет объект — по нему и ищите роль.
У пользователя «Полные права», но часть команд недоступна. Часто это не роли, а функциональные опции: раздел выключен в настройках программы (Администрирование → Настройки программы → Функциональность в БП 3.0). Ролями это не лечится.
Удалили роль из конфигурации — пользователи не могут войти. Если у пользователя после удаления не осталось ни одной роли, войти в программу он не сможет. Перед удалением роли переназначьте её владельцев.