Перейти к содержанию

Роли

Роль — это должность, описанная языком прав: что человеку на этой должности видно, что можно менять, а чего он не увидит вовсе. Роль создают один раз и назначают всем, кто работает одинаково: пять кассиров — одна роль КАСА.

Где искать: Модули → Система → Регистры → Роли

Регистр живёт в модуле Система. Как роль сочетается с доступом по умолчанию и компаниями — в статье «Права доступа»; здесь — как роли устроены внутри и как собрать свою.

Разбор на примере: роль приёмщика

Роль приёмщика: запрещённый фон и точечные разрешения

У роли два поля шапки — «Код» (им роль вписывают в карточку пользователя) и «Комментарий» человеческим языком. Вся суть — в строках вкладки «Общий доступ»: каждая строка говорит, о чём она («тип»), о ком именно («для») и что разрешено («доступ»).

Прочитаем кадр сверху:

  • строка 1: module с пустым «для» и доступом denyAll — все модули запрещены. Пустая колонка «для» означает «все объекты этого типа»;
  • строки 2–6: пять модулей — Задачи, Заказы поставщикам и клиентам, Продажи, Склад — разрешены полностью. Точная строка сильнее общей: запрещённый фон пробит именно для этих пяти;
  • строка 7: register с пустым «для» — и все регистры тоже запрещены;
  • строка 8: «Открытые счета-фактуры поставщика» (OpenVendorInvoices) — readAndList: приёмщик видит, за что фирма ещё должна, но исправить там ничего не может;
  • дальше — рабочие регистры приёмщика (поступления, возвраты, платежи, товары, справочники) с полным доступом.

Это главный паттерн построения роли: сначала запретить всё, потом разрешить нужное. Такая роль самодостаточна — ей безразлично, какой «Доступ по умолчанию» стоит в карточке человека, потому что роль отвечает на каждый вопрос сама.

Коды в колонке «доступ» одинаковы во всей системе:

Код Что разрешает
allowAll всё: видеть, создавать, менять, удалять
readAndList видеть список и открывать записи, ничего не меняя (службу не открывает)
showOnly только видеть пункт (службу не открывает)
runOnly только запускать (задачи и службы)
denyAll ничего

Обратный паттерн: наблюдатель

Роль «только просмотр»: всё читается, ничто не меняется

Роль наоборот — для аудитора или наблюдателя: модули, регистры и настройки везде readAndList, отчёты allowAll (запуск отчёта ничего не меняет в данных), службы обслуживания и задачи — denyAll. Десять строк — и человек видит всю систему, не трогая ничего.

Тонкости, которые стоит знать

Что видит человек с правом «только чтение». Карточку существующей записи он открывает с замкнутыми полями, а «Сохранить» и «Отмена» в ней неактивны (в окнах настроек их нет вовсе). Кнопка «Новый» в списке остаётся — при попытке создать запись система откажет. Если пользователь жалуется «кнопка есть, а не работает» — это не сбой, это права.

Служба обслуживания либо видна и запускается, либо спрятана. Право на службу одно-единственное: отдельного «видеть, но не запускать» нет. Видна и запускается она только с кодом, который даёт запуск, — allowAll или runOnly; readAndList, showOnly и фон «Только чтение» её прячут.

Отдельное действие решает строка action, а без строки — его умолчание. Отдельные действия — вроде «снять ОК с документа» — решает строка action самого действия, а если её нет — строка action с пустым «для»; «Доступ по умолчанию» из карточки пользователя их не открывает. Когда нет обеих строк, действует умолчание действия: большинство запрещены, но четыре открыты — «Возможность изменять продавца в POS», «Возможность открывать менеджер процессов», «Возможность открывать менеджер ресурсов» и «Показывать отчет по всем бонусам». Запретить такое действие — его строкой или строкой с пустым «для» с denyAll. Некоторые действия разрешает только собственная строка, а строка с пустым «для» их не открывает: снятие ОК со складских документов, «Возможность снимать 'ОК' с договоров аренды», «Возможность изменять «Историю коррекций записей операций»», «Возможность изменять открытые счета-фактуры, предоплаты и истории платежей», «Возможность изменять историю товара», «Может отправлять платежи в банк». Не включает она и ограничений «Запретить утверждение, если себестоимость выше» и «Отправить сообщение, если себестоимость выше».

Две службы открывает только их собственная строка. «Каскадное удаление компании» и «Удалить базу» необратимо стирают данные, поэтому строка maintenance с пустым «для» и «Доступ по умолчанию» карточки пользователя их не открывают: нужна строка maintenance именно этой службы с allowAll или runOnly (с 24.10.2026). Человек без роли их не запустит.

Вкладка «Доступ к полям» — более тонкая настройка внутри регистра: отдельное поле для роли можно сделать «Только просмотр (для поля)», «Только редактирование (для поля)», «Только создание (для поля)» или «Не видеть (для поля)». Первые три проверяет окно; исключение — флажок проведения или утверждения: если в праве поля нет редактирования («Только просмотр (для поля)», «Только создание (для поля)»), роль не проведёт документ и не снимет проведение ни окном, ни через API или импорт.

