При активной разработке или обновлении конфигураций 1С на базе Библиотеки стандартных подсистем (БСП) программисты часто сталкиваются с системной ошибкой: «Используется устаревшая версия шаблона ограничения доступа...» или в сокращенном варианте — «Устарел шаблон у Роли». Примечательно, что под полными правами эта ошибка себя никак не проявляет, а у обычных пользователей полностью блокирует работу с определенными объектами метаданных.
В этой статье мы подробно разберем, почему возникает данная неполадка, как она связана с механизмами безопасности БСП и какие шаги необходимо предпринять для ее окончательного и корректного устранения.
Данная проблема напрямую связана с функционированием подсистемы УправлениеДоступом в БСП и использованием механизма ограничения доступа на уровне записей (RLS). В современных версиях БСП реализовано два режима работы ограничений прав:
Проанализируем классическую ситуацию: разработчик добавляет новый тип данных (например, ссылку на ПланОбмена или новый документ) в один из ключевых определяемых типов БСП — ВладелецЗначенийКлючейДоступа или ЗначениеДоступа. Как только новый объект метаданных попадает в этот контур, БСП автоматически включает его в расчет универсального RLS.
Система начинает сканировать все роли, которые предоставляют обычным пользователям права на этот объект. Если в этих ролях прописаны старые шаблоны ограничений (или шаблоны отсутствуют вовсе, хотя объект уже защищен через RLS), платформа генерирует исключение о несоответствии шаблона роли.
Под полными правами ошибка отсутствует по простой причине: для администраторов платформенные ограничения RLS не применяются, и БСП не выполняет валидацию шаблонов ролей.
---
Если проблему нужно решить оперативно, чтобы пользователи могли продолжить работу, можно временно переключить режим ограничения доступа в стандартный формат. Проанализируем, как это сделать:
1С:Предприятие под учетной записью администратора.Важно: Перевод базы в стандартный режим — это временная мера. На крупных базах данных это может привести к значительному снижению общей производительности системы при проведении документов и формировании отчетов. Рекомендуем использовать этот способ только для локализации ошибки или во время подготовки полноценного исправления.
---
Самый простой и надежный способ исправить шаблоны во всех ролях конфигурации — использовать специализированный инструмент, поставляемый разработчиками БСП.
В каталоге шаблонов установленной БСП (обычно это папка ExtFiles в дистрибутиве библиотеки) находится внешний отчет ПроверкаВнедренияБСП.erf. Посмотрим, как применить его для исправления ошибок:
1С:Предприятие под полными правами.ПроверкаВнедренияБСП.erf через меню Файл — Открыть.---
Если автоматическое исправление по какой-то причине недоступно, выполним обновление шаблонов в ролях вручную. Выясним последовательность действий:
Конфигуратор.ИзменениеУчастниковГруппДоступа. Скопируем тексты шаблонов (таких как ДляОбъекта, ПоЗначениям) из нее и вставим в нашу проблемную роль.ПланОбмена) и проверим ограничения на уровне записей для прав Чтение и Изменение. Текст ограничения для производительного режима должен иметь следующий вид:
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
// Здесь может оставаться старое ограничение для стандартного режима (если применимо)
#КонецЕсли
---
Поскольку наш объект (например, ПланОбмена) теперь включен в контур ограничения прав, в его модуле менеджера обязательно должна быть описана соответствующая процедура. Проанализируем, какой код необходимо добавить:
ДляВызоваИзДругихПодсистем экспортную процедуру ПриЗаполненииОграниченияДоступа.
// Описывает правила ограничения доступа к объекту.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
// В простейшем случае разрешаем чтение и изменение, если значение разрешено в группах доступа
Ограничение.Текст = "РазрешитьЧтениеИзменение ГДЕ ЗначениеРазрешено(Ссылка)";
КонецПроцедуры
Если требуется более сложная логика (например, ограничение видимости записей по конкретным организациям или складам), тело данной процедуры усложняется в соответствии со стандартами разработки БСП.
---
Для того чтобы система корректно инициализировала настройки прав для нашего нового объекта при запуске, его необходимо зарегистрировать в списке объектов с ограничением прав.
УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииСписковСОграничениемДоступа(Списки) Экспорт
// Добавляем наш план обмена в список контролируемых объектов
Списки.Вставить(Метаданные.ПланыОбмена.ИмяВашегоПланаОбмена, Истина);
КонецПроцедуры
---
После внесения любых изменений в конфигурацию, связанных с RLS и БСП, нам необходимо инициировать процедуру обновления вспомогательных данных в пользовательском режиме:
1С:Предприятие с параметром командной строки /C ЗапуститьОбновлениеИнформационнойБазы. Это принудительно запустит обработчики обновления БСП, которые пересчитают кэш метаданных прав доступа.Выполнение этих шагов позволит полностью устранить ошибку «Устарел шаблон у Роли», сохранив при этом все преимущества высокопроизводительного универсального режима работы RLS.