При работе с типовыми конфигурациями 1С на базе Библиотеки стандартных подсистем (БСП), такими как «1С:Управление торговлей 11», администраторы и разработчики часто сталкиваются со специфическим поведением механизма дополнительных отчетов и обработок. Типичная ситуация: внешние отчеты добавлены в базу, но при попытке пользователя настроить свой рабочий стол они либо начинают «задваиваться» и «затраиваться» в списке выбора, либо вовсе исчезают из панели после переноса, оставляя пользователя в недоумении.
В этой статье мы подробно разберем внутренние механизмы БСП, отвечающие за интеграцию внешних отчетов, выясним причины некорректного поведения интерфейса и рассмотрим несколько практических вариантов того, как красиво и удобно вывести необходимые дополнительные отчеты конечному пользователю.
---
Для начала проанализируем ситуацию, когда при открытии формы настройки списка дополнительных отчетов один и тот же отчет отображается несколько раз. Выясним техническую причину этого поведения.
В БСП за вывод внешних отчетов отвечает специальный справочник ДополнительныеОтчетыИОбработки. В карточке каждого такого отчета присутствует табличная часть «Размещение». Здесь администратор определяет подсистемы (разделы интерфейса), в которых данный отчет должен быть доступен (например, «Продажи», «Склад и доставка», «Закупки»).
Если один и тот же отчет привязан сразу к трем разделам конфигурации, система БСП регистрирует три независимые точки входа для этой команды. Когда пользователь открывает форму настройки «Мои дополнительные отчеты», платформа опрашивает все доступные размещения. В результате в левой части формы («Доступные отчеты») выводятся три строки одного и того же отчета — по одной строке для каждого назначенного раздела.
Если пользователь, не обращая внимания на колонку «Раздел», просто переносит все строки в правую часть («Выбранные отчеты»), в его персональном интерфейсе этот отчет продублируется ровно столько раз, сколько разделов для него было настроено.
Как решить проблему дублирования:
---
Рассмотрим вторую частую проблему: пользователь успешно перенес нужные отчеты в правую колонку в окне настройки, нажал «ОК», но сама панель дополнительных отчетов осталась пустой. Почему так происходит? Разберем основные факторы.
В справочнике ДополнительныеОтчетыИОбработки на вкладке «Команды» для каждой строки предусмотрена колонка «Быстрый доступ». По умолчанию эта колонка может быть незаполненной. Если там не указаны конкретные пользователи или группы пользователей, система считает, что у обычного сотрудника нет автоматического права на быстрый вывод этой команды.
Чтобы исправить это, администратору необходимо зайти в карточку отчета, дважды кликнуть по полю «Быстрый доступ» напротив нужной команды и явно перенести пользователя (или группу пользователей) в правый список разрешенных лиц. Для тонкой настройки доступа к отдельным вариантам отчетов также подойдёт инструмент ограничения видимости вариантов дополнительных отчетов по пользователям.
В шапке карточки дополнительного отчета есть реквизит «Публикация». Он может принимать три значения:
Если отчет находится в стадии разработки или тестирования, разработчики часто оставляют статус «Режим отладки». Проверьте этот реквизит и переведите его в статус «Используется».
Для того чтобы пользователь в принципе мог взаимодействовать с механизмом дополнительных отчетов, в его профиле групп доступа обязательно должна быть назначена роль «Чтение дополнительных отчетов и обработок» (или аналогичная ей роль в используемой версии БСП). Без нее платформа на уровне ограничений прав доступа (RLS) отсечет видимость элементов этого справочника.
Когда пользователь открывает форму «Дополнительные отчеты» непосредственно из интерфейса конкретного раздела (например, находясь в разделе «Склад и доставка»), форма открывается с автоматическим отбором по текущему разделу. Если отчет был настроен и размещен только в разделе «Продажи», то в складском интерфейсе он отображаться не будет. Научите пользователей обращать внимание на поле отбора разделов в шапке формы дополнительных отчетов.
---
Если стандартное окно «Дополнительные отчеты» кажется пользователю перегруженным или неудобным, мы можем предложить альтернативные, более элегантные решения для быстрого доступа к этим 6 отчетам.
Для пользователя самым быстрым способом запуска является добавление отчетов в список «Избранное» платформы 1С. Однако для внешних отчетов здесь существует критически важный технический нюанс.
Чтобы внешний отчет поддерживал сохранение вариантов настроек и его можно было корректно добавить в «Избранное» (чтобы ссылка не ломалась после обновления или перезапуска), в самом отчете на уровне Конфигуратора должно быть переопределено стандартное хранилище настроек.
Откроем внешний отчет в Конфигураторе и в палитре свойств самого объекта «Отчет» найдем свойство «Хранилище вариантов». По умолчанию оно пустое. Нам необходимо явно указать там системное хранилище: ХранилищеВариантовОтчетов.
Также убедимся, что в модуле объекта внешнего отчета правильно описана экспортная функция инициализации для БСП. Пример стандартного кода модуля объекта:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОПанелиАдминистрирования();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Наименование = "Отчет по реализации расширенный";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
// Указываем разделы размещения
ПараметрыРегистрации.Размещение.Добавить("Продажи");
// Описываем команду запуска
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Отчет по реализации расширенный (запуск)";
НоваяКоманда.Идентификатор = "ОткрытьОтчет";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипЗапускаОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
После установки свойства ХранилищеВариантовОтчетов и корректной регистрации отчета в базе, пользователь сможет открыть его один раз через дополнительные отчеты, настроить под себя, нажать на значок «Звездочка» в заголовке формы, и отчет навсегда закрепится в его панели избранного (доступной по клавише Ctrl + Shift + B или на верхней панели).
---
Если мы хотим сделать интерфейс максимально чистым, изолировать эти 6 отчетов от общего механизма БСП и вывести их в отдельный удобный раздел, наилучшим решением будет использование Расширения конфигурации. Этот способ не снимает основную конфигурацию с поддержки и сохраняет простоту обновлений системы. Для этой задачи можно использовать готовое расширение для вывода меню внешних отчетов и обработок в единый раздел.
Выполним следующие шаги для реализации этой задачи:
_НашиСпециальныеОтчеты с понятным пользователю синонимом «Отчеты отдела». Настроим ее отображение в панели разделов._НашиСпециальныеОтчеты и включим их в состав команд этой подсистемы.При таком подходе пользователь сразу в главном меню увидит красивый независимый раздел «Отчеты отдела», где ровно в один клик без каких-либо промежуточных форм настроек сможет открывать любые из этих 6 отчетов.
Если же файлы отчетов принципиально должны обновляться «на лету» в режиме предприятия без изменения расширения, мы можем оставить их в справочнике ДополнительныеОтчетыИОбработки, но в расширении создать простую общую форму с 6 кнопками. При нажатии на каждую кнопку будет выполняться программный вызов внешнего отчета из справочника по его уникальному идентификатору (GUID) или коду.
Рассмотрим пример программного открытия внешнего отчета по его коду в справочнике:
&НаКлиенте
Процедура ОткрытьВнешнийОтчетПоКоду(КодОтчета)
СсылкаНаОтчет = ПолучитьСсылкуНаВнешнийОтчетНаСервере(КодОтчета);
Если ЗначениеЗаполнено(СсылкаНаОтчет) Тогда
// Формируем имя внешнего отчета в структуре БСП
ИмяВнешнегоОтчета = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(СсылкаНаОтчет);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("КлючВарианта", "");
ОткрытьФорму("ВнешнийОтчет." + ИмяВнешнегоОтчета + ".Форма", ПараметрыОткрытия);
Иначе
ПоказатьПредупреждение(, "Не удалось найти внешний отчет с кодом " + КодОтчета);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетНаСервере(КодОтчета)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоКоду(КодОтчета);
КонецФункции
---
Механизм БСП спроектирован так, что внешние отчеты вовсе не обязательно открывать через модальное или отдельное окно «Дополнительные отчеты». Они могут бесшовно интегрироваться прямо в стандартные панели отчетов соответствующих разделов.
Если в карточке дополнительного отчета правильно настроено его размещение (например, раздел «Продажи») и указан быстрый доступ для пользователя, то этот отчет автоматически появится в стандартной панели отчетов этого раздела.
Пользователю достаточно перейти в раздел Продажи, кликнуть по ссылке Отчеты по продажам, и среди стандартных отчетов системы (таких как «Ведомость по товарам на складах», «Продажи по партнерам») он увидит наш дополнительный внешний отчет. Он будет выглядеть как родной отчет системы, поддерживать поиск по названию, группировку по категориям и добавление в личные панели быстрых настроек. Это наиболее профессиональный и дружелюбный к пользователю вариант интеграции внешних разработок в типовые решения фирмы 1С.