Как в 1С:ERP добавить команду для запуска отчета напрямую из панели разделов?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

В процессе работы с 1С:ERP часто возникает задача оптимизации интерфейса для быстрого доступа к часто используемым отчетам. Стандартное поведение системы предполагает открытие отчетов через панель "Отчеты по продажам", "Отчеты по производству" и т.д. Однако это может приводить к лишним кликам, а иногда, как в ситуации автора темы, к открытию промежуточной пустой формы, с которой уже и нужно запускать сам отчет. Давайте разберемся, как настроить систему так, чтобы отчет запускался одной командой прямо из основной панели разделов ("Продажи", "Склад и доставка" и т.п.). В качестве альтернативного решения можно использовать расширение для добавления любых отчетов на начальную страницу без изменения структуры разделов.

Основная задача — разместить в панели разделов не сам раздел с отчетами, а конкретную команду, которая будет напрямую открывать форму нужного отчета. Проанализируем два основных способа решения этой задачи: стандартными средствами конфигуратора и с помощью программной доработки. Для более масштабного исключения рутины и автоматизации сложных цепочек действий пользователя также применяется платформа для создания программных роботов RPA с визуальным конструктором сценариев.

Способ 1: Настройка через стандартный командный интерфейс

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

  1. Создание и настройка команды отчета.

    Первый и самый важный шаг — убедиться, что у нашего отчета есть собственная команда для открытия. Для этого открываем конфигуратор и находим нужный нам объект-отчет.

    Переходим на вкладку «Команды». Если список пуст, нужно создать новую команду. Если команды уже есть (например, стандартная команда «Открыть»), нужно проверить ее свойства. Нас интересуют следующие параметры:

    • Имя: Задаем понятное имя, например, `ОткрытьОтчетПоОстаткам`.
    • Представление: Это текст, который пользователь увидит в меню. Например, «Остатки товаров на складах».
    • Группа: Это ключевой параметр. Чтобы команда появилась в панели навигации раздела, ее нужно поместить в соответствующую группу. Чаще всего это `Панель навигации.Важное` или `Панель навигации.Отчеты`. Выбор группы определяет, где именно в настройках интерфейса мы сможем найти эту команду.
    • Тип команды: `Открытие формы`. В качестве действия должна быть выбрана основная форма отчета.

    Также не забываем проверить, что на вкладке «Основные» у самого отчета установлен флаг «Использовать стандартные команды». Это позволяет системе автоматически генерировать базовые команды, которые также можно использовать.

  2. Включение отчета в подсистему.

    Чтобы команда стала доступна для настройки в интерфейсе, сам объект-отчет должен быть включен в состав хотя бы одной подсистемы. Например, отчет по остаткам логично включить в подсистему «Склад и доставка». Это делается на вкладке «Подсистемы» в свойствах объекта отчета.

  3. Редактирование командного интерфейса подсистемы.

    Теперь самое главное — сделаем нашу команду видимой в панели разделов. Для этого в дереве конфигурации находим нужную подсистему (например, «Склад и доставка») и открываем ее «Командный интерфейс».

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

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

  4. Настройка в режиме «Предприятие».

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

Способ 2: Программное создание общей команды (для сложных случаев)

Иногда требуется более гибкое поведение: например, открыть отчет с уже установленными параметрами или выполнить какие-то предварительные действия. В этом случае стандартной команды может быть недостаточно. Здесь нам на помощь придут общие команды и расширения конфигурации.

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

  1. Создание общей команды в расширении.

    В своем расширении создаем новую Общую команду. Заполняем ее свойства:

    • Имя: Например, `ЗапуститьОтчетПоОстаткамСПараметрами`.
    • Представление: «Остатки на складах (с отбором)».
    • Группа: Выбираем группу `Панель разделов`. Это позволит нам в дальнейшем разместить команду на самом верхнем уровне меню, как, например, «Продажи» или «Производство».
  2. Написание кода обработчика.

    Самое главное в общей команде — это ее обработчик. Создаем для команды модуль и пишем в нем процедуру-обработчик. В этой процедуре мы можем программно открыть форму отчета.

    Посмотрим на пример. Допустим, мы хотим открыть отчет «ОстаткиТоваров» и установить в нем отбор по конкретному складу.

    
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
        
        // Определяем параметры формы, которые мы хотим передать
        ПараметрыФормы = Новый Структура;
        
        // Например, мы хотим установить отбор по складу "Основной"
        // Для этого нужно знать имя реквизита отбора в отчете
        // Предположим, он называется "Склад"
        // Найдем нужный склад
        ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию("Основной");
        
        Если ЗначениеЗаполнено(ОсновнойСклад) Тогда
            // Создаем структуру для отбора
            Отбор = Новый Структура("Склад", ОсновнойСклад);
            ПараметрыФормы.Вставить("Отбор", Отбор);
        КонецЕсли;
        
        // Устанавливаем ключ уникальности, чтобы форма всегда открывалась новая
        ПараметрыФормы.Вставить("Уникальность", Новый УникальныйИдентификатор);
        
        // Открываем форму отчета с нашими параметрами
        ОткрытьФорму("Отчет.ОстаткиТоваров.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
        
    КонецПроцедуры
    

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

  3. Настройка видимости общей команды.

    Чтобы наша общая команда появилась в панели разделов, ее нужно включить в командный интерфейс основной конфигурации или какой-либо подсистемы. Это делается через свойство команды «Включить в командный интерфейс» или через редактор командного интерфейса нужной подсистемы, аналогично первому способу.

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

← На главную