Как разместить внешнюю обработку в меню подсистемы 1С на базе БСП?

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

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

Механизм регистрации обработки в коде

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

Рассмотрим пример кода регистрации, где мы явно указываем разделы, в которых будет доступна наша обработка:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "Моя обработка для сервиса";
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;

    // Указываем разделы, в которых будет видна обработка
    ПараметрыРегистрации.Размещение.Добавить(Метаданные.Подсистемы.Продажи);
    ПараметрыРегистрации.Размещение.Добавить(Метаданные.Подсистемы.Администрирование);

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
        "Открыть форму обработки",
        "ОткрытьФормуОбработки",
        "ОткрытиеФормы", // Тип команды
        Истина,          // Показывать оповещение
        "");             // Модификатор

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
КонецФункции

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

Настройка видимости в пользовательском режиме

Рассмотрим ситуацию: вы зарегистрировали обработку, указали раздел Администрирование, но в меню пусто. Это штатное поведение. Чтобы команда появилась, выполним следующие действия:

  1. Зайдем в нужный раздел (например, Продажи или Администрирование).
  2. Найдем группу Сервис и нажмем на гиперссылку Дополнительные обработки.
  3. В открывшемся окне вы увидите список подключенных обработок. Однако, если ваша обработка там не отображается, нужно нажать кнопку Настроить список....
  4. В появившемся диалоге настройки установите флажки напротив тех команд, которые должны быть выведены в интерфейс раздела.

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

Использование функциональных опций

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

Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки. Убедимся, что флаг Дополнительные отчеты и обработки установлен. Без этой настройки механизмы БСП по работе с внешними файлами будут скрыты из интерфейса всей программы.

Прямой вызов обработки через расширение (метод «Пускач»)

Если стандартный способ через группу Сервис кажется неудобным (слишком много кликов), разберем альтернативный вариант — создание кнопки прямо в командной панели раздела. Для этого создадим небольшое расширение и в нем — обработку-заглушку или отчет.

Посмотрим на пример кода в форме такого «пускача». В процедуре ПриСозданииНаСервере мы находим ссылку на нашу внешнюю обработку, а в ПриОткрытии программно запускаем её:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НаименованиеВСправочнике = "Загрузка данных из Excel";
    // Ищем ссылку на зарегистрированную внешнюю обработку
    ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(НаименованиеВСправочнике);
    
    Если ОбработкаСсылка.Пустая() Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Внешняя обработка не найдена!");
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Отказ = Истина; // Саму форму пускача открывать не нужно
    
    ПараметрыКоманды = Новый Структура;
    ПараметрыКоманды.Вставить("ДополнительнаяОбработкаСсылка", ОбработкаСсылка);
    
    // Используем штатный метод БСП для запуска
    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКоманду(ПараметрыКоманды);
КонецПроцедуры

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

Типы команд и их особенности

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

Если вы выбрали ОткрытиеФормы, обязательно убедитесь, что в файле .epf одна из форм назначена Основной. В противном случае система не поймет, что именно нужно показать пользователю.

Настройка прав доступа

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

Во-первых, у пользователя должна быть роль ИспользованиеДополнительныхОтчетовИОбработок (или аналогичная в вашей версии конфигурации).

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

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

← На главную