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