Как исправить ошибку «Требуется обновить шаблон на актуальную версию» в 1С:Бухгалтерия

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе в типовых конфигурациях, таких как 1С:Бухгалтерия предприятия 3.0, построенных на базе Библиотеки стандартных подсистем (БСП), программисты и администраторы часто сталкиваются с ошибкой ограничения доступа. Текст ошибки обычно выглядит так: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 17 шаблона ограничения доступа ПоЗначениям. Рассмотрим подробно, почему возникает эта ситуация и как её эффективно устранить.

Причины возникновения ошибки на техническом уровне

Проанализируем архитектуру механизма RLS (Record Level Security). В современных версиях БСП логика ограничения доступа на уровне записей постоянно совершенствуется. Шаблоны ограничений, такие как ПоЗначениям, ПоЗначениямРасширенный или ПоОбъектам, имеют свои версии. Когда происходит обновление конфигурации, ядро БСП ожидает, что во всех ролях текст этих шаблонов будет соответствовать актуальному эталону.

Выясним причину конфликта: версия 17 шаблона ПоЗначениям считается устаревшей в современных релизах (начиная с БСП 3.1.5 и выше). В новых версиях (18, 19 и далее) оптимизирована производительность запросов и изменены алгоритмы обработки пустых ссылок. Если система обнаруживает в метаданных текст старого шаблона, парсер RLS выдает синтаксическую ошибку, так как конструкция старого шаблона более не поддерживается ядром системы.

Способ 1: Обновление расширений конфигурации

Как показывает практика, в большинстве случаев проблема кроется не в основной конфигурации, а в подключенных расширениях. Если в расширение была заимствована роль или объект с установленным RLS из старой версии базы, то при обновлении основной конфигурации текст шаблона в расширении автоматически не меняется. Система «видит» конфликт версий между основной базой и расширением.

Разберем порядок действий для исправления:

  1. Откроем список расширений в конфигураторе.
  2. Проверим наличие расширений, затрагивающих права доступа (например, расширение «Кладовщик» или кастомные наборы прав).
  3. Если используется стороннее расширение, проверим наличие обновлений от разработчика. Зачастую установка новой версии расширения, адаптированной под актуальный релиз БП, полностью снимает проблему.
  4. Если расширение ваше, необходимо зайти в роли расширения, найти шаблоны ограничений и вручную заменить текст устаревшего шаблона на текст из аналогичной роли основной конфигурации.

Способ 2: Глобальный поиск и ручное обновление шаблонов

Если обновление расширений не помогло или роли были изменены непосредственно в основной конфигурации, применим метод глобального поиска. Этот способ позволяет точечно выявить проблемные места.

Проделаем следующие шаги:

  1. В конфигураторе вызовем окно глобального поиска (Ctrl + Shift + F).
  2. В строке поиска введем текст: ПоЗначениям17 (или номер версии, указанный в вашей ошибке).
  3. В области поиска выберем «Конфигурация» и «Расширения конфигурации».
  4. Проанализируем результаты. Поиск выдаст список ролей, в которых используется устаревшая конструкция.
  5. Откроем роль из списка, перейдем на закладку Шаблоны ограничений.
  6. Скопируем текст актуального шаблона из типовой роли (например, ПолныеПрава или ЧтениеБухгалтерскихОтчетов) и заменим им текст в проблемной роли. Важно убедиться, что имя шаблона и его параметры совпадают.

Способ 3: Программное обновление вспомогательных данных БСП

Иногда текст шаблонов в метаданных корректен, но ошибка сохраняется из-за «зависших» данных в системных регистрах сведений, которые хранят параметры доступа. В этом случае нам поможет выполнение служебных процедур БСП.

Запустим базу в режиме «1С:Предприятие» и выполним следующий код через консоль кода или внешнюю обработку:


// Выполняем обновление вспомогательных данных системы доступа
УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации();

// В некоторых случаях полезно также запустить полное обновление прав
УправлениеДоступом.ОбновитьПараметрыОграниченияДоступа();

После выполнения этого кода рекомендуется дождаться завершения регламентного задания Обновление прав доступа в разделе «Обслуживание» — «Управление доступом». Для точечного обновления прав без ожидания завершения общего задания пригодится обработка для точечного пересчета прав доступа пользователей.

Способ 4: Использование «Инструментов разработчика БСП»

Для массового исправления подобных ошибок в составе официальных инструментов разработчика БСП существует специальная обработка. Рассмотрим её применение:

Найдем в дистрибутиве БСП обработку АвтоматическоеОбновлениеШаблоновОграниченияДоступа.epf. Она предназначена для автоматического сканирования всех ролей конфигурации и расширений. Программа сравнивает тексты шаблонов с эталонными и предлагает обновить их одним нажатием кнопки. Это самый безопасный и быстрый способ, если у вас много кастомных ролей.

Способ 5: Исправление последствий некорректного обновления (если роли на замке)

Если ошибка возникает в абсолютно типовой конфигурации, где все роли находятся на поддержке («на замке»), это явный признак того, что при последнем обновлении через сравнение-объединение не были применены изменения в текстах шаблонов ограничений.

Посмотрим, как это исправить:

  1. Выполним резервное копирование базы.
  2. В конфигураторе выберем пункт меню Конфигурация — Сравнить, объединить с конфигурацией из файла.
  3. Выберем файл .cf текущего актуального релиза.
  4. В дереве сравнения снимем все галочки.
  5. Нажмем «Действия» — «Отметить по подсистемам файла» и выберем только те роли, которые упоминаются в ошибке.
  6. Убедимся, что в настройках сравнения (шестеренка) стоит режим «Заменять объекты».
  7. Выполним объединение и обновим конфигурацию базы данных (F7).

Дополнительные рекомендации

Если после всех манипуляций ошибка Синтаксическая ошибка ":" сохраняется, проанализируем состояние кэша конфигурации. Выполним следующие действия:

Важный момент: всегда проверяйте наличие записей в регистре сведений ПараметрыОграниченияДоступа. Если регистр пуст или содержит неактуальные записи, система будет выдавать ошибки RLS даже при корректных шаблонах в конфигураторе.

← На главную