При переходе на новые релизы платформы 1С:Предприятие (начиная с 8.3.21.1775, 8.3.22.1923 и выше) многие разработчики столкнулись с неприятной ситуацией: команды, добавленные через расширения, внезапно исчезают из панели навигации разделов или меню «Создать на основании». Эта проблема проявляется даже у пользователей с полными правами, что ставит в тупик администраторов систем.
В рамках данной статьи мы подробно разберем причины такого поведения платформы и рассмотрим пошаговые инструкции по восстановлению видимости команд. Мы проанализируем влияние прав доступа, механизмов БСП и настроек самих расширений.
Одной из наиболее частых причин является изменение логики проверки прав платформой. Ранее для отображения команды в интерфейсе во многих случаях было достаточно права Чтение. В новых версиях платформы ситуация изменилась: теперь для видимости команды объекта (документа, справочника) обязательно требуется наличие права «Просмотр».
Рассмотрим, как это исправить:
В свойствах расширения существует критически важная настройка, которая влияет на то, как права расширения суммируются с правами основной конфигурации. Если команды пропали даже у пользователей с полными правами, нам необходимо проверить именно этот параметр.
Разберем алгоритм действий:
ДополнительныеПраваРасширения), включить в неё права на все новые объекты и команды, и назначить её пользователям.Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), вы можете столкнуться со специфическим поведением модуля управления доступом. Проблема заключается в том, что БСП может не назначать новые роли расширения пользователям, у которых уже есть роль ПолныеПрава в основной конфигурации.
Выясним причину: механизм БСП считает, что пользователю с полными правами и так всё доступно. Однако платформа для объектов расширения требует явного указания прав в ролях этого же расширения. Чтобы решить эту проблему, проанализируем два пути:
Вариант А: Создание роли с аналогичным именем в расширении.
Если в основной конфигурации основная роль называется ПолныеПрава, создадим в расширении роль с точно таким же именем. В этой роли расширения проставим все необходимые права на новые команды и объекты. Платформа автоматически «склеит» эти роли.
Вариант Б: Программная доработка обновления ролей.
Для опытных разработчиков доступен вариант с модификацией кода БСП. Рассмотрим пример доработки процедуры в общих модулях управления доступом, чтобы роли расширений принудительно добавлялись пользователям:
// В общем модуле УправлениеДоступомСлужебный
Процедура ОбновитьРолиПользователей(Пользователь) Экспорт
// ... существующий код
// Добавим логику обхода всех расширений и принудительного
// добавления их ролей, если это необходимо
Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл
// Логика добавления ролей расширения пользователю
КонецЦикла;
КонецПроцедуры
Проанализируем ситуацию, когда объект заимствован из основной конфигурации. В основной конфигурации этот объект может быть привязан к Функциональной опции (ФО). Если в базе эта опция выключена, то команда объекта будет скрыта везде, включая расширение.
Посмотрим на пример: если документ ПеремещениеТоваров привязан к опции ИспользоватьСкладскойУчет, и эта опция в константах установлена в Ложь, добавление команды в навигацию через расширение не поможет — платформа скроет её по правилам функциональных опций.
Платформы версий 8.3.21+ стали строже относиться к типу расширения. Посмотрим на свойство «Назначение» расширения:
Также не стоит забывать о кэшировании настроек интерфейса. Если пользователь ранее вручную настраивал панель разделов («под себя»), новые команды могут не появиться автоматически. Разберем шаги по очистке:
Существует известная ошибка платформы, когда команды пропадают, если подсистема заимствована некорректно. Рассмотрим надежный способ вывода команд:
Мой_Склад).Подводя итог, отметим, что в большинстве случаев проблема решается либо включением права «Просмотр», либо корректной настройкой основных ролей расширения. Совместное использование этих методов гарантирует стабильное отображение вашего функционала в обновленной среде 1С:Предприятие.