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

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

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

Анализ причин проблемы

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

  1. Кэш платформы и сеансов: Динамическое обновление и изменение метаданных расширений может не сразу корректно обрабатываться локальным кэшем платформы на клиентском компьютере или рабочими процессами кластера серверов rphost.
  2. Сохраненные индивидуальные настройки формы: Если пользователь ранее вручную настраивал форму (менял порядок колонок, скрывал или перемещал элементы), платформа сохраняет его персональный вид формы в системном хранилище SystemSettingsStorage. В результате новая кнопка, визуально добавленная в конструкторе формы расширения, не отображается поверх сохраненного пользовательского интерфейса.
  3. Права доступа и ограничения RLS: Для выполнения команд расширения у пользователя должно быть достаточно прав на объекты, к которым обращается программный код. Если у пользователя установлены ограничения прав (например, режим «Только чтение» или RLS на уровне строк), командная панель табличной части документа может отключать пользовательские кнопки.
  4. Настройки безопасности и роль расширения: В параметрах подключенного расширения может быть активна Защита от опасных действий или снята галочка Использовать основные роли для всех пользователей, из-за чего права из расширения не назначаются сеансу автоматически.
  5. Различные версии платформы 1С: Если в компании используются разные релизы платформы на рабочих местах, поведение механизма заимствования форм может отличаться.

Шаг 1. Очистка кэша и перезапуск процессов кластера

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

  1. Завершим сеансы всех пользователей в информационной базе.
  2. Перезапустим службу кластера серверов 1С или перезапустим процессы rphost для полного обновления метаданных в памяти сервера.
  3. При необходимости очистим локальный кэш платформы на проблемных рабочих местах (удалив папки кэша из директорий AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8).

Шаг 2. Настройка прав доступа и параметров безопасности

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

  1. Снимем флаг Защита от опасных действий, если программный код расширения выполняет операции с файловой системой или внешними компонентами.
  2. В конфигураторе в свойствах самого расширения убедимся, что включено свойство Использовать основные роли для всех пользователей. Если в расширении создана отдельная роль, необходимо включить её в соответствующие профили групп доступа БСП.
  3. Проверим наличие у пользователя прав на чтение и изменение объектов, используемых в обработке табличной части.

Шаг 3. Сброс индивидуальных настроек формы у пользователя

Если кнопка команды добавлена визуально в редакторе формы расширения, но скрыта из-за персонального кэша формы пользователя, выполним сброс настроек. Посмотрим на два способа решения:

Способ 1. Через интерфейс пользователя: В проблемном документе перейдем в Еще -> Установить стандартные настройки. Вся форма вернется к первоначальному виду, и добавленная кнопка появится на экране.

Способ 2. Через администрирование настроек: В меню Администрирование -> Настройки пользователей и прав -> Управление настройками пользователей выберем проблемного сотрудника и очистим настройки конкретной формы документа.

Шаг 4. Программное создание элементов формы

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

Рассмотрим пример кода в модуле формы расширения с использованием аннотации &НаСервереПосле для обработчика ПриСозданииНаСервере:


&НаСервереПосле("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Проверим, создана ли уже команда
    ИмяКоманды = "Расш1_ОбработатьТабличнуюЧасть";
    Если Команды.Найти(ИмяКоманды) = Неопределено Тогда
        НоваяКоманда = Команды.Добавить(ИмяКоманды);
        НоваяКоманда.Заголовок = "Обработать ТЧ";
        НоваяКоманда.Действие = "Расш1_ОбработатьТабличнуюЧасть";
    КонецЕсли;
    
    // Добавляем кнопку на командную панель табличной части
    ИмяКнопки = "ТоварыРасш1_ОбработатьТабличнуюЧасть";
    Если Элементы.Найти(ИмяКнопки) = Неопределено Тогда
        РодительЭлемента = Элементы.ТоварыКоманднаяПанель;
        НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), РодительЭлемента);
        НоваяКнопка.ИмяКоманды = ИмяКоманды;
    КонецЕсли;

КонецПроцедуры

Элементы, созданные программно при открытии формы, выводятся в интерфейс всегда, преодолевая ограничения сохраненных настроек SystemSettingsStorage.

Альтернативное решение: Дополнительные обработки БСП

Если задача заключается исключительно в заполнении или обработке табличной части документа в типовой конфигурации (УТ 11, КА, ERP), проанализируем использование стандартного механизма БСП. Вместо расширения конфигурации можно создать внешнюю обработку с видом ЗаполнениеТЧ (Вид = ДополнительнаяОбработка).

Такая обработка подключается через раздел Администрирование -> Дополнительные отчеты и обработки. Механизм БСП автоматически выводит команду в меню «Заполнить» табличной части документа для всех пользователей с соответствующими правами, полностью исключая проблемы с кэшированием форм и заимствованием метаданных.

← На главную