К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как получить реквизиты внешней обработки 1С

Как получить реквизиты внешней обработки 1С: функция СведенияОВнешнейОбработке, чтение данных из файла epf и программный доступ к параметрам регистрации.

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

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

Что входит в реквизиты внешней обработки

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

  • Наименование — как обработка отобразится в списке дополнительных отчетов и обработок;
  • Версия — строка в произвольном формате, обычно «1.0», «2.3.1» и т.п.;
  • Вид — один из предопределенных видов: «ДополнительнаяОбработка», «ДополнительныйОтчет», «ЗаполнениеОбъекта», «ПечатнаяФорма», «СозданиеСвязанныхОбъектов», «Отчет»;
  • БезопасныйРежим — булево, определяет, будет ли код выполняться с ограничениями;
  • Информация — краткое описание назначения для пользователя;
  • Команды — таблица кнопок запуска с идентификаторами, представлениями и вариантами использования;
  • Назначение — массив объектов метаданных, для которых предназначена обработка (для видов «ПечатнаяФорма», «ЗаполнениеОбъекта»).

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

Как задать реквизиты в собственной обработке

Откройте внешнюю обработку в конфигураторе, перейдите в модуль объекта (правый клик по корню обработки → «Модуль объекта») и добавьте экспортную функцию. Минимальный шаблон:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

ПараметрыРегистрации.Вставить("Наименование", "Загрузка прайсов поставщиков");

ПараметрыРегистрации.Вставить("Версия", "1.0");

ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

ПараметрыРегистрации.Вставить("Информация", "Загружает прайс-листы из файлов Excel");

Команды = Новый ТаблицаЗначений;

Команды.Колонки.Добавить("Идентификатор");

Команды.Колонки.Добавить("Представление");

Команды.Колонки.Добавить("Использование");

Команды.Колонки.Добавить("ПоказыватьОповещение");

Команды.Колонки.Добавить("Модификатор");

Команда = Команды.Добавить();

Команда.Идентификатор = "ЗагрузитьПрайс";

Команда.Представление = "Загрузить прайс-лист";

Команда.Использование = "ОткрытиеФормы";

Команда.ПоказыватьОповещение = Ложь;

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

Возврат ПараметрыРегистрации;

КонецФункции

Обратите внимание на поле Использование команды. Значение «ОткрытиеФормы» означает, что пользователю откроется основная форма обработки. Значение «ВызовКлиентскогоМетода» вызывает процедуру ВыполнитьКоманду в модуле формы, а «ВызовСерверногоМетода» — в модуле объекта без открытия формы, что подходит для фоновых операций.

Как получить реквизиты из готового файла .epf

Если у вас есть чужая обработка и нужно узнать её реквизиты (версию, вид, команды), самый простой способ — открыть файл в конфигураторе через «Файл → Открыть» и посмотреть модуль объекта. Если функция СведенияОВнешнейОбработке там есть — все реквизиты видны в коде.

Программный способ удобен, когда файлов много или проверку нужно автоматизировать. Идея — создать объект обработки и вызвать функцию сведений:

Обработка = ВнешниеОбработки.Создать("C:\Обработки\МояОбработка.epf", Ложь);

Сведения = Обработка.СведенияОВнешнейОбработке();

Сообщить("Наименование: " + Сведения.Наименование);

Сообщить("Версия: " + Сведения.Версия);

Сообщить("Вид: " + Сведения.Вид);

Второй параметр метода Создать() отвечает за безопасный режим. Указывайте Ложь только для файлов из доверенного источника: код модуля объекта при создании объекта частично выполняется, и вредоносная обработка может нанести вред данным.

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

Получение реквизитов уже зарегистрированной обработки

Когда обработка подключена к базе, её сведения хранятся в справочнике «ДополнительныеОтчетыИОбработки». Посмотреть их можно в пользовательском режиме: «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». В карточке элемента видны наименование, версия, вид, безопасный режим и таблица команд.

Программно данные читаются запросом к справочнику:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Доп.Наименование,

| Доп.Версия,

| Доп.Вид,

| Доп.БезопасныйРежим,

| Доп.ИмяФайла

|ИЗ

| Справочник.ДополнительныеОтчетыИОбработки КАК Доп

|ГДЕ

| НЕ Доп.ПометкаУдаления";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Наименование + " v" + Выборка.Версия);

КонецЦикла;

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

Отличия для управляемого и обычного приложения

Сама структура сведений одинакова, но есть нюансы в командах. В обычном приложении (режим толстого клиента старых конфигураций) вариант «ВызовКлиентскогоМетода» и работа с формами устроены иначе, а часть вариантов использования недоступна. Если обработка должна работать в обоих режимах, тестируйте регистрацию в каждом отдельно.

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

Сравнение вариантов

ОткрытиеФормы

Подходит для интерактивных обработок с интерфейсом. Ограничение: требует основной формы, не работает в фоновых заданиях.

ВызовКлиентскогоМетода

Команда обрабатывается в модуле формы обработки. Подходит для сценариев с диалогами выбора файлов.

ВызовСерверногоМетода

Выполняется на сервере без открытия формы. Подходит для пакетных операций, но недоступен интерактивный ввод.

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Загрузка файла в справочник
Норма

Карточка создана, наименование и версия подтянулись автоматически

Тревожный признак

Ошибка «Невозможно подключить» или пустые поля сведений

Список команд
Норма

Команды видны в карточке и в меню «Дополнительные обработки»

Тревожный признак

Команд нет — проверьте заполнение таблицы Команды

Запуск команды
Норма

Открывается форма или выполняется серверный метод без ошибок

Тревожный признак

Ошибка «Метод не обнаружен» — нет экспортной процедуры ВыполнитьКоманду

Типичные ошибки
01
Функция объявлена без слова Экспорт — подсистема не видит её, регистрация невозможна.
02
Вид указан с опечаткой или не из списка допустимых — обработка отклоняется при подключении.
03
Не заполнена таблица Команды — обработка регистрируется, но запустить её невозможно.
04
Для видов ПечатнаяФорма и ЗаполнениеОбъекта не указано Назначение — команды не появляются в формах документов.
05
Забыт второй параметр у ВнешниеОбработки.Создать() — код выполняется в небезопасном режиме без ведома администратора.

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

Итог

Что важно запомнить

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

Частые вопросы

Обязательна ли функция СведенияОВнешнейОбработке для любой обработки?

Нет. Она нужна только для регистрации через подсистему дополнительных отчетов и обработок БСП. Если обработка запускается вручную через «Файл → Открыть», функция не требуется и её отсутствие не является ошибкой.

Как узнать версию обработки, не запуская её код?

Откройте файл .epf в конфигураторе и найдите функцию СведенияОВнешнейОбработке в модуле объекта — версия указана там строкой. Если функции нет, формальной версии у обработки нет, ориентируйтесь на дату изменения файла.

Почему при подключении возникает ошибка «Невозможно подключить дополнительную обработку»?

Чаще всего функция сведений отсутствует, не экспортная, возвращает структуру без обязательных полей (Вид, Наименование) или вид указан с ошибкой. Также проверьте, что файл не поврежден и открывается в конфигураторе.

Можно ли получить реквизиты обработки в безопасном режиме?

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

Чем отличается Наименование от синонима обработки?

Синоним в метаданных обработки задается в конфигураторе и виден при открытии файла напрямую. Наименование из сведений используется только при регистрации в справочнике дополнительных обработок и может отличаться от синонима.

Как передать в обработку дополнительные параметры при регистрации?

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