Внешняя обработка в базе 1С: от файла .epf до команды в разделе, прав пользователей и вызова из кода

· 10 мин

Содержание

Чтобы встроить обработку в 1С, откройте Администрирование → Печатные формы, отчеты и обработки, включите флажок «Дополнительные отчеты и обработки», перейдите по одноимённой ссылке и нажмите «Добавить из файла…». Выберите файл .epf, укажите разделы размещения и пользователей, запишите карточку. После этого команда обработки появится в выбранных разделах для всех, у кого есть права.

Так работают типовые конфигурации на БСП: Бухгалтерия предприятия 3.0, ЗУП 3.1, Управление торговлей 11, ERP, УНФ. Есть ещё два пути — перенести обработку внутрь конфигурации или расширения через Конфигуратор и подключать файл программно из своего кода. Для каждого способа важны права доступа и безопасный режим — без них обработка либо не откроется, либо выполнит лишнее.

Что проверить до подключения обработки

Подключение «падает» чаще всего не из-за 1С, а из-за самого файла. Проверьте его по списку ниже.

  • 🧩 Тип интерфейса. Обработка на обычных формах в «Такси» откроется только в толстом клиенте. Для тонкого клиента и веб-клиента нужны управляемые формы.
  • 📝 Сведения для регистрации. В модуле объекта должна быть экспортная функция СведенияОВнешнейОбработке(). Без неё справочник дополнительных обработок файл не примет. Обработку «просто открыть один раз» можно и без этой функции — через Файл → Открыть.
  • 🔢 Версия платформы. Файл, сохранённый в Конфигураторе более новой платформы с использованием её возможностей, может не открыться на старой. Номер платформы клиента и сервера должен быть не ниже того, на котором обработку собирали.
  • 🏷️ Версия БСП. Функция регистрации вызывает ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("...") с номером версии библиотеки. Если автор писал под сильно более новую БСП, часть полей может не поддерживаться.
  • 🛡️ Источник файла. Обработка выполняет любой код с правами пользователя. Файл «из интернета» сначала откройте в Конфигураторе и посмотрите модуль: запись в регистры, удаление объектов, COMОбъект, работа с файлами.

Обработки, которые массово меняют данные (перепроведение, групповая замена реквизитов, загрузка), сначала запускайте на копии базы. Перед первым запуском в рабочей базе сделайте резервную копию — откатить изменения, сделанные обработкой, штатно нельзя.

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

Встраивание обработки в 1С через справочник «Дополнительные отчеты и обработки»

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

Где включается механизм

КонфигурацияПуть к настройке
Бухгалтерия предприятия 3.0Администрирование → Печатные формы, отчеты и обработки
ЗУП 3.1Администрирование → Печатные формы, отчеты и обработки
Управление торговлей 11НСИ и администрирование → Печатные формы, отчеты и обработки

Пошаговая регистрация

  1. Откройте настройку по пути из таблицы и включите флажок «Дополнительные отчеты и обработки».
  2. Перейдите по ссылке «Дополнительные отчеты и обработки» — откроется список.
  3. Нажмите «Добавить из файла…». Программа может предупредить о рисках внешнего кода — подтвердите, если доверяете файлу.
  4. Выберите файл .epf (или .erf для отчёта). 1С прочитает функцию регистрации и заполнит карточку: наименование, вид, версию, список команд.
  5. Для дополнительной обработки или отчёта укажите размещение — разделы, в которых появится команда. Для печатной формы и обработки заполнения размещение задаётся автором в коде: это список документов или справочников.
  6. В списке команд настройте быстрый доступ — каким пользователям вывести команду сразу, без поиска.
  7. Проверьте поле публикации: «Используется» — работает у всех, «Режим отладки» — только у администраторов, «Отключена» — нигде.
  8. Нажмите «Записать и закрыть».

Где потом искать обработку

Зависит от вида, который задан в файле:

