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

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

При переходе на новые релизы платформы 1С:Предприятие (начиная с 8.3.21.1775, 8.3.22.1923 и выше) многие разработчики столкнулись с неприятной ситуацией: команды, добавленные через расширения, внезапно исчезают из панели навигации разделов или меню «Создать на основании». Эта проблема проявляется даже у пользователей с полными правами, что ставит в тупик администраторов систем.

В рамках данной статьи мы подробно разберем причины такого поведения платформы и рассмотрим пошаговые инструкции по восстановлению видимости команд. Мы проанализируем влияние прав доступа, механизмов БСП и настроек самих расширений.

Причина 1: Усиление контроля прав на «Просмотр»

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

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

  1. Откроем расширение в конфигураторе.
  2. Найдем заимствованный объект или созданный в расширении объект, команда которого пропала.
  3. Проверим все роли, добавленные в расширение. Убедимся, что для данного объекта в колонке прав отмечен флажок «Просмотр» (View).
  4. Важно понимать: если у пользователя есть роль из основной конфигурации с правом на чтение, но в расширении добавлена роль без права на просмотр, команда может не отобразиться. Проанализируем права в совокупности.

Причина 2: Свойство расширения «Использовать основные роли»

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

Разберем алгоритм действий:

  1. Выделим корневой узел дерева расширения.
  2. В палитре свойств найдем параметр «Использовать основные роли».
  3. Установим это свойство в значение «Истина». Это позволит платформе корректно объединять права основной конфигурации и роли расширения.
  4. Дополнительно в расширении рекомендуется создать собственную роль (например, ДополнительныеПраваРасширения), включить в неё права на все новые объекты и команды, и назначить её пользователям.

Причина 3: Особенности работы БСП с полными правами

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

Выясним причину: механизм БСП считает, что пользователю с полными правами и так всё доступно. Однако платформа для объектов расширения требует явного указания прав в ролях этого же расширения. Чтобы решить эту проблему, проанализируем два пути:

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

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


// В общем модуле УправлениеДоступомСлужебный
Процедура ОбновитьРолиПользователей(Пользователь) Экспорт
    // ... существующий код
    // Добавим логику обхода всех расширений и принудительного 
    // добавления их ролей, если это необходимо
    Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл
        // Логика добавления ролей расширения пользователю
    КонецЦикла;
КонецПроцедуры

Причина 4: Влияние функциональных опций

Проанализируем ситуацию, когда объект заимствован из основной конфигурации. В основной конфигурации этот объект может быть привязан к Функциональной опции (ФО). Если в базе эта опция выключена, то команда объекта будет скрыта везде, включая расширение.

Посмотрим на пример: если документ ПеремещениеТоваров привязан к опции ИспользоватьСкладскойУчет, и эта опция в константах установлена в Ложь, добавление команды в навигацию через расширение не поможет — платформа скроет её по правилам функциональных опций.

Причина 5: Назначение расширения и кэш интерфейса

Платформы версий 8.3.21+ стали строже относиться к типу расширения. Посмотрим на свойство «Назначение» расширения:

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

  1. Зайдем в меню «Администрирование» — «Настройки пользователей и прав».
  2. Перейдем в «Очистка настроек».
  3. Выберем конкретного пользователя и удалим только «Настройки командного интерфейса».

Причина 6: Иерархия подсистем в расширении

Существует известная ошибка платформы, когда команды пропадают, если подсистема заимствована некорректно. Рассмотрим надежный способ вывода команд:

  1. Создадим в расширении свою собственную подсистему (например, Мой_Склад).
  2. Включим эту новую подсистему в состав заимствованной основной подсистемы.
  3. Все новые команды добавим именно в свою подсистему расширения. Это исключает конфликты приоритетов при отрисовке интерфейса платформой.

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

← На главную