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