Вид в карточкеГде пользователь видит команду
Дополнительная обработкаВ разделе размещения, команда «Дополнительные обработки»
Дополнительный отчётВ разделе размещения, команда «Дополнительные отчеты»
Печатная формаМеню «Печать» в форме документа и в списке
Заполнение объектаКнопка заполнения в форме объекта
Создание связанных объектовМеню «Создать на основании»

Если обработки нет в разделе, почти всегда пропущен шаг 5 или пользователю не хватает прав (см. ниже).

Как обновить уже подключённую обработку

Новую версию файла не добавляют второй раз — получится дубль с той же командой. Откройте существующую карточку и в её командной панели выберите загрузку обработки из файла — это команда с тем же смыслом, что и «Добавить из файла», но для текущей записи. Карточка, размещение и настройки пользователей сохранятся, обновятся код и версия.

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

Как встроить обработку в конфигурацию через Конфигуратор

Иногда обработка должна стать частью базы: её используют каждый день, она нужна в нескольких ролях, к ней обращается другой код. Тогда переносите её в метаданные.

Вариант 1. В расширение конфигурации (рекомендуется для типовых)

Расширения появились в платформе 8.3.6 и не снимают типовую с поддержки.

  1. Откройте Конфигуратор: Конфигурация → Расширения конфигурации, кнопка «Добавить». Задайте имя и префикс, например Мои_.
  2. Откройте конфигурацию расширения. В ветке «Обработки» добавьте новую обработку с тем же именем, что у внешней.
  3. Щёлкните по ней правой кнопкой и выберите «Заменить на внешнюю обработку , отчет…». Укажите файл .epf — реквизиты, формы и модули перенесутся.
  4. Включите обработку в подсистему, чтобы команда появилась в нужном разделе интерфейса.
  5. Добавьте в расширение собственную роль с правом «Использование» на эту обработку и назначьте роль пользователям.
  6. Обновите конфигурацию базы данных (F7) и перезапустите клиент 1С.

Готовое расширение сохраняют в файл .cfe и загружают в другие базы: в режиме Предприятия это Администрирование → Печатные формы, отчеты и обработки → Расширения.

Вариант 2. В основную конфигурацию

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

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

Обратная операция тоже есть: на обработке в дереве команда «Сохранить как внешнюю обработку, отчет…» выгружает её в отдельный .epf. Удобно, когда нужно отладить или передать чужую обработку.

СпособКогда выбиратьРиски
Справочник доп. обработокТиповая на поддержке, разовая или печатная задачаПропадёт при очистке справочника, зависит от БСП
РасширениеПостоянная доработка в типовойНужна проверка после каждого обновления типовой
Основная конфигурацияНетиповая базаУсложняет обновления, нужен монопольный режим

Права доступа: кто может добавлять и запускать обработки

В 1С две независимые линии прав, и их часто путают.

Права на справочник дополнительных обработок

Добавлять и менять записи в справочнике может администратор или пользователь с ролью «Добавление и изменение дополнительных отчетов и обработок». В конфигурациях на БСП роли выдают через профили групп доступа: Администрирование → Настройки пользователей и прав → Группы доступа (в УТ 11 — в разделе НСИ и администрирование).

Обычному сотруднику достаточно права использовать уже зарегистрированную обработку. Кому она доступна, решают размещение и быстрый доступ в карточке: запись в справочнике видят те, кому её показали.

Право на интерактивное открытие внешних файлов

Это право платформы, а не БСП: «Интерактивное открытие внешних обработок» и «Интерактивное открытие внешних отчетов». Оно разрешает открывать любой .epf через Файл → Открыть. У обычных ролей его нет — и правильно.

Без этого права при попытке открыть файл пользователь получает Нарушение прав доступа!. Решение не в том, чтобы раздавать право всем, а в том, чтобы зарегистрировать обработку в справочнике.

Защита от опасных действий

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

Какой способ встраивания подходит вашей обработке?

