Права доступа
Кто что может в системе, решают три вещи в карточке пользователя: роль, доступ по умолчанию и список компаний. Всё это настраивается в двух регистрах модуля Система — «Пользователи» и «Роли». Эта статья о том, как три настройки работают вместе.
Как система решает «можно или нельзя»
Каждый раз, когда пользователь открывает регистр, отчёт или пункт обслуживания, система задаёт два вопроса по очереди:
- Что говорит роль? Среди строк роли ищется строка про этот конкретный объект; если такой нет — строка «про все объекты этого типа» (с пустой колонкой «для»).
- Роль молчит? Тогда отвечает переключатель «Доступ по умолчанию» из карточки пользователя: «Полная» — можно всё, «Только чтение» — смотреть можно, менять нельзя, «Запрещено» — нельзя ничего.
Роль — точечный инструмент, доступ по умолчанию — фон для всего, что в роли не упомянуто. Поэтому пользователь без роли с полным доступом может всё, пользователь без роли с «Запрещено» — ничего, а обычных сотрудников настраивают ролью поверх строгого фона.
Единственное исключение — задачи: отдельные действия вроде «снять ОК с документа». Фон на них не действует: о чём роль молчит, решает сама задача. Большинство без строки в роли закрыты («Снимать ОК с документов», «Показывать себестоимость»), несколько открыты («Возможность открывать менеджер процессов», «Возможность открывать менеджер ресурсов», «Показывать отчет по всем бонусам», «Возможность изменять продавца в POS») — закрыть такую задачу можно только строкой с denyAll: её собственной или строкой «обо всех задачах».
Карточка пользователя

На кадре — кассир. Вкладка «Настройки доступа» держит оба рычага: поле «Роль» (здесь КАСА) и переключатель «Доступ по умолчанию». Рядом пароль с подтверждением и отдел — он обязателен для работы с кассой.
Над вкладками три отметки, и путать их не стоит:
- «Запретить вход» — человек не может войти, но остаётся «живым» в справочниках: его по-прежнему можно указывать ответственным в документах. Подходит для временной блокировки.
- «Закрыто» — архив: сотрудник уволился. Вход закрыт, вся история его документов сохранена.
- «Кассир» — отметка для работы POS, к правам отношения не имеет.
Обе блокирующие отметки действуют мгновенно: если человек был в системе, все его сеансы — в окнах и в кассе — будут закрыты.
С блокировкой связана и лицензия: лимит пользователей считается только по «живым» — не закрытым и не запрещённым. Лимит проверяется не при создании пользователя, а при создании любой другой записи: когда «живых» больше, чем разрешает лицензия, система отвечает «Лимит пользователей исчерпан! Разрешено — …, использовано — ….» и советует закрыть пользователей в модуле «Система», реестр «Пользователи». Никого удалять не нужно — закройте лишних, и место освободится.
Роль

Роль — это список строк из трёх колонок:
- «тип» — о чём строка:
module(модуль),register(регистр),setting(настройка),report(отчёт),maintenance(служба обслуживания),action(задача); - «для» — конкретный объект; пустая колонка означает «все объекты этого типа»;
- «доступ» — один из готовых кодов доступа.
Коды доступа одинаковы во всей системе:
| Код | Что разрешает |
|---|---|
allowAll |
всё: видеть, создавать, менять, удалять |
readAndList |
видеть список и открывать записи, ничего не меняя (службу не открывает) |
showOnly |
только видеть пункт (службу не открывает) |
runOnly |
только запускать (задачи и службы) |
denyAll |
ничего |
Точная строка сильнее строки «про все»: если регистрам в целом дано readAndList, а регистру «Вложения» — allowAll, вложения можно будет и добавлять. А о чём роль молчит совсем — решает фон из карточки пользователя.
Строка module решает только меню. Закрытый модуль исчезает из меню, но его регистров, отчётов и служб не закрывает: о чём роль молчит, то открывает фон из карточки — по ссылке из окна другого модуля, через API и MCP. Чтобы закрыть сами данные, нужны строки register, report и maintenance: проще всего — строки «про все» с denyAll и точечные разрешения поверх них, как в роли приёмщика в статье «Роли».
На кадре — роль «только просмотр», которой сняты кадры этой документации: модули, регистры и настройки везде readAndList, отчёты allowAll (запуск отчёта ничего не меняет в данных), службы и задачи denyAll. Человек с такой ролью видит всё и не может тронуть ничего.
Про службы обслуживания одна тонкость: служба либо доступна, либо нет. Её видно в меню и можно запустить, только когда код даёт запуск — allowAll или runOnly. readAndList, showOnly и фон «Только чтение» службы не открывают: службы меняют данные, а «видеть, но не запускать» для службы нет.
Вкладка «Доступ к полям» — точечная настройка внутри регистра: отдельное поле можно сделать для роли неизменяемым — «Только просмотр (для поля)», «Только редактирование (для поля)» или «Только создание (для поля)»; эти ограничения проверяет окно (исключение — флажок проведения или утверждения: его проверяет и сервер). «Не видеть (для поля)» скрывает значение и на сервере, но роль, у которой есть хоть одно такое поле, не получает ни одного отчёта и печати. Поэтому себестоимость и закупочные цены от менеджеров по продажам прячет не вкладка, а право «Показывать себестоимость» — подробности в статье «Роли».
Компании

