При работе с конфигурациями 1С:Предприятия, особенно когда мы используем Библиотеку стандартных подсистем (БСП), часто возникает необходимость интегрировать пользовательские доработки. Одна из таких задач — это добавление варианта типового отчета (например, "РасчетныйЛисток" из ЗУП 3) в нашу собственную подсистему таким образом, чтобы он был доступен прямо из меню этой подсистемы. Рассмотрим подробно, как правильно реализовать этот механизм, избегая распространенных ошибок.
Наш основной вопрос заключается не просто в сохранении варианта отчета в справочнике, а в его корректном отображении в командном интерфейсе нашей подсистемы. Мы разберем пошаговый подход, который учитывает особенности БСП.
Чтобы вариант типового отчета корректно отображался в меню вашей подсистемы, мы должны выполнить несколько ключевых шагов. Эти шаги включают в себя как программные изменения, так и настройки в режиме конфигуратора и предприятия.
Первым делом нам необходимо уведомить БСП о существовании нашей подсистемы, чтобы она могла быть использована как раздел для группировки вариантов отчетов. Это делается путем добавления нашей подсистемы в специальную процедуру общего модуля.
Откроем конфигурацию в режиме конфигуратора. Найдем общий модуль ВариантыОтчетовПереопределяемый. В этом модуле мы найдем процедуру ОпределитьРазделыСВариантамиОтчетов. Внутри этой процедуры нам нужно добавить нашу подсистему в коллекцию Разделы. Рассмотрим пример:
Процедура ОпределитьРазделыСВариантамиОтчетов(Разделы) Экспорт
// ... существующий код
Разделы.Добавить(Метаданные.Подсистемы.МояПодсистема); // Добавляем нашу подсистему
// ... возможно, другие подсистемы
КонецПроцедуры
Зачем это нужно? Это действие гарантирует, что при сохранении нового варианта отчета или изменении существующего, наша подсистема МояПодсистема появится в списке выбора доступных разделов.
Регистрация подсистемы в ВариантыОтчетовПереопределяемый позволяет нам сохранить вариант отчета в нужный раздел, но сама по себе не добавит его в меню. Для этого нам нужна специальная общая команда, которая будет вызывать панель отчетов, привязанных к нашей подсистеме, и которую мы затем разместим в командном интерфейсе нашей подсистемы.
В конфигураторе перейдем в ветку "Общие" -> "Общие команды". Создадим новую общую команду, например, с именем ОтчетыМояПодсистема.
В модуле этой общей команды мы должны использовать стандартную функцию БСП для отображения панели отчетов. Код будет выглядеть следующим образом:
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполнения)
ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("МояПодсистема", ПараметрыВыполнения);
КонецПроцедуры
Важно: Здесь "МояПодсистема" — это имя подсистемы из метаданных, которое мы указали при ее создании. Эта строка сообщает БСП, какие варианты отчетов следует отобразить на панели.
Это критически важный шаг, который часто упускается. Перейдем к свойствам нашей подсистемы (МояПодсистема) в дереве конфигурации. Откроем закладку "Командный интерфейс". Здесь мы увидим разделы командного интерфейса (например, "Панель навигации", "Панель действий").
Нам необходимо перетащить или добавить нашу общую команду ОтчетыМояПодсистема в одну из групп командного интерфейса. Например, если мы хотим, чтобы в нашей подсистеме был пункт "Отчеты", который открывает список всех вариантов отчетов, привязанных к этой подсистеме, мы можем добавить ее в группу "Панель навигации.Обычная" или "Панель действий.Отчеты".
Зачем это нужно? Без размещения этой команды в командном интерфейсе подсистемы, пользователь просто не увидит пункта меню, который ведет к панели отчетов нашей подсистемы.
Чтобы пользователи могли видеть и использовать нашу новую общую команду, им должны быть предоставлены соответствующие права. Мы можем сделать это одним из двух способов:
ПолныеПрава для использования нашей общей команды (это часто делается на этапе разработки для быстрого тестирования).Почему это важно? Без необходимых прав, команда не будет отображаться в пользовательском интерфейсе, даже если она правильно размещена.
После любых изменений в метаданных (добавление подсистем, общих команд) или в модулях, особенно тех, которые касаются механизмов БСП, крайне важно запустить обновление вспомогательных данных информационной базы. Это гарантирует, что система корректно перечитает все новые настройки и кэшированные данные будут актуализированы.
Мы можем сделать это одним из способов:
/c ЗапуститьОбновлениеИнформационнойБазы.Зачем это нужно? Без обновления вспомогательных данных изменения могут не вступить в силу, и мы не увидим желаемого результата в режиме 1С:Предприятия.
Теперь, когда все готово, мы можем перейти в режим 1С:Предприятия и сохранить наш вариант отчета.
МояПодсистема. Выберем ее.После этих действий, если мы откроем нашу подсистему, найдем пункт меню, который соответствует нашей общей команде ОтчетыМояПодсистема, и нажмем на него, мы увидим панель с вариантами отчетов, среди которых будет и наш только что сохраненный вариант.
В ходе обсуждений на форуме мы видим, что часто возникает путаница между тем, как интегрировать вариант типового (внутреннего) отчета и как интегрировать внешний отчет или внешнюю обработку. Это два разных механизма, и для них используются разные подходы в БСП.
Мы используем механизм, который задействует общий модуль ВариантыОтчетовПереопределяемый и клиентский модуль ВариантыОтчетовКлиент с функцией ПоказатьПанельОтчетов("ИмяПодсистемы"). Этот подход предназначен для работы с отчетами, которые являются частью самой конфигурации и чьи варианты хранятся в специальном справочнике БСП.
Для внешних объектов (файлов .erf или .epf), подключаемых через справочник "Дополнительные отчеты и обработки", используется другой механизм. Здесь мы создаем общую команду, которая вызывает функцию ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(...), указывая вид обработки и имя подсистемы. Эта команда уже отображает список внешних объектов, привязанных к указанной подсистеме.
// Пример для внешних обработок (НЕ для вариантов типовых отчетов)
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
ПараметрКоманды,
ПараметрыВыполненияКоманды,
ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка,
"МояПодсистема");
КонецПроцедуры
Важно понимать: Если мы пытаемся использовать механизм для внешних обработок, чтобы отобразить вариант типового отчета, это не сработает, так как варианты типовых отчетов не являются внешними файлами.
Даже после выполнения всех шагов, мы можем столкнуться с ситуацией, когда вариант отчета все еще не виден. Проанализируем типичные причины:
ПолныеПрава на время отладки может помочь исключить проблемы с правами.ОтчетыМояПодсистема размещена в нужном месте./c ЗапуститьОбновлениеИнформационнойБазы или не использовали соответствующую обработку, то изменения в метаданных и конфигурации могут быть не применены.ВариантыОтчетовКлиент.ПоказатьПанельОтчетов("МояПодсистема", ...), точно соответствует имени нашей подсистемы из метаданных (Метаданные.Подсистемы.МояПодсистема.Имя).МояПодсистема из списка разделов.Интеграция варианта типового отчета в пользовательскую подсистему в 1С:Предприятии с использованием БСП — это системный процесс, который требует внимательного выполнения всех шагов. Основная логика сводится к регистрации подсистемы в механизме вариантов отчетов БСП и созданию общей команды, которая вызывает стандартную панель отчетов, привязанных к этой подсистеме. Помним о важности правильного размещения команды в командном интерфейсе подсистемы и обновлении вспомогательных данных. Различение между внутренними вариантами отчетов и внешними обработками также поможет избежать распространенных ошибок.