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

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

В современных релизах конфигураций, таких как Управление нашей фирмой (УНФ), разработчики часто сталкиваются с тем, что стандартные элементы формы, например, динамические списки, имеют отключенное свойство Автозаполнение. Это делается для оптимизации интерфейса, однако создает трудности, когда необходимо вернуть стандартные команды (например, «Настроить список») в контекстное меню или командную панель.

Разберем суть проблемы

Стандартные команды 1С не являются обычными процедурами, которые можно вызвать простым вызовом метода. Они привязаны к платформенному механизму взаимодействия с объектами формы. Когда мы отключаем Автозаполнение, платформа скрывает стандартный набор действий для элемента, чтобы избежать дублирования или конфликтов с кастомным интерфейсом. Попытки просто «добавить кнопку» и вызвать системную команду часто заканчиваются неудачей, так как система не предоставляет прямого метода ВыполнитьКоманду() для таких задач.

Решение через механизм расширений

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

  1. Заимствование элемента: Чтобы получить доступ к стандартным командам, которые «пропали» из списка доступных команд формы, необходимо заимствовать (захватить) сам объект Динамический список в ваше расширение.
  2. Обновление контекста: Как только элемент заимствован, платформа понимает, что вы работаете с этим объектом на правах разработчика расширения. После этого в окне редактирования формы, в разделе команд, станут доступны стандартные действия, привязанные к данному списку.
  3. Размещение команд: Перейдите в дерево элементов формы в расширении. Теперь вы сможете перетащить нужные стандартные команды (например, Настроить список или Вывести список) в командную панель или контекстное меню вашего списка, даже если основная настройка Автозаполнение остается выключенной.

Альтернативные подходы к управлению списком

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

Рассмотрим пример того, как можно программно вмешаться в настройки отбора:


// Пример программного изменения отбора динамического списка
ЭлементОтбора = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Статус");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Перечисления.СтатусыЗадач.ВРаботе;
ЭлементОтбора.Использование = Истина;

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

Что важно запомнить

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

← На главную