Когда фирм в базе несколько, вкладка «Компании» в карточке пользователя решает три вещи:
- в какие компании человек вообще вхож — когда список заполнен, фирмы вне его для него закрыты: ни входа, ни переключения;
- «По умолчанию» — в какой компании человек оказывается сразу после входа;
- отдельные «Роль» и «Уровень доступа» для каждой фирмы. Главбух может быть полноправным в одной компании и только наблюдателем в соседней. Пустые колонки означают «действуют роль и доступ с первой вкладки».
Переключаясь между компаниями, система на лету подставляет роль и уровень той фирмы, в которую пользователь перешёл. Если роль или уровень фирмы прочитать не удалось (сбой базы), вход отказывает «Вход запрещен: не удалось определить вашу роль в компании», а переключение — ошибкой: права с первой вкладки вместо фирменных система не подставляет.
Пустая вкладка — тоже настройка. Пользователь без единой строки здесь попадает в первую активную компанию по коду (не по названию), и переключиться ему некуда: в списке компаний только она. Поэтому новая фирма, чей код по алфавиту стоит раньше существующих, забирает к себе всех пользователей с пустой вкладкой — с их следующего входа.
На кадре — служебный пользователь, который снимает кадры для этой документации: он вхож во все три демонстрационные фирмы с ролью «только просмотр» в каждой.
Типовые настройки
Фирм в базе несколько. Каждому новому пользователю заполните вкладку «Компании»: строку на каждую фирму, где он работает, и «По умолчанию» на основной. Без этого он окажется в первой фирме по коду — и решит, что его вчерашние документы пропали.
Новый сотрудник, которому пока только показывают систему. Доступ по умолчанию «Только чтение», роль можно оставить пустой. Регистры и настройки он открывает только для просмотра и запускает отчёты, а службы обслуживания и задачи ему закрыты.
Кассир. Роль кассы, отметка «Кассир», заполненный отдел. Касса работает, лишнего не видно.
Аудитор или наблюдатель. Роль как на кадре выше: везде readAndList, отчёты allowAll, службы и задачи denyAll.
Менеджер, которому не нужно видеть закупочные цены. Обычная рабочая роль без права «Показывать себестоимость». Без строки этого действия право закрыто и так, но строка action с пустым «для» и allowAll или runOnly его открывает; надёжнее — отдельная строка action «Показывать себестоимость» с denyAll.
Сотрудник уволился. Отметка «Закрыто» в карточке. История документов остаётся, вход невозможен, место лицензии освобождается. Удалять пользователя не нужно.
Временно заблокировать вход. «Запретить вход»: человек не войдёт, но в документах его по-прежнему можно указывать.
Как убедиться, что права настроены правильно
- Самый надёжный способ — войти под этим пользователем и посмотреть его глазами: какие модули в меню, какие регистры открываются, что говорят кнопки.
- Другая роль или другой «Доступ по умолчанию» в карточке, новый пароль, а на вкладке «Компании» — другая роль или «Уровень доступа», добавленная или убранная компания закрывают все сеансы человека сразу — следующий вход уже с новыми правами. Отметка «По умолчанию» на вкладке «Компании» сеансов не закрывает: она лишь решает, в какую компанию приведёт следующий вход. Правка самой роли действует без повторного входа: права роли сервер проверяет на каждое действие.
- Жалоба «у меня пропал пункт меню» — это почти всегда роль: проверьте, есть ли строка про этот модуль или регистр и что стоит в колонке «доступ» (как устроено меню — Рабочий стол: окна, поиск и закладки).
- «Лимит пользователей исчерпан» — не про права: лицензия считает живых пользователей. Закройте тех, кто уже не работает.