При разработке в расширениях 1С программисты часто сталкиваются с ситуацией: Общая команда создана, группа командной панели назначена, тип параметра указан правильно, но в режиме «1С:Предприятие» кнопка упорно не появляется на форме. Эта проблема может возникать как на формах документов, так и в списках, даже если в конфигураторе команда визуально отображается в интерфейсе расширяемой формы.
В этой статье мы подробно разберем, почему так происходит, и пройдем по шагам все этапы настройки — от базовых свойств метаданных до тонкостей управления правами доступа и кэширования интерфейса.
Первым делом проанализируем настройки самой Общей команды в расширении. Одной из самых распространенных ошибок является несоответствие типов метаданных. Если вы создаете параметризуемую команду, платформа должна четко понимать, к каким объектам она относится. Для автоматической проверки структуры метаданных и связей можно использовать конфигурацию для анализа состава расширений и поиска ошибок.
Рассмотрим по шагам проверку базовых свойств:
Тип параметра команды выбран именно тот объект (например, ДокументСсылка.ТабельУчетаРабочегоВремени), на форме которого вы ожидаете увидеть команду.Режим использования параметра. У него есть два значения: Одиночный и Множественный.
Множественный.Одиночный. Неправильный выбор режима иногда препятствует автоматическому отображению команды в стандартных группах (например, в группе «Важное»).Даже если команда настроена идеально, она останется невидимой, если у пользователя нет прав на ее Просмотр. В расширениях механизм прав работает специфическим образом. Разберем, как правильно предоставить доступ.
Рассмотрим ситуацию: в основной конфигурации у пользователя есть полные права, но команда в расширении — это новый объект метаданных. По умолчанию права на новые объекты расширения не назначаются существующим ролям.
Вариант А: Добавление существующей роли в расширение.
Выясним, какую роль занимает ваш пользователь (например, ПолныеПрава или АдминистраторСистемы). Добавим эту роль в расширение (правой кнопкой на роли в дереве основной конфигурации — «Добавить в расширение»). После этого:
Общей команды.Просмотр.Вариант Б: Использование основной роли расширения.
В свойствах самого расширения (корень дерева метаданных расширения) есть свойство Основная роль. Если создать в расширении новую роль, включить в нее право на просмотр команды и назначить ее основной, это упростит задачу. Однако не забудьте в режиме «1С:Предприятие» в списке расширений установить флаг «Использовать основные роли для всех пользователей». Без этой галочки права из расширения могут не подтянуться к сеансу пользователя.
Иногда автоматическое размещение команд дает сбой, особенно если форма в основной конфигурации имеет сложную структуру или отключенное автозаполнение командной панели. Проанализируем, как принудительно вывести команду.
Если команда не появилась автоматически в группе Командная панель формы.Важное, выполним следующие действия:
Видимость. Если флаг снят, установим его принудительно.Командная панель формы.Дополнительно.Важно: Проверьте свойство формы Автозаполнение у командной панели. Если оно выключено (флажок снят), то никакие новые общие команды не появятся на форме автоматически. В этом случае вам придется вручную перетаскивать команду из раздела глобальных команд в дерево элементов формы.
Существует ряд менее очевидных причин, которые мы сейчас разберем. Они связаны с логикой работы платформы 1С:Предприятие.
1. Функциональные опции. Проанализируем свойства общей команды. Если в свойстве Функциональные опции указана какая-либо опция, команда будет скрыта до тех пор, пока эта опция не будет включена в настройках системы. Даже если вы не назначали опцию в расширении, она могла наследоваться или быть ошибочно выбрана.
2. Свойство «Изменяет данные». Посмотрим на флаг Изменяет данные в свойствах команды. Если он установлен, а вы открываете форму объекта, который закрыт для редактирования (например, документ в закрытом периоде или помечен на удаление), платформа может автоматически скрыть команду, так как считает, что выполнение действия невозможно.
3. Кэш метаданных и версия расширения. Платформа 1С активно кэширует интерфейс. Чтобы исключить влияние старого кэша, выполним следующие действия:
/ClearCache.4. Пользовательские настройки формы. Выясним, не вносил ли пользователь ранее изменения в форму (через «Еще» — «Изменить форму»). Если пользователь когда-то сохранил настройки интерфейса этой формы, новые элементы из расширения могут попасть в список скрытых. Попробуйте нажать «Установить стандартные настройки» в меню «Изменить форму» в режиме пользователя. Для централизованного сброса и анализа сохраненных интерфейсов можно применить обработку для просмотра и очистки хранилища настроек пользователей.
Если вы хотите убедиться, что команда вообще доступна в контексте, можно попробовать вызвать обработчик команды программно для теста, но обычно для общих команд это сводится к описанию процедуры в модуле команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// ПараметрКоманды — это ссылка на наш документ
ПоказатьОповещениеПользователя("Команда вызвана для: " + ПараметрКоманды);
КонецПроцедуры
Если этот код срабатывает при ручном добавлении кнопки, значит, проблема исключительно в настройках видимости и прав в командном интерфейсе платформы.
Подводя итог, скажем: чаще всего проблема кроется в отсутствии прав (ролей) в расширении или в том, что объект-параметр не добавлен в состав расширения. Проверьте эти два пункта в первую очередь, и в 90% случаев ваша команда появится на форме.