Как добавить вариант типового отчета в меню пользовательской подсистемы в 1С:Предприятии 8.3 (ЗУП 3, Управляемые формы, БСП)?

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

При работе с конфигурациями 1С:Предприятия, особенно когда мы используем Библиотеку стандартных подсистем (БСП), часто возникает необходимость интегрировать пользовательские доработки. Одна из таких задач — это добавление варианта типового отчета (например, "РасчетныйЛисток" из ЗУП 3) в нашу собственную подсистему таким образом, чтобы он был доступен прямо из меню этой подсистемы. Рассмотрим подробно, как правильно реализовать этот механизм, избегая распространенных ошибок.

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

Основные этапы добавления варианта типового отчета в пользовательскую подсистему

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

  1. Регистрация нашей подсистемы для работы с вариантами отчетов БСП.

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

Откроем конфигурацию в режиме конфигуратора. Найдем общий модуль ВариантыОтчетовПереопределяемый. В этом модуле мы найдем процедуру ОпределитьРазделыСВариантамиОтчетов. Внутри этой процедуры нам нужно добавить нашу подсистему в коллекцию Разделы. Рассмотрим пример:


Процедура ОпределитьРазделыСВариантамиОтчетов(Разделы) Экспорт
    // ... существующий код
    Разделы.Добавить(Метаданные.Подсистемы.МояПодсистема); // Добавляем нашу подсистему
    // ... возможно, другие подсистемы
КонецПроцедуры

Зачем это нужно? Это действие гарантирует, что при сохранении нового варианта отчета или изменении существующего, наша подсистема МояПодсистема появится в списке выбора доступных разделов.

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

  1. Создадим новую общую команду.

    В конфигураторе перейдем в ветку "Общие" -> "Общие команды". Создадим новую общую команду, например, с именем ОтчетыМояПодсистема.

  2. Опишем логику команды в ее модуле.

    В модуле этой общей команды мы должны использовать стандартную функцию БСП для отображения панели отчетов. Код будет выглядеть следующим образом:

    
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполнения)
        ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("МояПодсистема", ПараметрыВыполнения);
    КонецПроцедуры
    

    Важно: Здесь "МояПодсистема" — это имя подсистемы из метаданных, которое мы указали при ее создании. Эта строка сообщает БСП, какие варианты отчетов следует отобразить на панели.

  3. Разместим общую команду в командном интерфейсе нашей подсистемы.

    Это критически важный шаг, который часто упускается. Перейдем к свойствам нашей подсистемы (МояПодсистема) в дереве конфигурации. Откроем закладку "Командный интерфейс". Здесь мы увидим разделы командного интерфейса (например, "Панель навигации", "Панель действий").

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

    Зачем это нужно? Без размещения этой команды в командном интерфейсе подсистемы, пользователь просто не увидит пункта меню, который ведет к панели отчетов нашей подсистемы.

Чтобы пользователи могли видеть и использовать нашу новую общую команду, им должны быть предоставлены соответствующие права. Мы можем сделать это одним из двух способов:

  1. Назначить роль ПолныеПрава для использования нашей общей команды (это часто делается на этапе разработки для быстрого тестирования).
  2. Создать новую роль или добавить нашу общую команду в существующую роль, используя быструю проверку прав доступа, которую мы планируем использовать для пользователей нашей подсистемы.

Почему это важно? Без необходимых прав, команда не будет отображаться в пользовательском интерфейсе, даже если она правильно размещена.

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

Мы можем сделать это одним из способов:

  1. Запустить 1С:Предприятие в режиме отладки с параметром запуска /c ЗапуститьОбновлениеИнформационнойБазы.
  2. Использовать обработку "ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf" из состава БСП (если она есть и доступна).

Зачем это нужно? Без обновления вспомогательных данных изменения могут не вступить в силу, и мы не увидим желаемого результата в режиме 1С:Предприятия.

Теперь, когда все готово, мы можем перейти в режим 1С:Предприятия и сохранить наш вариант отчета.

  1. Откроем нужный типовой отчет (например, "РасчетныйЛисток").
  2. Настроим его, как нам нужно.
  3. Нажмем кнопку "Сохранить вариант" или "Изменить вариант" (если хотим изменить уже существующий).
  4. В открывшемся окне сохранения варианта отчета в списке "Раздел" мы теперь увидим нашу МояПодсистема. Выберем ее.
  5. Дадим варианту отчета понятное имя и, если нужно, настроим доступность.
  6. Сохраним вариант (иногда требуется сохранение настроек для всех пользователей).

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

Важное различие: Варианты типовых отчетов vs. Внешние отчеты/обработки

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

  1. Для вариантов типовых отчетов (наша текущая задача):

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

  2. Для внешних отчетов и обработок:

    Для внешних объектов (файлов .erf или .epf), подключаемых через справочник "Дополнительные отчеты и обработки", используется другой механизм. Здесь мы создаем общую команду, которая вызывает функцию ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(...), указывая вид обработки и имя подсистемы. Эта команда уже отображает список внешних объектов, привязанных к указанной подсистеме.

    
    // Пример для внешних обработок (НЕ для вариантов типовых отчетов)
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
        ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
            ПараметрКоманды,
            ПараметрыВыполненияКоманды,
            ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка,
            "МояПодсистема");
    КонецПроцедуры
    

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

Возможные причины, почему отчеты могут не отображаться

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

  1. Недостаточные права: Убедимся, что у пользователя, под которым мы тестируем, есть достаточные права на нашу подсистему, на сам типовой отчет и на созданную общую команду. Роль ПолныеПрава на время отладки может помочь исключить проблемы с правами.
  2. Отсутствие команды в командном интерфейсе: Как мы уже говорили, даже если общая команда создана, но не добавлена в командный интерфейс самой подсистемы, пункта меню для ее вызова просто не будет. Проверим свойства нашей подсистемы и убедимся, что команда ОтчетыМояПодсистема размещена в нужном месте.
  3. Не выполнено обновление вспомогательных данных: Если мы забыли запустить 1С:Предприятие с параметром /c ЗапуститьОбновлениеИнформационнойБазы или не использовали соответствующую обработку, то изменения в метаданных и конфигурации могут быть не применены.
  4. Ошибка в имени подсистемы: Проверим, что строка, которую мы передаем в ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("МояПодсистема", ...), точно соответствует имени нашей подсистемы из метаданных (Метаданные.Подсистемы.МояПодсистема.Имя).
  5. Вариант отчета сохранен не в ту подсистему: Перепроверим, что при сохранении варианта отчета мы выбрали именно нашу МояПодсистема из списка разделов.

Заключение

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

← На главную