Как добавить глобальную параметризуемую команду в расширение и вывести её на форму?

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

При доработке типовых конфигураций, таких как «Бухгалтерия предприятия 3.0», через расширение конфигурации разработчики часто сталкиваются с задачей вывода команд связанных регистров на форму основного объекта. Например, требуется отобразить команду открытия формы цен номенклатуры из регистра сведений ЦеныНоменклатуры непосредственно в форме элемента справочника Номенклатура.

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

Шаг 1. Отображение команды в редакторе формы в конфигураторе

Рассмотрим ситуацию: в расширение заимствована форма элемента справочника Номенклатура и команда КомандаОткрытияФормыЦен из регистра сведений ЦеныНоменклатуры. Однако в редакторе формы на вкладке команд в разделе «Глобальные команды» (пункт «Параметризуемые») нужная команда не отображается и её невозможно перетащить на форму.

Выясним причину: платформа сопоставляет параметризуемые команды с контекстом формы по типу параметра команды. Чтобы среда разработки увидела совместимость типов в расширении, необходимо строго зафиксировать соответствие типа объекта.

  1. Откроем свойства заимствованной команды КомандаОткрытияФормыЦен в расширении.
  2. Найдем свойство Тип параметра команды и откроем окно редактирования типа.
  3. Убедимся, что выбран тип СправочникСсылка.Номенклатура.
  4. Установим режим проверки для данного типа: выбираем переключатель «Проверять значения при подключении расширения, запрещать...».
  5. Сохраним изменения. После этого платформа свяжет тип параметра с формой, и команда появится в списке «Глобальные команды — Параметризуемые», откуда её можно добавить в элементы формы или командную панель.

Шаг 2. Почему кнопка команды не видна в режиме «1С:Предприятие»

Проанализируем следующую проблему: команда успешно вынесена на командную панель формы в конфигураторе, но при запуске базы кнопка отсутствует. Разберем основные причины такого поведения платформы.

  1. Объект еще не записан в базу данных (пустая ссылка).

    Это ключевая особенность механизма параметризуемых команд платформы. Команда имеет параметр с типом СправочникСсылка.Номенклатура, поэтому она жестко привязана к реквизиту Объект.Ссылка. Если пользователь создает новый элемент справочника, ссылка на него еще не сформирована (значение Объект.Ссылка.Пустая() равно Истина). В этом случае платформа автоматически скрывает кнопку с формы. Проверить отображение кнопки следует в уже существующем и записанном элементе номенклатуры.

  2. Права доступа к регистру и команде.

    Если у текущего пользователя нет права Использование на саму команду или отсутствуют права Чтение и Просмотр на регистр сведений ЦеныНоменклатуры, платформа автоматически скроет связанную кнопку интерфейса. Если в расширение добавлялись собственные роли, убедимся, что в них выданы соответствующие права.

  3. Влияние функциональных опций.

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

  4. Кнопка перемещена в подменю «Еще».

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

  5. Кэш пользовательских настроек формы.

    Платформа сохраняет пользовательские настройки расположения полей и кнопок. Если пользователь ранее открывал форму элемента, новые добавленные элементы могут оказаться скрытыми в пользовательском интерфейсе. Для проверки в режиме «1С:Предприятие» нажмем Еще — Изменить форму, затем выберем Еще — Установить стандартные настройки.

Альтернативный вариант: программное открытие формы через команду формы

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

Разберем по шагам создание альтернативного решения:

  1. В заимствованной форме элемента номенклатуры перейдем на вкладку Команды — Команды формы.
  2. Создадим команду с именем Расш1_ОткрытьЦены и разместим её на командной панели формы.
  3. В свойствах команды создадим клиентский обработчик действия и напишем следующий код:

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

Такой подход обеспечивает полный контроль над поведением интерфейса: кнопка гарантированно отображается на панели, а при попытке обращения из незаписанного объекта пользователь получает понятное предупреждение.

← На главную