Внешняя обработка в базе 1С: от файла .epf до команды в разделе, прав пользователей и вызова из кода
Содержание
Чтобы встроить обработку в 1С, откройте Администрирование → Печатные формы, отчеты и обработки, включите флажок «Дополнительные отчеты и обработки», перейдите по одноимённой ссылке и нажмите «Добавить из файла…». Выберите файл .epf, укажите разделы размещения и пользователей, запишите карточку. После этого команда обработки появится в выбранных разделах для всех, у кого есть права.
Так работают типовые конфигурации на БСП: Бухгалтерия предприятия 3.0, ЗУП 3.1, Управление торговлей 11, ERP, УНФ. Есть ещё два пути — перенести обработку внутрь конфигурации или расширения через Конфигуратор и подключать файл программно из своего кода. Для каждого способа важны права доступа и безопасный режим — без них обработка либо не откроется, либо выполнит лишнее.
Что проверить до подключения обработки
Подключение «падает» чаще всего не из-за 1С, а из-за самого файла. Проверьте его по списку ниже.
- 🧩 Тип интерфейса. Обработка на обычных формах в «Такси» откроется только в толстом клиенте. Для тонкого клиента и веб-клиента нужны управляемые формы.
- 📝 Сведения для регистрации. В модуле объекта должна быть экспортная функция
СведенияОВнешнейОбработке(). Без неё справочник дополнительных обработок файл не примет. Обработку «просто открыть один раз» можно и без этой функции — черезФайл → Открыть. - 🔢 Версия платформы. Файл, сохранённый в Конфигураторе более новой платформы с использованием её возможностей, может не открыться на старой. Номер платформы клиента и сервера должен быть не ниже того, на котором обработку собирали.
- 🏷️ Версия БСП. Функция регистрации вызывает
ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("...")с номером версии библиотеки. Если автор писал под сильно более новую БСП, часть полей может не поддерживаться. - 🛡️ Источник файла. Обработка выполняет любой код с правами пользователя. Файл «из интернета» сначала откройте в Конфигураторе и посмотрите модуль: запись в регистры, удаление объектов,
COMОбъект, работа с файлами.
Обработки, которые массово меняют данные (перепроведение, групповая замена реквизитов, загрузка), сначала запускайте на копии базы. Перед первым запуском в рабочей базе сделайте резервную копию — откатить изменения, сделанные обработкой, штатно нельзя.
Узнать, есть ли регистрационная функция, просто: откройте файл в Конфигураторе через Файл → Открыть, затем модуль объекта обработки (корень дерева → Открыть модуль объекта) и найдите строку СведенияОВнешнейОбработке.
Встраивание обработки в 1С через справочник «Дополнительные отчеты и обработки»
Это основной и самый безопасный способ. Конфигурация не меняется, обновления ставятся без доработок, обработку можно отключить одной кнопкой.
Где включается механизм
| Конфигурация | Путь к настройке |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки |
| Управление торговлей 11 | НСИ и администрирование → Печатные формы, отчеты и обработки |
Пошаговая регистрация
- Откройте настройку по пути из таблицы и включите флажок «Дополнительные отчеты и обработки».
- Перейдите по ссылке «Дополнительные отчеты и обработки» — откроется список.
- Нажмите «Добавить из файла…». Программа может предупредить о рисках внешнего кода — подтвердите, если доверяете файлу.
- Выберите файл
.epf(или.erfдля отчёта). 1С прочитает функцию регистрации и заполнит карточку: наименование, вид, версию, список команд. - Для дополнительной обработки или отчёта укажите размещение — разделы, в которых появится команда. Для печатной формы и обработки заполнения размещение задаётся автором в коде: это список документов или справочников.
- В списке команд настройте быстрый доступ — каким пользователям вывести команду сразу, без поиска.
- Проверьте поле публикации: «Используется» — работает у всех, «Режим отладки» — только у администраторов, «Отключена» — нигде.
- Нажмите «Записать и закрыть».
Где потом искать обработку
Зависит от вида, который задан в файле:
| Вид в карточке | Где пользователь видит команду |
|---|---|
| Дополнительная обработка | В разделе размещения, команда «Дополнительные обработки» |
| Дополнительный отчёт | В разделе размещения, команда «Дополнительные отчеты» |
| Печатная форма | Меню «Печать» в форме документа и в списке |
| Заполнение объекта | Кнопка заполнения в форме объекта |
| Создание связанных объектов | Меню «Создать на основании» |
Если обработки нет в разделе, почти всегда пропущен шаг 5 или пользователю не хватает прав (см. ниже).
Как обновить уже подключённую обработку
Новую версию файла не добавляют второй раз — получится дубль с той же командой. Откройте существующую карточку и в её командной панели выберите загрузку обработки из файла — это команда с тем же смыслом, что и «Добавить из файла», но для текущей записи. Карточка, размещение и настройки пользователей сохранятся, обновятся код и версия.
💡 Старые версии файла выгружайте из карточки и храните рядом с номером версии. Если новая сборка сломает печать, откат займёт минуту.
Как встроить обработку в конфигурацию через Конфигуратор
Иногда обработка должна стать частью базы: её используют каждый день, она нужна в нескольких ролях, к ней обращается другой код. Тогда переносите её в метаданные.
Вариант 1. В расширение конфигурации (рекомендуется для типовых)
Расширения появились в платформе 8.3.6 и не снимают типовую с поддержки.
- Откройте Конфигуратор:
Конфигурация → Расширения конфигурации, кнопка «Добавить». Задайте имя и префикс, напримерМои_. - Откройте конфигурацию расширения. В ветке «Обработки» добавьте новую обработку с тем же именем, что у внешней.
- Щёлкните по ней правой кнопкой и выберите «Заменить на внешнюю обработку
, отчет…». Укажите файл
.epf— реквизиты, формы и модули перенесутся. - Включите обработку в подсистему, чтобы команда появилась в нужном разделе интерфейса.
- Добавьте в расширение собственную роль с правом «Использование» на эту обработку и назначьте роль пользователям.
- Обновите конфигурацию базы данных (
F7) и перезапустите клиент 1С.
Готовое расширение сохраняют в файл .cfe и загружают в другие базы: в режиме Предприятия это Администрирование → Печатные формы, отчеты и обработки → Расширения.
Вариант 2. В основную конфигурацию
Подходит для нетиповой базы или базы, снятой с поддержки. Порядок тот же: создать обработку в ветке «Обработки», выполнить «Заменить на внешнюю обработку, отчет…», включить в подсистему и роль, обновить конфигурацию базы данных.
«Обновление конфигурации базы данных» требует монопольного доступа, если меняется структура хранения. Пользователей придётся выгнать из базы. Делайте это вне рабочего времени и после резервной копии.
Обратная операция тоже есть: на обработке в дереве команда «Сохранить как внешнюю обработку, отчет…» выгружает её в отдельный .epf. Удобно, когда нужно отладить или передать чужую обработку.
| Способ | Когда выбирать | Риски |
|---|---|---|
| Справочник доп. обработок | Типовая на поддержке, разовая или печатная задача | Пропадёт при очистке справочника, зависит от БСП |
| Расширение | Постоянная доработка в типовой | Нужна проверка после каждого обновления типовой |
| Основная конфигурация | Нетиповая база | Усложняет обновления, нужен монопольный режим |
Права доступа: кто может добавлять и запускать обработки
В 1С две независимые линии прав, и их часто путают.
Права на справочник дополнительных обработок
Добавлять и менять записи в справочнике может администратор или пользователь с ролью «Добавление и изменение дополнительных отчетов и обработок». В конфигурациях на БСП роли выдают через профили групп доступа: Администрирование → Настройки пользователей и прав → Группы доступа (в УТ 11 — в разделе НСИ и администрирование).
Обычному сотруднику достаточно права использовать уже зарегистрированную обработку. Кому она доступна, решают размещение и быстрый доступ в карточке: запись в справочнике видят те, кому её показали.
Право на интерактивное открытие внешних файлов
Это право платформы, а не БСП: «Интерактивное открытие внешних обработок» и «Интерактивное открытие внешних отчетов». Оно разрешает открывать любой .epf через Файл → Открыть. У обычных ролей его нет — и правильно.
Без этого права при попытке открыть файл пользователь получает Нарушение прав доступа!. Решение не в том, чтобы раздавать право всем, а в том, чтобы зарегистрировать обработку в справочнике.
Защита от опасных действий
В свойствах пользователя есть флажок «Защита от опасных действий». Когда он включён, платформа предупреждает при открытии внешней обработки и при вызове потенциально опасного кода. Отключать его стоит только администраторам, которые понимают, что запускают.
Функция регистрации: что дописать в модуль обработки
Если обработка ваша или автор недоступен, функцию регистрации можно добавить самому. Минимальный вариант для дополнительной обработки с одной командой открытия формы:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Открыть обработку";
Команда.Идентификатор = "ОткрытьФорму";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Что можно менять:
- 🔁 Вид — для печатной формы используется
ВидОбработкиПечатнаяФорма(), для отчётаВидОбработкиДополнительныйОтчет(). - 📍 Размещение — для печатной формы и заполнения добавьте в
ПараметрыРегистрации.Назначениеполные имена объектов, например"Документ.РеализацияТоваровУслуг". - ⚙️ Тип команды —
ТипКомандыВызовСерверногоМетода()запускает код без формы. Тогда в модуле объекта нужна экспортная процедураВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды). - 🔒 Безопасный режим —
Истиназапрещает работу с файлами, COM и внешними компонентами. Если обработке это нужно, ставьтеЛожь, но тогда при регистрации программа запросит у администратора разрешение.
После правки сохраните файл, откройте карточку в справочнике и загрузите новую версию поверх старой.
Подключение внешней обработки из кода
Программное подключение нужно, когда свой механизм берёт файл с диска, из общего каталога или из макета. В клиент-серверной базе файл лежит на компьютере пользователя, а обработка создаётся на сервере. Поэтому сначала файл помещают во временное хранилище, а на сервере подключают по адресу.
&НаКлиенте
Процедура ВыбратьИПодключить(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ИмяОбработки = ПодключитьНаСервере(Адрес);
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодключитьНаСервере(Адрес)
Возврат ВнешниеОбработки.Подключить(Адрес);
КонецФункции
Как это работает:
НачатьПомещениеФайлаоткрывает диалог выбора и передаёт файл на сервер.ВнешниеОбработки.Подключитьрегистрирует обработку в сеансе и возвращает её имя. Третий параметр — безопасный режим, по умолчанию он включён.ОткрытьФормуоткрывает основную форму по имени. Подключение действует до конца сеанса.
Если форма не нужна и надо вызвать экспортный метод, на сервере создайте объект: Обработка = ВнешниеОбработки.Создать(ИмяОбработки) и затем Обработка.МойМетод().
💡 Для обработки, которая хранится в справочнике дополнительных обработок, свой код не пишите. В БСП есть готовые программные интерфейсы подсистемы: они учитывают права, безопасный режим и версии.
Отладка и типичные ошибки при подключении
Как отлаживать внешнюю обработку
- Откройте файл
.epfв Конфигураторе черезФайл → Открыть. - Поставьте точки останова в модуле объекта или формы.
- Запустите отладку (
F5) и в режиме Предприятия откройте этот же файл черезФайл → Открыть.
Для зарегистрированной обработки удобно временно переключить публикацию на «Режим отладки»: команда останется только у администраторов, пока вы проверяете новую версию.
Разбор ошибок
Чего не делать
- ❌ Не добавляйте новую версию отдельной записью — у пользователей задвоятся команды, а старую версию кто-нибудь продолжит запускать.
- ❌ Не выдавайте право интерактивного открытия всем, чтобы «просто заработало». Так любой сотрудник сможет запустить любой файл.
- ❌ Не правьте модуль типовой обработки прямо в конфигурации на поддержке. Для этого есть расширения.