При обновлении типовых конфигураций (например, 1С:Бухгалтерия 3.0, 1С:ERP или 1С:Управление торговлей 11) программисты часто сталкиваются с ситуацией, когда пользователи с ограниченными правами не могут войти в систему. Платформа выдает загадочное сообщение: Синтаксическая ошибка ":" и далее текст о необходимости обновить шаблон ограничения доступа. В этой статье мы подробно разберем, почему возникает эта ошибка и как ее быстро устранить.
Давайте проанализируем ситуацию. Ошибка выглядит как синтаксическая, но на самом деле это намеренное поведение системы, заложенное разработчиками Библиотеки стандартных подсистем (БСП). В современных конфигурациях 1С используется механизм RLS (Record Level Security) — ограничение доступа на уровне записей. Для упрощения написания условий ограничения используются шаблоны, такие как ПоЗначениям или ПоЗначениямРасширенный.
Внутри текста ограничения каждой роли прописана проверка версии этого шаблона. Если вы создали собственную роль путем копирования типовой, то в ее тексте «зашита» определенная версия шаблона (например, 17). После обновления конфигурации БСП повышает требования и ожидает, например, версию 18. Обнаружив несоответствие, система через директивы препроцессора подставляет в запрос заведомо ошибочный символ (двоеточие), что вызывает остановку работы. Это делается для того, чтобы пользователь не работал с данными под управлением устаревших и, возможно, небезопасных или некорректных правил доступа.
Рассмотрим, как выглядит этот фрагмент в тексте роли:
#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ПоЗначениямРасширенный17,") #Тогда
Ошибка: Требуется обновить шаблон на актуальную версию...
#Иначе
Если условие Не СтрСодержит выполняется, платформа пытается выполнить текст, начинающийся со слова Ошибка:, что и приводит к синтаксической ошибке из-за двоеточия.
Самый правильный способ — обновить текст шаблона в вашей кастомной роли, приведя его в соответствие с новой версией поставщика. Выполним следующие шаги:
ИзменениеУчастниковГруппДоступа или ПолныеПрава.ПоЗначениямРасширенный) и откроем его текст.Кладовщик).Если в вашей базе десятки или сотни добавленных ролей, проверять каждую вручную неэффективно. Проанализируем ситуацию: нам нужно найти все места, где используется устаревшая конструкция. Для этого можно воспользоваться глобальным поиском.
ПоЗначениямРасширенный.Для продвинутых разработчиков существует еще более быстрый способ — выгрузка конфигурации в файлы. Выгрузив метаданные в XML, вы сможете с помощью любого текстового редактора (например, VS Code) выполнить массовую замену текста старого шаблона на новый во всех файлах ролей сразу. После этого файлы загружаются обратно в конфигурацию.
Если роль была создана простым копированием без внесения сложных ручных правок в RLS, иногда проще удалить ее и создать заново на основе актуальной типовой роли. Это гарантирует, что все шаблоны и их версии будут актуальными. Однако будьте осторожны: если вы добавляли специфические условия (например, ограничение по конкретным складам, как в сообщении форума), их придется переносить вручную.
Многие технические специалисты советуют запустить обработку ОбновлениеВспомогательныхДанных (из состава БСП) или запустить базу с параметром ЗапуститьОбновлениеИнформационнойБазы. Посмотрим на этот процесс критически:
Данная обработка обновляет данные в регистрах сведений и справочниках (например, справочник «Идентификаторы объектов метаданных» или регистры прав доступа). Но она не может изменить программный код или метаданные роли в Конфигураторе. Поскольку текст RLS — это часть метаданных конфигурации, исправить его можно только в режиме Конфигуратора путем изменения самой роли.
Чтобы при следующих обновлениях не тратить время на исправление подобных ошибок, придерживайтесь следующих правил разработки:
_ИТ_) к созданным вами ролям. Это позволит мгновенно отфильтровать их при поиске и обновлении после очередного релиза конфигурации.Подведем итог: ошибка с текстом Требуется обновить шаблон на актуальную версию — это защитный механизм 1С, предотвращающий работу с некорректными правами. Решается она путем актуализации текста шаблонов RLS в Конфигураторе, что требует внимания к деталям и понимания принципов работы БСП.