«Не видеть (для поля)» скрывает значение и на сервере. Значение такого поля роль не получает ни в карточке, ни в списке, ни в экспорте или API; поиск строкой идёт только по видимым полям, а поле-матрица скрывается вместе со строками. Так же в кассе и в Telegram-боте: по скрытому полю касса не ищет — кассир, у роли которого штрихкод товара «Не видеть», не найдёт товар сканированием (только по видимому коду или названию), а бот не показывает скрытого в задачах и табелях. Код клиента роли кассира не скрывайте: клиента касса ставит в чек по коду, и без него клиента найдёт по названию, но выбрать не сможет. Отчёт или печатная форма могут показать скрытое значение в любой колонке, поэтому роль, у которой есть хоть одно поле «Не видеть», отчётов и печати не получает: в ответ — «Отчёт недоступен вашей роли…» или «Печать недоступна вашей роли…». Пока это касается каждого отчёта и каждой формы. Спрятать себестоимость и закупочные цены — правом «Показывать себестоимость» (ниже): оно отчётов не закрывает, лишь убирает из них себестоимость.

«Показывать себестоимость» закрывает и колонки, и данные. Строка action с действием «Показывать себестоимость» (так оно называется в списке выбора; в самой строке виден его код — viewCost) решает не только, рисовать ли колонки себестоимости в окнах документов: без этого права сервер убирает поля себестоимости, закупочных цен и валовой прибыли из ответа — окну, API, экспорту и истории изменений. Поиск строкой в списках и в кассе для такого человека идёт только по видимым полям, как и для «Не видеть (для поля)»: по себестоимости он не находит ничего, а строку, набранную из двух полей сразу (код и название вместе), не находит тоже — ищите по одному полю.

Производство, проекты и закупка себестоимость показывают — и без этого права. В окнах «Тех. карта», «Производство», «Производственная операция», «Бюджет проекта» и «Переоценка склада» себестоимость товара подставляется в строку сама, как только товар выбран, и её видит каждый, у кого есть доступ к этим окнам. Бюджет проекта, созданный из предложения, переносит в свои поля его себестоимость и прибыль. В «Заказе поставщику» и «Поступлении» введённый код товара подставляет в строку цену из карточки товара — её поле «Себестоимость в базовой валюте»: человек без права увидит в новой строке то, что карточка товара от него скрывает, даже не сохраняя документ. Документы закупки показывают свои цены и себестоимость каждому, у кого есть доступ к окну. Так же работает и SERP: право защищает карточку товара и продажные документы, а закупку, производство и проекты ограничивают доступом к самим окнам. Кому себестоимость видеть нельзя, тому не давайте доступа к этим регистрам.

Изменение роли действует сразу. Права роли сервер проверяет на каждое действие, поэтому, как только правка сохранена, все носители роли работают уже с новыми правами — без повторного входа; сеансы при этом не закрываются.

Код роли не меняется. Им роль вписана в карточки пользователей, поэтому после сохранения код изменить нельзя — система откажет: «Код изменять нельзя». Нужен другой код — скопируйте роль, впишите копию пользователям, а старую удалите.

Роль без строк — пустое место. Если строк нет, всё решает «Доступ по умолчанию» из карточки каждого пользователя. Новая роль пустой не бывает: при первом сохранении она сама получает четыре строки (если таких ещё нет) — module System и register Links и Attachments с allowAll, setting ReportingPeriod с readAndList. Роль, на которой «сидят» люди (в карточке или на вкладке «Компании»), удалить не получится — «Вы не можете удалить роль с существующими пользователями». Если же роль в карточке названа, а в реестре её нет (запись убрана мимо окна, импортом или в базе), человек не получает ничего: всё для него запрещено, а не открыто фоном карточки.

Порядок работы

1. Начать с копии

«Дубликат» на похожей роли — и править разницу. С нуля начинайте с пяти запрещающих строк (module, register, setting, report, maintenance — все с пустым «для» и denyAll), а затем добавляйте разрешения. Четыре строки, которые роль получает при создании (System, Links, Attachments, ReportingPeriod), — точные, поэтому запретный фон их не закрывает.

2. Разрешить нужное

Модули — чтобы появились пункты меню (только пункты: данные закрытого модуля закрывают строки его регистров, отчётов и служб — поэтому и пять запрещающих строк в начале); регистры — рабочие документы и справочники; отчёты — какие нужны должности. Помните про readAndList для «видеть, не трогая».

3. Назначить и проверить

Вписать код роли в карточки пользователей — и войти под одним из них: те ли пункты меню, те ли кнопки, те ли отчёты.

Частые ситуации

«У меня пропал пункт меню». Кто-то правил роль. Проверьте строку про этот модуль или регистр и колонку «доступ»; помните, что точная строка перекрывает общую.

Нужно, чтобы видел службу, но не запускал. Не получится — право одно. Закрывайте службу и выполняйте её другой ролью.

Один человек — разные обязанности в разных фирмах. Роль можно назначить отдельно для каждой компании на вкладке «Компании» карточки пользователя — см. «Права доступа».

В системе появился новый регистр — кто его увидит? Роли с разрешённым фоном (allowAll на все регистры) увидят сразу; роли, построенные «от запрета», — нет, пока не добавить строку. Это аргумент строить строгие роли от запрета: новое в системе не открывается людям само собой.

Справочник полей

Поле Описание
Код Имя роли; именно оно вписывается в карточку пользователя
Комментарий Человеческое название должности
Вкладка «Общий доступ» Строки прав: «тип» (module / register / setting / report / maintenance / action), «для» (объект; пусто = все), «доступ» (код из таблицы выше)
Вкладка «Доступ к полям» Точечные права на отдельные поля регистров: «Не видеть» (значение не отдаёт и сервер; отчётов и печати такая роль не получает), только просмотр, редактирование или создание