Как исправить ошибку «Недопустимое имя панели» в 1С:Предприятие 8.3 при создании пользователя

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

При переходе на новые версии платформы 1С:Предприятие 8.3 или при переносе данных в новые информационные базы пользователи часто сталкиваются с неприятной ошибкой: «Недопустимое имя панели». Чаще всего это происходит в момент записи нового пользователя, если установлена галочка «Вход в программу разрешен». Эта проблема характерна для современных конфигураций на базе управляемых форм, таких как 1С:Комплексная автоматизация 2, 1С:ERP, Управление торговлей 11 и Управление нашей фирмой.

В этой статье мы подробно разберем, почему возникает данная ошибка, как она связана с архитектурой интерфейса «Такси» и какие существуют способы её решения — от простых административных действий до программной правки кода через расширения.

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

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

  1. Панель функций текущего раздела.
  2. Панель избранного.
  3. Панель истории.

Ошибка возникает тогда, когда конфигурация (её программный код) пытается обратиться к стационарному имени ПанельИнструментов, которое новая платформа больше не поддерживает. Если ваша конфигурация (например, старый релиз КА 2.4) еще «не знает» о разделении панелей, а платформа уже обновлена до версии 8.3.15, 8.3.18 или выше, возникает конфликт имен.

Решение 1: Обновление конфигурации (Рекомендуемый способ)

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

Разработчики 1С уже исправили это поведение в выпусках Комплексной автоматизации начиная с версии 2.4.13 и выше. При обновлении программный код модулей будет приведен в соответствие с требованиями актуальной платформы. Если у вас есть возможность провести обновление — это решит проблему раз и навсегда для всех пользователей.

Решение 2: Исправление кода через расширение конфигурации

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

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

Создадим новое расширение и добавим в него процедуру со следующим кодом:


&Вместо("ПриУстановкеНачальныхНастроек")
Процедура ПриУстановкеНачальныхНастроек2(НачальныеНастройки) Экспорт
    
    НачальныеНастройки.НастройкиИнтерфейса.ОтображениеПанелиРазделов = ОтображениеПанелиРазделов.КартинкаИТекст;
    НачальныеНастройки.НастройкиКлиента.ВариантИнтерфейсаКлиентскогоПриложения = ВариантИнтерфейсаКлиентскогоПриложения.Такси;
    
    Если НачальныеНастройки.НастройкиТакси <> Неопределено Тогда
        НастройкиСостава = Новый НастройкиСоставаИнтерфейсаКлиентскогоПриложения;
        ГруппаЛево = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
        
        // В следующей строке и была ошибка: удаляем или комментируем обращение к "ПанельИнструментов"
        // ГруппаЛево.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов"));
        
        // Вместо нее добавляем стандартные панели, которые понимает новая платформа
        ГруппаЛево.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельРазделов"));
        ГруппаЛево.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых"));
        
        НастройкиСостава.Лево.Добавить(ГруппаЛево);
        НачальныеНастройки.НастройкиТакси.УстановитьСостав(НастройкиСостава);
    КонецЕсли;
    
КонецПроцедуры

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

Решение 3: Очистка пользовательских настроек (Административный метод)

Иногда ошибка проявляется выборочно или сохраняется из-за «мусора» в системных таблицах базы данных. Посмотрим, как можно решить проблему административными инструментами без написания кода.

Попробуем выполнить очистку настроек интерфейса для проблемных пользователей:

  1. Зайдем в раздел Администрирование — Настройки пользователей и прав.
  2. Перейдем по ссылке Очистка настроек.
  3. В открывшемся окне выберем нужного пользователя (или всех, если проблема массовая).
  4. В списке настроек выделим пункты Настройки рабочего стола и Настройки интерфейса.
  5. Нажмем кнопку Очистить.

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

Решение 4: Техническое обслуживание базы данных

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

Попробуем выполнить следующие действия:

  1. Выгрузите информационную базу в файл (.dt).
  2. Создайте новую пустую базу в списке баз.
  3. Загрузите выгруженный файл (.dt) в новую базу.

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

Дополнительные рекомендации по режиму совместимости

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

Резюме: Если вы столкнулись с ошибкой «Недопустимое имя панели», в первую очередь проверьте возможность обновления конфигурации. Если обновление невозможно, используйте расширение для корректировки общего модуля ПользователиПереопределяемый, заменив устаревшую ПанельИнструментов на актуальные ПанельРазделов и ПанельОткрытых.

← На главную