При разработке расширений для конфигураций на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда стандартные или добавленные параметризуемые команды (например, популярная команда СвязанныеДокументы) упорно не желают появляться на заимствованной форме. Даже если команда добавлена в расширение, а типы параметров настроены верно, интерфейс в режиме "1С:Предприятие" может оставаться неизменным. В этой статье мы подробно разберем, почему так происходит, и пройдем по шагам процесс восстановления работоспособности командного интерфейса в расширении.
Параметризуемые команды отличаются от обычных тем, что они жестко привязаны к типу данных, который передается в команду в качестве параметра. В случае с командой СвязанныеДокументы параметром обычно выступает ссылка на документ или справочник. Когда мы создаем форму в расширении и устанавливаем в ней основной реквизит (например, ДокументОбъект.ЗаказПокупателя), платформа должна автоматически сопоставить типы и предложить доступные глобальные команды в командном интерфейсе. Если этого не происходит, причина кроется либо в настройках видимости, либо в разрыве связей метаданных между основной конфигурацией и расширением.
Первым делом проверим самое очевидное — настройки видимости в редакторе формы. Часто разработчики ищут команду непосредственно в дереве элементов формы, но для параметризуемых команд существует отдельный механизм управления.
Рассмотрим порядок действий:
Важное или Перейти).Важный нюанс: в расширениях флажки видимости для заимствованных команд могут быть сняты по умолчанию, даже если в основной конфигурации они установлены. Необходимо принудительно установить видимость. Если команды нет в левой части окна "Командный интерфейс", попробуйте найти ее в правой части и перетащить мышкой в нужную группу слева.
Проанализируем структуру метаданных команды СвязанныеДокументы. В большинстве типовых решений (УНФ, ERP, КА) тип параметра этой команды не является списком всех документов. Вместо этого используется ОпределяемыйТип.СвязанныйДокумент (название может варьироваться).
Это критический момент: если вы заимствовали команду и документ, но не заимствовали определяемый тип, платформа не поймет, что ваш документ в расширении имеет право использовать эту команду. Выясним, как правильно настроить связь:
ОпределяемыйТип в расширение.ДокументСсылка.ЗаказПокупателя).Без этого шага платформа считает, что команда СвязанныеДокументы не применима к объекту в контексте расширения, и скрывает её из интерфейса.
Посмотрим на свойства основного реквизита формы. Параметризуемые команды обычно ожидают на вход Ссылку (DocumentRef), а не сам Объект. Если основной реквизит формы в расширении имеет тип ДокументОбъект, убедитесь, что платформа корректно пробрасывает ссылку для команды.
Иногда помогает временное изменение типа основного реквизита или проверка того, что свойство Основной реквизит на форме расширения установлено именно для того объекта, который должен предоставлять параметр для команды. Проанализируем ситуацию: если форма создана "с нуля" в расширении, проверьте, указан ли тип параметра команды в свойствах самой команды в расширении в явном виде.
Если команда все равно не появляется, разберем влияние настроек прав и функциональных опций. В 1С команды могут быть "обернуты" в функциональные опции, которые управляют их видимостью в зависимости от настроек программы.
Что нужно проверить:
В расширениях рекомендуется создать собственную роль (например, ПолныеПраваРасширение), включить в неё права на использование заимствованной команды и назначить эту роль пользователю. Это исключит проблемы, связанные с ограничениями доступа внутри самого расширения.
Иногда проблема кроется в особенностях работы конкретных версий платформы (например, в релизах 8.3.24 и 8.3.25 фиксировались ошибки отображения команд интерфейса в расширениях). Чтобы заставить платформу "увидеть" изменения, можно применить небольшую хитрость:
Важное в Панель навигации.См. также).Это действие инициирует принудительный пересчет состава командного интерфейса формы. Также крайне рекомендуется запустить клиент с параметром /ClearCache. Посмотрим на пример команды запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\MyBase" /N "Admin" /P "password" /ClearCache
Подведем итог. Чтобы команда СвязанныеДокументы появилась на форме в расширении, мы должны обеспечить выполнение трех условий:
ОпределяемыйТип, связывающий их.Следуя этой методике, мы добьемся стабильного отображения любых параметризуемых команд, сохраняя при этом чистоту кода и типовую логику конфигурации.