Встраиваем файл .epf в конфигурацию: дерево метаданных, команды, роли
Содержание
Чтобы добавить внешнюю обработку
в конфигураторе 1С, создайте в ветке Обработки новый объект, щёлкните по нему правой кнопкой и выберите Заменить на внешнюю обработку, отчет..., затем укажите файл .epf. Платформа перенесёт в объект реквизиты, табличные части, формы, макеты и модуль. Останется включить обработку
в подсистему, дать права в ролях и выполнить Конфигурация → Обновить конфигурацию базы данных (F7).
Для внешнего отчёта (.erf) порядок тот же, только объект создаётся в ветке Отчеты. В типовой конфигурации на поддержке сначала решите, куда встраивать: в основную конфигурацию или в расширение. От этого зависит, как пройдут будущие обновления.
Что проверить в файле обработки до подключения
Встраивание переносит в конфигурацию всё содержимое файла, включая ошибки. Поэтому сначала откройте обработку отдельно: в конфигураторе Файл → Открыть, выберите .epf. Обработка откроется в своём окне с деревом объекта, не затрагивая базу.
Что посмотреть:
- 🔤 Имя объекта. Оно не должно совпадать с именем уже существующей обработки конфигурации. Если совпадает — переименуйте внешнюю обработку заранее.
- 🧩 Ссылки на метаданные. Реквизиты типа
СправочникСсылка.НоменклатураилиДокументСсылка.РеализацияТоваровУслугбудут работать, только если такие объекты есть в вашей конфигурации. Обработка, написанная под другую конфигурацию, после встраивания выдаст ошибки компиляции. - 📝 Модуль объекта. Найдите экспортную функцию
СведенияОВнешнейОбработке(). Если она есть, файл подготовлен для механизма дополнительных обработок БСП. При встраивании в конфигурацию эта функция не нужна: её можно оставить, но регистрацию через неё платформа выполнять не будет. - 🪟 Тип форм. Управляемые формы работают в интерфейсе «Такси». Обычные формы откроются только в толстом клиенте, если это разрешено свойствами конфигурации.
- ⏳ Модальные вызовы. Если в конфигурации свойство
Режим использования модальностиравно «Не использовать», а в коде обработки естьВопрос()илиПредупреждение()без асинхронных аналогов, проверка модулей покажет ошибку.
Ещё одна мелочь: обработку, сохранённую в более новой версии платформы, старая платформа может не открыть. Номер платформы, в которой работает база, должен быть не ниже того, где файл был создан.
Перед изменением конфигурации сделайте копию базы: Администрирование → Выгрузить информационную базу в конфигураторе. Файл .dt позволит откатиться, если встраивание пойдёт не так.
Выбор способа: конфигурация, расширение или дополнительная обработка
Встраивать обработку прямо в основную конфигурацию — не единственный вариант. Для типовых решений на поддержке он даже не лучший.
Сравнение по главным параметрам:
| Способ | Нужен конфигуратор | Влияет на поддержку | Права на файлы |
|---|---|---|---|
| Объект основной конфигурации | Да | Да, нужно включить изменения | Не нужны |
| Объект в расширении | Да | Нет | Не нужны |
| Дополнительная обработка БСП | Нет | Нет | Право на добавление доп. обработок |
| Открытие файла через меню | Нет | Нет | Интерактивное открытие внешних обработок |
Как добавить обработку в дерево метаданных конфигурации
Порядок для основной конфигурации.
Шаг 1. Откройте конфигурацию на редактирование
Запустите конфигуратор и выполните Конфигурация → Открыть конфигурацию. Если конфигурация типовая и стоит на замке, добавить новый объект не получится. Включите изменения: Конфигурация → Поддержка → Настройка поддержки, кнопка Включить возможность изменения. Для корня конфигурации выберите правило «Объект поставщика редактируется с сохранением поддержки».
После включения изменений обновление типовой конфигурации пойдёт через сравнение и объединение — это дольше и требует внимания. Если такого не хочется, используйте расширение (см. ниже).
Шаг 2. Создайте пустой объект
- В дереве метаданных найдите ветку
Обработки(она идёт после документов и журналов). - Щёлкните по ней правой кнопкой и выберите
Добавить. - Задайте имя, по возможности такое же, как у внешней обработки. Окно свойств можно пока закрыть.
Шаг 3. Загрузите содержимое из файла
- В дереве щёлкните правой кнопкой по только что созданной обработке.
- Выберите
Заменить на внешнюю обработку, отчет.... - Укажите файл
.epfи подтвердите замену.
Платформа заменит содержимое объекта: реквизиты, табличные части, формы, макеты, модуль объекта. После замены откройте свойства и проверьте имя, синоним и основную форму — именно они видны пользователю.
Обратная операция тоже есть: команда Сохранить как внешнюю обработку, отчет... в том же контекстном меню выгружает объект конфигурации в файл. Удобно, когда нужно отдать обработку в другую базу.
Вариант для расширения
В типовой конфигурации на поддержке надёжнее работать через расширение:
Конфигурация → Расширения конфигурации, кнопкаДобавить— создайте расширение с понятным именем и префиксом, напримерДоп_.- Откройте дерево расширения и добавьте в ветке
Обработкиновый объект. - Перенесите в него содержимое файла той же командой замены из контекстного меню объекта.
- Обновите конфигурацию базы данных для расширения (F7 в его окне).
Расширения появились в платформе 8.3.6. Обработка в расширении живёт отдельно от типовой конфигурации и переживает её обновление.
Свойства объекта, которые стоит заполнить
Окно свойств открывается двойным щелчком по объекту или клавишей Alt+Enter. Проверьте четыре вещи:
- 🏷 Синоним. Это название, которое пользователь увидит в меню. «ЗагрузкаЦенИзExcel» в интерфейсе выглядит плохо, «Загрузка цен из Excel» — нормально.
- 🪟 Основная форма. Если в обработке несколько форм, укажите ту, что должна открываться по команде. Без основной формы обработку нельзя открыть интерактивно.
- 💬 Пояснение (комментарий). Короткая подсказка рядом с командой в интерфейсе. Полезно, если обработок много.
- 📋 Использовать стандартные команды. Флажок отвечает за то, чтобы платформа сама создала команду открытия обработки для панели действий подсистемы.
Модуль менеджера у встроенной обработки пустой — у внешней его не было. Если нужна серверная логика, доступная другим объектам, её можно вынести туда или в общий модуль.
Как вывести обработку в интерфейс и панели команд
Обработка в дереве метаданных ещё не видна пользователю. Нужно включить её в подсистему.
Через подсистему
- Откройте свойства обработки, вкладка или раздел
Подсистемы. - Отметьте флажком нужный раздел, например «Склад» или «Администрирование».
- Откройте эту подсистему и вызовите её командный интерфейс (кнопка
Командный интерфейсв окне подсистемы). - Найдите команду обработки в группе
Панель действий → Сервиси проверьте видимость для нужных ролей.
После обновления базы обработка появится в разделе в группе «Сервис».
Через собственную команду
Если обработку нужно вызывать из формы документа или справочника, создайте у неё команду: ветка Команды внутри объекта, Добавить. В свойствах команды задайте группу (например, панель командной формы документа) и тип параметра — ДокументСсылка.ИмяДокумента. В модуле команды откройте форму и передайте ей ссылку:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("Документ", ПараметрКоманды);
ОткрытьФорму("Обработка.ЗагрузкаЦен.Форма.Форма", ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
В форме обработки параметр Документ нужно создать в ветке параметров формы, иначе значение не дойдёт.
Отдельно про печатные формы
Внешняя печатная форма из файла рассчитана на механизм БСП: она регистрируется функцией СведенияОВнешнейОбработке() и получает команду «Печать» автоматически. При встраивании в конфигурацию эта связка не работает
. В типовых конфигурациях команды печати добавляются в модуле менеджера документа, и правка затрагивает типовой объект.
Поэтому для печатной формы в типовой базе почти всегда проще оставить её дополнительной обработкой: в режиме 1С:Предприятие Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, кнопка Добавить из файла....
Права доступа: роли вместо разрешений на файлы
Главный плюс встраивания — не нужно давать пользователям право открывать произвольные внешние файлы. Это право потенциально опасное: через внешнюю обработку можно выполнить любой код в базе.
Что сделать после встраивания:
- Откройте ветку
Общие → Роли. - Выберите роль, которой должна быть доступна обработка, или создайте свою, например
ИспользованиеЗагрузкиЦен. - В окне прав найдите обработку и отметьте права
ИспользованиеиПросмотр. - Назначьте роль пользователям. В типовых конфигурациях на БСП роли назначаются через профили групп доступа в режиме 1С:Предприятие; новую роль из основной конфигурации туда добавляют в карточке профиля.
Какие права касаются внешних файлов, если обработку всё же запускают из .epf:
| Право (уровень конфигурации) | За что отвечает |
|---|---|
| Интерактивное открытие внешних обработок | Открыть .epf через меню «Файл» |
| Интерактивное открытие внешних отчетов | Открыть .erf через меню «Файл» |
В платформе 8.3 есть ещё механизм защиты от опасных действий: при открытии внешнего файла пользователь видит предупреждение. Он настраивается в свойствах пользователя (флажок защиты от опасных действий). Встроенная обработка этого предупреждения не вызывает — она часть конфигурации.
Не снимайте защиту от опасных действий массово ради удобства. Лучше встроить нужную обработку и дать роль только тем, кому она нужна.
Отладка встроенной обработки
Перед выпуском в рабочую базу проверьте обработку на копии.
- Выполните
Конфигурация → Проверка конфигурации. Отметьте проверку логической целостности и поиск ссылок на несуществующие объекты. Ошибки в модуле обработки появятся в окне сообщений с номером строки. - Обновите конфигурацию базы данных (F7). Обработка не создаёт таблиц, поэтому реструктуризации данных не будет. Если в базе работают пользователи, платформа может предложить динамическое обновление — тогда они увидят обработку только после перезапуска сеанса.
- Запустите отладку:
Отладка → Начать отладку → Тонкий клиентили F5. - Поставьте точки останова (F9) в модуле формы и модуле объекта. Проверьте, что серверный код (
&НаСервере) выполняется под ролью обычного пользователя, а не администратора. - Зайдите под тестовым пользователем без полных прав. Если команда не видна или вылетает ошибка нарушения прав — вернитесь к ролям.
💡 Удобный приём: держите в отладчике окно Табло и следите за значениями реквизитов обработки по шагам. Так быстрее найти место, где данные теряются после переноса из файла.
Ошибки при подключении и их устранение
Ещё одна неочевидная ситуация. Встроили обработку, потом получили от разработчика исправленный .epf — и повторили замену из файла. Замена перезапишет объект целиком, включая правки, которые вы сделали уже в конфигурации: команды, подсистемы в свойствах могут остаться, но модуль и формы будут из файла. Перед повторной заменой выгрузите текущий объект командой Сохранить как внешнюю обработку, отчет..., чтобы было с чем сравнить.