Справочник контура XML к пункту «Права на объекты в ролях расширения». Отвечает на один вопрос: отсутствие прав — это упущение разработчика или устройство платформы. Без такого разделения проверка прав генерирует находки на файлах, которые нельзя исправить: права запрошенного вида не существует, и «починка» сводится к поиску несуществующей настройки.
Основа — сплошной разбор файлов прав типовой конфигурации (порядка 1100 ролей) и ролей
расширений в реальном внедрении. Проверено на выгрузке формата Rights версии 2.20.
| Тип | Что означает пустой набор прав |
|---|---|
Перечисление (Enum) |
прав не существует: доступность значений следует из прав на объекты, где перечисление используется |
РегламентноеЗадание (ScheduledJob) |
настраиваемых прав доступа у объекта нет |
При регистрации нового перечисления или регламентного задания права в роль не добавляются. Это не пропуск, а отсутствие такой сущности в модели прав.
Обратное тоже верно: запись <object><name>Enum.Имя</name>… в файле прав — сама по себе
дефект, конфигуратор её отвергнет. role-validate.py называет это прямо
(type 'Enum' has no object rights), а не «неизвестным типом»: вторая формулировка читается
как пробел валидатора и провоцирует искать способ выдать право, которого нет.
У HTTP- и веб-сервисов право Использование (Use) выдаётся не сервису целиком, а точке
вызова — методу шаблона URL либо операции:
HTTPService.<ИмяСервиса>.URLTemplate.<ИмяШаблона>.Method.<ИмяМетода>
WebService.<ИмяСервиса>.Operation.<ИмяОперации>
Имена шаблона и метода берутся из XML самого сервиса, а не придумываются: в файле прав должен стоять тот же идентификатор, что объявлен в определении сервиса.
Путь с двумя и более точками разбирается валидатором как вложенный объект, а вложенным
объектам данных свойственны View/Edit. Для точек вызова сервисов это неверно — там Use.
До версии, добавившей ENDPOINT_RIGHTS, валидатор выдавал предупреждение на единственно
правильной форме записи.
Роль расширения может не иметь Ext/Rights.xml вообще — это валидное состояние пустой роли
(ноль прав на любые объекты), а не потерянный файл. При первом добавлении прав файл создаётся
с обязательной шапкой:
<Rights xmlns="http://v8.1c.ru/8.2/roles" ... version="2.20">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>…</object>
</Rights>Три флага верхнего уровня обязательны; валидатор проверяет их наличие отдельно от прав.
Сужение контр-сигналами не отменяет исходное правило контура: собственный объект расширения без явно выданных прав невидим пользователю, и ни сборка, ни валидаторы этого не покажут. Находкой остаётся отсутствие прав у справочника, документа, регистра, обработки, отчёта, команды — то есть у типов, где права существуют и требуются. Пустой набор у перечисления и регламентного задания находкой не является никогда.