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

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

При обновлении типовых конфигураций (например, 1С:Бухгалтерия 3.0, 1С:ERP или 1С:Управление торговлей 11) программисты часто сталкиваются с ситуацией, когда пользователи с ограниченными правами не могут войти в систему. Платформа выдает загадочное сообщение: Синтаксическая ошибка ":" и далее текст о необходимости обновить шаблон ограничения доступа. В этой статье мы подробно разберем, почему возникает эта ошибка и как ее быстро устранить.

Разберем причину возникновения ошибки

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

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

Рассмотрим, как выглядит этот фрагмент в тексте роли:


#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ПоЗначениямРасширенный17,") #Тогда
    Ошибка: Требуется обновить шаблон на актуальную версию...
#Иначе

Если условие Не СтрСодержит выполняется, платформа пытается выполнить текст, начинающийся со слова Ошибка:, что и приводит к синтаксической ошибке из-за двоеточия.

Способ 1: Ручное обновление шаблона в роли (рекомендуемый)

Самый правильный способ — обновить текст шаблона в вашей кастомной роли, приведя его в соответствие с новой версией поставщика. Выполним следующие шаги:

  1. Откроем Конфигуратор и найдем типовую роль, которая гарантированно обновляется поставщиком. Обычно это роль ИзменениеУчастниковГруппДоступа или ПолныеПрава.
  2. Перейдем на вкладку «Шаблоны ограничений» этой роли.
  3. Найдем в списке нужный шаблон (например, ПоЗначениямРасширенный) и откроем его текст.
  4. Скопируем все содержимое этого шаблона (Ctrl+A, Ctrl+C).
  5. Теперь найдем нашу проблемную пользовательскую роль (в примере из темы это роль Кладовщик).
  6. Перейдем в ее шаблоны ограничений, выберем тот же шаблон и заменим его текст на скопированный из типовой роли.
  7. Важно: Проверьте также тексты ограничений на самих объектах (справочниках, документах) внутри роли. Иногда требуется просто перевыбрать шаблон в конструкторе ограничений, чтобы обновились параметры вызова.

Способ 2: Массовый поиск проблемных ролей

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

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

Для продвинутых разработчиков существует еще более быстрый способ — выгрузка конфигурации в файлы. Выгрузив метаданные в XML, вы сможете с помощью любого текстового редактора (например, VS Code) выполнить массовую замену текста старого шаблона на новый во всех файлах ролей сразу. После этого файлы загружаются обратно в конфигурацию.

Способ 3: Пересоздание роли

Если роль была создана простым копированием без внесения сложных ручных правок в RLS, иногда проще удалить ее и создать заново на основе актуальной типовой роли. Это гарантирует, что все шаблоны и их версии будут актуальными. Однако будьте осторожны: если вы добавляли специфические условия (например, ограничение по конкретным складам, как в сообщении форума), их придется переносить вручную.

Почему не всегда помогает обработка «Обновление вспомогательных данных»?

Многие технические специалисты советуют запустить обработку ОбновлениеВспомогательныхДанных (из состава БСП) или запустить базу с параметром ЗапуститьОбновлениеИнформационнойБазы. Посмотрим на этот процесс критически:

Данная обработка обновляет данные в регистрах сведений и справочниках (например, справочник «Идентификаторы объектов метаданных» или регистры прав доступа). Но она не может изменить программный код или метаданные роли в Конфигураторе. Поскольку текст RLS — это часть метаданных конфигурации, исправить его можно только в режиме Конфигуратора путем изменения самой роли.

Рекомендации по предотвращению проблемы

Чтобы при следующих обновлениях не тратить время на исправление подобных ошибок, придерживайтесь следующих правил разработки:

  1. Минимизируйте копирование ролей: Вместо создания полной копии типовой роли старайтесь использовать механизм профилей групп доступа. Если вам нужно ограничить доступ по складам, в типовых конфигурациях это часто настраивается через «Виды доступа» без изменения кода ролей.
  2. Дополнительные роли: Если типовых прав недостаточно, создавайте микро-роли, которые добавляют только нужные права, и назначайте их пользователю в дополнение к типовым.
  3. Префиксы: Всегда добавляйте префикс (например, _ИТ_) к созданным вами ролям. Это позволит мгновенно отфильтровать их при поиске и обновлении после очередного релиза конфигурации.
  4. Использование расширений: Выносите свои роли в расширения конфигурации. Это не избавит от необходимости обновлять шаблоны, но сделает процесс управления изменениями более прозрачным.

Подведем итог: ошибка с текстом Требуется обновить шаблон на актуальную версию — это защитный механизм 1С, предотвращающий работу с некорректными правами. Решается она путем актуализации текста шаблонов RLS в Конфигураторе, что требует внимания к деталям и понимания принципов работы БСП.

← На главную