Функция регистрации: что дописать в модуль обработки

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

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

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

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Открыть обработку";
	Команда.Идентификатор = "ОткрытьФорму";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Ложь;

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

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

Что можно менять:

  • 🔁 Вид — для печатной формы используется ВидОбработкиПечатнаяФорма(), для отчёта ВидОбработкиДополнительныйОтчет().
  • 📍 Размещение — для печатной формы и заполнения добавьте в ПараметрыРегистрации.Назначение полные имена объектов, например "Документ.РеализацияТоваровУслуг".
  • ⚙️ Тип команды — ТипКомандыВызовСерверногоМетода() запускает код без формы. Тогда в модуле объекта нужна экспортная процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды).
  • 🔒 Безопасный режим — Истина запрещает работу с файлами, COM и внешними компонентами. Если обработке это нужно, ставьте Ложь, но тогда при регистрации программа запросит у администратора разрешение.

После правки сохраните файл, откройте карточку в справочнике и загрузите новую версию поверх старой.

Подключение внешней обработки из кода

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

&НаКлиенте
Процедура ВыбратьИПодключить(Команда)
	Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

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

&НаСервереБезКонтекста
Функция ПодключитьНаСервере(Адрес)
	Возврат ВнешниеОбработки.Подключить(Адрес);
КонецФункции

Как это работает:

  1. НачатьПомещениеФайла открывает диалог выбора и передаёт файл на сервер.
  2. ВнешниеОбработки.Подключить регистрирует обработку в сеансе и возвращает её имя. Третий параметр — безопасный режим, по умолчанию он включён.
  3. ОткрытьФорму открывает основную форму по имени. Подключение действует до конца сеанса.

Если форма не нужна и надо вызвать экспортный метод, на сервере создайте объект: Обработка = ВнешниеОбработки.Создать(ИмяОбработки) и затем Обработка.МойМетод().

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

Отладка и типичные ошибки при подключении

Как отлаживать внешнюю обработку

  1. Откройте файл .epf в Конфигураторе через Файл → Открыть.
  2. Поставьте точки останова в модуле объекта или формы.
  3. Запустите отладку (F5) и в режиме Предприятия откройте этот же файл через Файл → Открыть.

Для зарегистрированной обработки удобно временно переключить публикацию на «Режим отладки»: команда останется только у администраторов, пока вы проверяете новую версию.

Разбор ошибок

Диагностика: выберите симптом

Чего не делать

  • ❌ Не добавляйте новую версию отдельной записью — у пользователей задвоятся команды, а старую версию кто-нибудь продолжит запускать.
  • ❌ Не выдавайте право интерактивного открытия всем, чтобы «просто заработало». Так любой сотрудник сможет запустить любой файл.
  • ❌ Не правьте модуль типовой обработки прямо в конфигурации на поддержке. Для этого есть расширения.

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

Чем внешняя обработка отличается от встроенной?
Внешняя хранится в отдельном файле или в справочнике, конфигурация при этом не меняется. Встроенная — объект метаданных, она обновляется вместе с конфигурацией и требует обновления базы данных.
Работают ли дополнительные обработки в 1С:Фреш и других облаках?
Да, но в сервисах внешний код обычно проходит проверку провайдера перед публикацией. Самостоятельно загрузить произвольный файл в облачную базу, как правило, нельзя.
Сохранится ли обработка после обновления конфигурации?
Да. Справочник дополнительных обработок при обновлении не очищается. Но если в новом релизе изменились реквизиты, которые использует код, обработка может начать выдавать ошибки — проверьте её после обновления.
Можно ли встроить одну обработку в несколько баз?
Да. В каждой базе её регистрируют отдельно. Для расширения конфигурации один файл .cfe загружают в каждую базу.
Как убрать обработку из базы?
В списке дополнительных обработок поставьте публикацию «Отключена» или пометьте запись на удаление. Отключение безопаснее: настройки и история версий сохранятся.