Как добавить собственную команду к отчету в 1С 8.3 и вывести ее в интерфейс

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

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

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

---

Шаг 1. Создание локальной команды внутри объекта «Отчет»

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

Выполним следующие действия по шагам:

  1. Откроем конфигуратор и найдем наш отчет в дереве метаданных (ветка Отчеты).
  2. Раскроем ветку нашего отчета и найдем подраздел Команды.
  3. Нажмем на нем правой кнопкой мыши и выберем пункт «Добавить» (или нажмем клавишу Insert).
  4. В палитре свойств созданной команды зададим понятное Имя (например, ОткрытьРегламентированныйОтчет) и Синоним (то, что увидит пользователь на кнопке, например, Журнал учета работы установок).

Обратим внимание на важные свойства в палитре свойств команды:

---

Шаг 2. Написание кода обработчика в модуле команды

После создания команды конфигуратор автоматически создаст для нее модуль. Если этого не произошло, нажмите правой кнопкой мыши по команде и выберите «Открыть модуль команды».

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

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

Проанализируем и напишем следующий код в модуле команды:


#Область ОбработчикиСобытий 

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

#КонецОбласти

Разберем параметры метода ОткрытьФорму, которые мы использовали:

---

Шаг 3. Как вывести созданную команду в интерфейс пользователя

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

Выполним настройку по шагам:

  1. Включение отчета в состав подсистем:
    • В палитре свойств вашего объекта Отчет перейдите на вкладку Подсистемы.
    • Установите флажки напротив тех подсистем, в разделах которых должен отображаться ваш отчет (например, Экология, ОхранаОкружающейСреды или РегламентированнаяОтчетность).
  2. Настройка командного интерфейса подсистемы:
    • В дереве конфигуратора найдите одну из подсистем, в которую вы включили отчет.
    • Нажмите по ней правой кнопкой мыши и выберите пункт «Открыть командный интерфейс».
    • В открывшемся окне найдите ваш отчет. Под ним вы увидите созданную вами команду (например, ОткрытьРегламентированныйОтчет).
    • В колонке «Видимость» установите флажок для тех ролей пользователей, которые должны иметь доступ к этой команде. При необходимости установите флажок в колонке «Видимость по умолчанию».
    • Повторите эту операцию для всех подсистем, куда был добавлен отчет.
  3. Проверка ролей и прав доступа:
    • Убедитесь, что у профилей групп доступа пользователей есть права (хотя бы на чтение и просмотр) как на сам созданный отчет и его команду, так и на вызываемый объект (в нашем примере — на Документ.РегламентированныйОтчет). Без наличия соответствующих прав платформа автоматически скроет команду из интерфейса конкретного пользователя.

---

Шаг 4. Разница между независимыми и параметризуемыми командами

В нашем примере мы создали независимую команду. Она вызывается из командного интерфейса разделов и никак не связана с конкретными данными на форме. Параметр ПараметрКоманды в процедуре ОбработкаКоманды при этом остается неопределенным.

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


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ПараметрыФормы = Новый Структура();
    // Передаем ссылку на конкретную установку в параметры отчета
    ПараметрыФормы.Вставить("ОтборПромышленнаяУстановка", ПараметрКоманды);
    
    ОткрытьФорму("Отчет.НашЭкологическийОтчет.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник);
    
КонецПроцедуры

---

Шаг 5. Особенности для современных конфигураций (стандарт БСП)

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

Согласно стандартам разработки БСП, интеграция новых отчетов выполняется через механизм «Варианты отчетов»:

  1. Вы не создаете команды вручную в конфигураторе.
  2. В Модуле менеджера вашего отчета вы описываете экспортную процедуру НастроитьВариантыОтчета(Настройки, НастройкиОтчета), где регистрируете отчет, задаете его описание и указываете разделы интерфейса для размещения.
  3. Регистрируете отчет в общем модуле ВариантыОтчетовПереопределяемый.
  4. При запуске системы отчет автоматически регистрируется в справочнике «Варианты отчетов» и выводится в стандартную «Панель отчетов» соответствующего раздела. Пользователи смогут самостоятельно настраивать его видимость, добавлять в избранное и настраивать рассылку отчетов по расписанию.

Тем не менее, для специализированных регламентированных журналов учета и деклараций классический метод с созданием явной команды отчета и открытием формы списка документов (как мы разобрали в Шагах 1–3) остается самым надежным и гибким решением.

← На главную