Почему 1С перестает запускаться с расширениями после перехода на платформу x64 и как это исправить?

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

Переход на 64-битную версию платформы «1С:Предприятие» часто сопровождается не только приростом производительности, но и неожиданными техническими сложностями. Одной из самых распространенных проблем является блокировка входа в систему при наличии активных расширений. Пользователи сталкиваются с ошибкой, сообщающей о некорректном составе ролей: «В конфигурации в свойстве ОсновныеРоли не указаны стандартные роли АдминистраторСистемы и ПолныеПрава или указаны лишние роли». Разберем подробно, почему это происходит и как вернуть работоспособность базы.

Выясняем причину возникновения ошибки

Важно понимать, что сама по себе архитектура x64 не является источником ошибки. Проблема кроется в версии платформы (обычно 8.3.15 и выше), на которую переходит пользователь при миграции на x64. В современных выпусках 1С:Предприятие и обновленных редакциях Библиотеки стандартных подсистем (БСП) существенно ужесточились проверки безопасности и состава метаданных.

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

Проанализируем механизм «самосоздающейся» роли

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

Многие разработчики пытаются просто удалить эту роль из дерева метаданных расширения, но сталкиваются с системным сообщением: «Объект не может быть удален, так как на него есть ссылки». Это происходит из-за циклической зависимости: роль назначена основной в свойствах расширения, а значит, она используется системой.

Пошаговая инструкция по решению проблемы

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

  1. Откроем конфигуратор и перейдем в меню Конфигурация — Расширения конфигурации.
  2. Выберем нужное расширение и нажмем кнопку «Открыть конфигурацию» (соответствующего расширения).
  3. В дереве объектов расширения выделим самый верхний элемент (корень расширения) и нажмем Alt + Enter или правую кнопку мыши — Свойства.
  4. В окне свойств найдем пункт «Основные роли». Нажмем на кнопку выбора (три точки).
  5. В открывшемся списке мы увидим установленную галочку напротив созданной роли. Снимем эту галочку и нажмем «ОК». Теперь свойство «Основные роли» должно стать пустым.
  6. Теперь перейдем в ветку метаданных Общие — Роли внутри расширения.
  7. Найдем ту самую роль, которая мешала запуску, и нажмем Del. Поскольку мы предварительно убрали ссылку на нее в свойствах корня, платформа позволит удалить объект беспрепятственно.
  8. Повторим эти действия для всех подключенных расширений в базе.

Особенности работы с пустыми расширениями

Проанализируем ситуацию, когда расширение не несет в себе никакой логики, связанной с правами доступа. В этом случае идеальным состоянием метаданных будет полное отсутствие каких-либо объектов в ветке Роли и пустое поле Основные роли в свойствах.

Если же ваше расширение все-таки должно добавлять новые права (например, для доступа к новым регистрам или документам, созданным в этом же расширении), используйте следующий алгоритм, чтобы избежать ошибок БСП:


// Пример логики настройки прав в расширении
1. Создаем роль в расширении (например, "ДобавлениеДанныхРасширения").
2. НЕ указываем ее в "Основных ролях" расширения.
3. В режиме "1С:Предприятие" заходим в раздел "Администрирование" -> "Настройки пользователей и прав".
4. Создаем новый "Профиль групп доступа".
5. В списке ролей этого профиля находим нашу роль из расширения и отмечаем ее.
6. Назначаем профиль пользователю.

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

Взаимосвязь с режимом совместимости

Выясним еще одну важную техническую деталь. Ошибка часто проявляется, когда Режим совместимости расширения отличается от режима совместимости основной конфигурации. При переходе на новую платформу (особенно при обновлении с версий типа 8.3.12 до 8.3.20) платформа начинает иначе интерпретировать метаданные расширений.

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

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

Посмотрим на настройки, которые помогут избежать подобных проблем в будущем. В окне свойств расширения обратите внимание на флаг «Использовать основные роли конфигурации». В большинстве случаев для корректной работы расширений в типовых решениях (ERP, Комплексная автоматизация, Управление торговлей) этот флаг должен быть установлен. Это сигнализирует системе о том, что расширение не пытается подменить собой базовую систему прав, а лишь дополняет её.

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

← На главную