При внедрении доработок через механизм расширений в типовых конфигурациях (например, 1С:Управление торговлей 11) разработчики часто сталкиваются с ситуацией, когда добавленная команда или кнопка обработки табличной части появляется у одних пользователей сразу после перезапуска, а у других — отсутствует. Проанализируем ситуацию и выясним причину, почему расширение подключается избирательно, а также разберем по шагам варианты устранения этой проблемы.
Если расширение успешно подключается в информационной базе, но его функционал доступен не всем сотрудникам, дело не в режиме совместимости (при критическом расхождении режимов совместимости расширение не запустилось бы вовсе). Рассмотрим подробнее основные факторы, из-за которых элементы расширения могут скрываться у отдельных пользователей:
rphost.SystemSettingsStorage. В результате новая кнопка, визуально добавленная в конструкторе формы расширения, не отображается поверх сохраненного пользовательского интерфейса.В первую очередь разберем технические действия со стороны администрирования. В клиент-серверном режиме работы базы разные пользователи могут попадать на разгруженные или не обновившие метаданные процессы rphost.
rphost для полного обновления метаданных в памяти сервера.AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8).Выясним причину возможных ограничений в режиме «1С:Предприятие». Перейдем в раздел Администрирование -> Печатные формы, отчеты и обработки -> Расширения и проверим свойства установленного расширения:
Если кнопка команды добавлена визуально в редакторе формы расширения, но скрыта из-за персонального кэша формы пользователя, выполним сброс настроек. Посмотрим на два способа решения:
Способ 1. Через интерфейс пользователя: В проблемном документе перейдем в Еще -> Установить стандартные настройки. Вся форма вернется к первоначальному виду, и добавленная кнопка появится на экране.
Способ 2. Через администрирование настроек: В меню Администрирование -> Настройки пользователей и прав -> Управление настройками пользователей выберем проблемного сотрудника и очистим настройки конкретной формы документа.
Чтобы гарантировать появление кнопки командной панели у абсолютно всех пользователей (независимо от сохраненных ими настроек формы), рекомендуется отказаться от чисто визуального размещения элементов в расширении и вызывать их программно.
Рассмотрим пример кода в модуле формы расширения с использованием аннотации &НаСервереПосле для обработчика ПриСозданииНаСервере:
&НаСервереПосле("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Проверим, создана ли уже команда
ИмяКоманды = "Расш1_ОбработатьТабличнуюЧасть";
Если Команды.Найти(ИмяКоманды) = Неопределено Тогда
НоваяКоманда = Команды.Добавить(ИмяКоманды);
НоваяКоманда.Заголовок = "Обработать ТЧ";
НоваяКоманда.Действие = "Расш1_ОбработатьТабличнуюЧасть";
КонецЕсли;
// Добавляем кнопку на командную панель табличной части
ИмяКнопки = "ТоварыРасш1_ОбработатьТабличнуюЧасть";
Если Элементы.Найти(ИмяКнопки) = Неопределено Тогда
РодительЭлемента = Элементы.ТоварыКоманднаяПанель;
НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), РодительЭлемента);
НоваяКнопка.ИмяКоманды = ИмяКоманды;
КонецЕсли;
КонецПроцедуры
Элементы, созданные программно при открытии формы, выводятся в интерфейс всегда, преодолевая ограничения сохраненных настроек SystemSettingsStorage.
Если задача заключается исключительно в заполнении или обработке табличной части документа в типовой конфигурации (УТ 11, КА, ERP), проанализируем использование стандартного механизма БСП. Вместо расширения конфигурации можно создать внешнюю обработку с видом ЗаполнениеТЧ (Вид = ДополнительнаяОбработка).
Такая обработка подключается через раздел Администрирование -> Дополнительные отчеты и обработки. Механизм БСП автоматически выводит команду в меню «Заполнить» табличной части документа для всех пользователей с соответствующими правами, полностью исключая проблемы с кэшированием форм и заимствованием метаданных.