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