Перейти до змісту

Ролі

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

Де шукати: Модулі → Система → Регістри → Ролі

Реєстр живе в модулі Система. Як роль поєднується з доступом за замовчуванням і компаніями — у статті «Права доступу»; тут — як ролі влаштовані всередині і як зібрати свою.

Розбір на прикладі: роль приймальника

Роль приймальника: заборонений фон і точкові дозволи

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

Прочитаймо кадр згори:

  • рядок 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), «для» (об'єкт; порожньо = всі), «доступ» (код із таблиці вище)
Вкладка «Доступ до полів» Точкові права на окремі поля реєстрів: «Не бачити» (значення не віддає й сервер; звітів і друку така роль не отримує), лише перегляд, редагування чи створення